Welcome to the Dash Forum!

Please sign up to discuss the most innovative cryptocurrency!

Quick and very dirty Multisig UI in python/QT - new unimproved PerVer!

Discussion in 'General Discussion' started by thelonecrouton, Aug 30, 2014.

  1. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    For what it's worth here's my little experiment in what a multisig UI might look like. It's written in python and uses QT, and was more an exercise in helping me understand multisig transactions than anything else.

    There are 3 parties (usually) involved, so I gave them a tab each!
    [​IMG]
    [​IMG]
    [​IMG]

    All three push their first button up top, generating a new address/pubkey/privkey!
    [​IMG]
    [​IMG]
    [​IMG]

    IRL buyer and seller would have to send their pubkeys to the arbiter, here it just happens by magic!
    The arbiter can now push his/her second button and create the multisig address!
    [​IMG]

    The buyer now funds the Multisig Address by pushing their second button, (I just stuck a hardcoded amount in there for test purposes), the seller sends the goods, buyer is happy and sends the seller their privkey by pushing their third button! (Other outcomes are possible, obviously, but I'm trying to keep this as brief as possible!)
    [​IMG]


    Seller recieves buyer privkey (or the arbiter privkey, however it happens) and now can access the DRK in the Multisig Address! Seller has what he needs from the other parties and combined with some voodoo on the original txid from the buyer can proceed!

    [​IMG]

    But first they need to enter a recieving address!
    [​IMG]

    Now they push the green button at the bottom! They get the txid of the retreival of the DRK from the MA to their specified address!
    (Doesn't quite fit in the box but it's c4498e048dbb9c0599e7344fef85f22f2b13f10b5889baa825a2d87c488cef29)
    [​IMG]

    Anyway, heres a screeny of this one from the explorer, 12.345tDRK sent to mhNgkX28mVKZx88sMQHzFqTf6fGv6DdE4y via txid c4498e048dbb9c0599e7344fef85f22f2b13f10b5889baa825a2d87c488cef29!
    [​IMG]

    If nothing else, I now have a handy tool for making supersecure multisig addresses!

    From start to finish (or at least where I am now) was about 10 hours work, because this is not exactly my day job, and it is not yet a fully useable real world product but there's no excuse for Darkcoin not to have some kind of useable multisig UI in the official wallet!

    :)
     
    #1 thelonecrouton, Aug 30, 2014
    Last edited by a moderator: Aug 30, 2014
    • Like Like x 11
  2. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    If you're thinking this is all terribly complicated, well here's the alternative - this is my debugging terminal output, which includes some but by no means all of the process!

    Code:
    [email protected]:~/laptop-backup/python$ python ccmfv02.py
    moSqfDmVnoWW3GgXFvVd4x129ECg8d5qJH
    "pubkey" : "03d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e0",
    03d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e0
    cVR2UWB8UT462V5Efc1uggrM9T95qbG6KRAUBG9NvrwYHRkhSbXv
    mhLmvTCVSzvciLoYpvt58rpegECnBAK3Sb
    "pubkey" : "030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb42328",
    030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb42328
    cPL6nBjyn3gUSRnfK8jjB3buTdcE5o7MobXYFSGHqKq6B4y7H8Xx
    mwb6NvDJMmxe3FWxjcDsXFVFHUciNNEGko
    "pubkey" : "036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef4",
    036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef4
    cNuaLuohPW4ssVTgt1kotxV3R5xUrWrYS5fbhL6PL8tifDRRCYCz
    /home/stu/laptop-backup/downloads/darkcoin-0.10.12.32-linux/bin/64/darkcoind createmultisig 2 '["03d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e0", "030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb42328", "036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef4"]'
    {
      "address" : "2MxHAAsFPZSxcHKqXf9TtMXSskfnucxW4WL",
      "redeemScript" : "522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453ae"
    }
    
    "address" : "2MxHAAsFPZSxcHKqXf9TtMXSskfnucxW4WL",
    2MxHAAsFPZSxcHKqXf9TtMXSskfnucxW4WL
    "redeemScript" : "522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453ae"
    522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453ae
    2MxHAAsFPZSxcHKqXf9TtMXSskfnucxW4WL
    5512163e9cb20df0d73dde696c032b895b30f975adecb864afea60a69b485f09
    /home/stu/laptop-backup/downloads/darkcoin-0.10.12.32-linux/bin/64/darkcoind getrawtransaction 5512163e9cb20df0d73dde696c032b895b30f975adecb864afea60a69b485f09 1
    {
      "hex" : "01000000013854a36a66ca423da657a6f336ea9a0edefcd2529fea6ab4616f887eedf4dfda000000006c493046022100870a1fd46761faecf432d81d0d015073cafaf4640145c99661b12dc63b717715022100c7eb7584c23a21d86335b7e914f66e921a65bf0c8dc820b675a7a884ea8c8467012103b5594c367e1a798e4a0a7792e26a2f46d4fe65020201473581a1ccc73dcb921fffffffff02a0f994490000000017a9143736462d43ed495494a0b9e9df766191a8c842e38740415142130000001976a914246c2230918b1d4e6389f5d1aa0a89f72ca710d888ac00000000",
      "txid" : "5512163e9cb20df0d73dde696c032b895b30f975adecb864afea60a69b485f09",
      "version" : 1,
      "locktime" : 0,
      "vin" : [
      {
      "txid" : "dadff4ed7e886f61b46aea9f52d2fcde0e9aea36f3a657a63d42ca666aa35438",
      "vout" : 0,
      "scriptSig" : {
      "asm" : "3046022100870a1fd46761faecf432d81d0d015073cafaf4640145c99661b12dc63b717715022100c7eb7584c23a21d86335b7e914f66e921a65bf0c8dc820b675a7a884ea8c846701 03b5594c367e1a798e4a0a7792e26a2f46d4fe65020201473581a1ccc73dcb921f",
      "hex" : "493046022100870a1fd46761faecf432d81d0d015073cafaf4640145c99661b12dc63b717715022100c7eb7584c23a21d86335b7e914f66e921a65bf0c8dc820b675a7a884ea8c8467012103b5594c367e1a798e4a0a7792e26a2f46d4fe65020201473581a1ccc73dcb921f"
      },
      "sequence" : 4294967295
      }
      ],
      "vout" : [
      {
      "value" : 12.34500000,
      "n" : 0,
      "scriptPubKey" : {
      "asm" : "OP_HASH160 3736462d43ed495494a0b9e9df766191a8c842e3 OP_EQUAL",
      "hex" : "a9143736462d43ed495494a0b9e9df766191a8c842e387",
      "reqSigs" : 1,
      "type" : "scripthash",
      "addresses" : [
      "2MxHAAsFPZSxcHKqXf9TtMXSskfnucxW4WL"
      ]
      }
      },
      {
      "value" : 827.17000000,
      "n" : 1,
      "scriptPubKey" : {
      "asm" : "OP_DUP OP_HASH160 246c2230918b1d4e6389f5d1aa0a89f72ca710d8 OP_EQUALVERIFY OP_CHECKSIG",
      "hex" : "76a914246c2230918b1d4e6389f5d1aa0a89f72ca710d888ac",
      "reqSigs" : 1,
      "type" : "pubkeyhash",
      "addresses" : [
      "miqYADBqqozb7nw8wt96B85VPKjZAq7oxQ"
      ]
      }
      }
      ]
    }
    
    <generator object <genexpr> at 0x7fb6e0ca6b40>
    26 "2MxHAAsFPZSxcHKqXf9TtMXSskfnucxW4WL"
    "hex" : "a9143736462d43ed495494a0b9e9df766191a8c842e387",
    a9143736462d43ed495494a0b9e9df766191a8c842e387
    "n" : 0,
    0
    "value" : 12.34500000,
    12.34500000
    /home/stu/laptop-backup/downloads/darkcoin-0.10.12.32-linux/bin/64/darkcoind createrawtransaction '[{"txid":"5512163e9cb20df0d73dde696c032b895b30f975adecb864afea60a69b485f09","vout":0,"scriptPubKey":"a9143736462d43ed495494a0b9e9df766191a8c842e387","redeemScript":"522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453ae"}]' '{"mhNgkX28mVKZx88sMQHzFqTf6fGv6DdE4y":12.34500000}'
    /home/stu/laptop-backup/downloads/darkcoin-0.10.12.32-linux/bin/64/darkcoind signrawtransaction '0100000001095f489ba660eaaf64b8ecad75f9305b892b036c69de3dd7f00db29c3e1612550000000000ffffffff01a0f99449000000001976a914145ff2d97d999fe8b18bb0365e14cc181231530788ac00000000' '[{"txid":"5512163e9cb20df0d73dde696c032b895b30f975adecb864afea60a69b485f09","vout":0,"scriptPubKey":"a9143736462d43ed495494a0b9e9df766191a8c842e387","redeemScript":"522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453ae"}]' '["cNuaLuohPW4ssVTgt1kotxV3R5xUrWrYS5fbhL6PL8tifDRRCYCz"]'
    {
      "hex" : "0100000001095f489ba660eaaf64b8ecad75f9305b892b036c69de3dd7f00db29c3e16125500000000b4004730440220121fb035d04d36a4108861388c10cce386a2aa2d1b5b6c876c3441dd1ef0b23102204b2bdffe91b7fedc95b98648bfbe28699deeba42b7aa026bb1b9d9da309a8513014c69522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453aeffffffff01a0f99449000000001976a914145ff2d97d999fe8b18bb0365e14cc181231530788ac00000000",
      "complete" : false
    }
    
    0100000001095f489ba660eaaf64b8ecad75f9305b892b036c69de3dd7f00db29c3e16125500000000b4004730440220121fb035d04d36a4108861388c10cce386a2aa2d1b5b6c876c3441dd1ef0b23102204b2bdffe91b7fedc95b98648bfbe28699deeba42b7aa026bb1b9d9da309a8513014c69522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453aeffffffff01a0f99449000000001976a914145ff2d97d999fe8b18bb0365e14cc181231530788ac00000000
    /home/stu/laptop-backup/downloads/darkcoin-0.10.12.32-linux/bin/64/darkcoind signrawtransaction '0100000001095f489ba660eaaf64b8ecad75f9305b892b036c69de3dd7f00db29c3e16125500000000b4004730440220121fb035d04d36a4108861388c10cce386a2aa2d1b5b6c876c3441dd1ef0b23102204b2bdffe91b7fedc95b98648bfbe28699deeba42b7aa026bb1b9d9da309a8513014c69522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453aeffffffff01a0f99449000000001976a914145ff2d97d999fe8b18bb0365e14cc181231530788ac00000000' '[{"txid":"5512163e9cb20df0d73dde696c032b895b30f975adecb864afea60a69b485f09","vout":0,"scriptPubKey":"a9143736462d43ed495494a0b9e9df766191a8c842e387","redeemScript":"522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453ae"}]' '["cPL6nBjyn3gUSRnfK8jjB3buTdcE5o7MobXYFSGHqKq6B4y7H8Xx"]'
    {
      "hex" : "0100000001095f489ba660eaaf64b8ecad75f9305b892b036c69de3dd7f00db29c3e16125500000000fc00473044022048004f07307e7cfe745980fa85dbbf6bdbce779e8945b4c2b6d511821bbc2bef02203921744ae62d1205b0f86dfdb6c656775534557914fb16936c757385cfa9295f014730440220121fb035d04d36a4108861388c10cce386a2aa2d1b5b6c876c3441dd1ef0b23102204b2bdffe91b7fedc95b98648bfbe28699deeba42b7aa026bb1b9d9da309a8513014c69522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453aeffffffff01a0f99449000000001976a914145ff2d97d999fe8b18bb0365e14cc181231530788ac00000000",
      "complete" : true
    }
    
    0100000001095f489ba660eaaf64b8ecad75f9305b892b036c69de3dd7f00db29c3e16125500000000fc00473044022048004f07307e7cfe745980fa85dbbf6bdbce779e8945b4c2b6d511821bbc2bef02203921744ae62d1205b0f86dfdb6c656775534557914fb16936c757385cfa9295f014730440220121fb035d04d36a4108861388c10cce386a2aa2d1b5b6c876c3441dd1ef0b23102204b2bdffe91b7fedc95b98648bfbe28699deeba42b7aa026bb1b9d9da309a8513014c69522103d830ac362c8895bc42e538e955d2af66836fba53cf7eefc67325994faefcc7e021030315854da8a231ce1491b73f0e30a7f6b7c95b977577767bbd40d9c94eb4232821036f1755abbab3ed8a49497c140dae8c6f040dc587d4075ee092ecdc59829b4ef453aeffffffff01a0f99449000000001976a914145ff2d97d999fe8b18bb0365e14cc181231530788ac00000000
    c4498e048dbb9c0599e7344fef85f22f2b13f10b5889baa825a2d87c488cef29
    
     
    • Like Like x 3
  3. Kai

    Kai Member

    Joined:
    Apr 6, 2014
    Messages:
    110
    Likes Received:
    56
    Trophy Points:
    78
    Looks good !
     
  4. vertoe

    vertoe Three of Nine

    Joined:
    Mar 28, 2014
    Messages:
    2,573
    Likes Received:
    1,652
    Trophy Points:
    1,283
    Github!
     
    • Like Like x 1
  5. flare

    flare Administrator
    Dash Core Team Moderator

    Joined:
    May 18, 2014
    Messages:
    2,287
    Likes Received:
    2,406
    Trophy Points:
    1,183
    Good stuff - but by definition private keys should not be shared at all. Each party should only share the signed raw tx, not the key to do the actual signing.
     
    • Like Like x 1
  6. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    I was going with a completely disposable address/pubkey/privkey for each party for the transaction - but yes it would be safer to do it as you say in case the address ever got re-used,
     
    • Like Like x 1
  7. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    I'll un-hardcode the darkcoind path it uses and the send amount (you can fund the MA from any wallet, doesn't have to be done from this app) and post the script later today if I get time so people can play with it themselves.
     
    • Like Like x 1
  8. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    Rearranged the UI so the process is all on the same page, did as flare rightly suggested, no privkeys are passed just signed txes, you can now enter/load/save your own darkcoind path, and nearly everything that happens is displayed in a console inside the UI so you can follow events.

    There is no graceful error handling, you need to push the buttons in the right order - I have helpfully numbered them!

    The code is horribly redundant, a lot of the functions are nearly identical but I haven't had time today to address this.

    Haven't had time to put it on github either, so you can grab it here: http://s000.tinyupload.com/?file_id=66868132891915967547

    No promises about it working on Win or OSX. :eek:

    [​IMG]

    Now zipped with drk.ico!
     
    #8 thelonecrouton, Aug 31, 2014
    Last edited by a moderator: Aug 31, 2014
    • Like Like x 1
  9. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    • Like Like x 3
  10. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    Next experiment - serve this up on a website so anyone anywhere can use it. I have absolutely no idea how to do this. Yet. :tongue:
     
    • Like Like x 3
  11. flare

    flare Administrator
    Dash Core Team Moderator

    Joined:
    May 18, 2014
    Messages:
    2,287
    Likes Received:
    2,406
    Trophy Points:
    1,183
    And when finished you will notice that you have implemented a light version of OB :)
     
  12. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    Just the bit that OB doesn't have... :D
     
    • Like Like x 1
  13. vertoe

    vertoe Three of Nine

    Joined:
    Mar 28, 2014
    Messages:
    2,573
    Likes Received:
    1,652
    Trophy Points:
    1,283
    Start writing a plugin for OB already :)
     
    • Like Like x 1
  14. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    Ported UI to web, now need to figure out how to put the function output in the right box!

    [​IMG]
     
    #14 thelonecrouton, Sep 1, 2014
    Last edited by a moderator: Sep 1, 2014
    • Like Like x 3
  15. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    Mother of god, you have to insert the new stuff into the html and re-serve the whole bloody page each time. :eek:
     
    • Like Like x 1
  16. crowning

    crowning Well-known Member

    Joined:
    May 29, 2014
    Messages:
    1,428
    Likes Received:
    2,005
    Trophy Points:
    183
    Make the output region a frame and either reload only that frame or use JavaScript DOM manipulations to update the page without reloading everything.
     
    • Like Like x 2
  17. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    A frame I can manage, no idea what that other voodoo you mentioned is...

    I'm sure I could have this finished in under an hour... if only I knew what I was doing... :confused:
     
  18. crowning

    crowning Well-known Member

    Joined:
    May 29, 2014
    Messages:
    1,428
    Likes Received:
    2,005
    Trophy Points:
    183
    If you've never done JavaScript it'll need some time to get used to it.

    This site shows what I was talking about: http://referencedesigner.com/tutorials/js/js_41.php
     
    • Like Like x 1
  19. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    That... doesn't actually look too horrible, thanks! I'd have to have the js call the python function, then pass the output back upchain though, I'm not rewriting the whole lot in js. :D

    edit: javascript DOM manipulation voodoo implemented. :cool:
     
    #19 thelonecrouton, Sep 1, 2014
    Last edited by a moderator: Sep 2, 2014
    • Like Like x 1
  20. crowning

    crowning Well-known Member

    Joined:
    May 29, 2014
    Messages:
    1,428
    Likes Received:
    2,005
    Trophy Points:
    183
    That's actually what JavaScript was designed for: static content in HTML, dynamic content in JavaScript.

    Unfortunately today every wannabee-web-developer does almost everything in JavaScript (or uses tools that create tons of JavaScript, which is even worse).
     
    • Like Like x 1
  21. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    I was right, once I knew what I was doing - which took about ten hours - it took about an hour... :D

    I now have convert-python-app-to-web-app-capability!

    [​IMG]

    Next step - put it on my testnet Masternode so the three people on Planet Earth who care can play with it!

    edit:shitty compression, looks a lot better IRL, honest.

    edit2: no idea where the favicon went! Will hunt for it!
     
  22. vertoe

    vertoe Three of Nine

    Joined:
    Mar 28, 2014
    Messages:
    2,573
    Likes Received:
    1,652
    Trophy Points:
    1,283
    Good idea, publish this on testnet and we can play around a bit!
     
    • Like Like x 1
  23. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    You should now be able to play with the demo yourselves, it's running on my testnet MN:

    http://54.213.242.87:8123

    Notes:

    1. Not actually very useful as it is, just a run through of the multisig life cycle. However, adding some input boxes so you can enter your own pubkeys, then send DRK to the resulting multisig address from your own wallet means removing far more code than adding, so easy to do! Ref button/box are placeholders only, ignore them.

    2. You need to go through the steps in the correct order - I'll see about making the buttons active/inactive in the next version so you can't go wrong.

    3. Browser refresh button works up until step 5, after this the webserver spits out a 404 on refresh request, I have no clue why but probably just something in the cherrypy config I need to adjust, so don't hit refresh, clear the output by just clicking step 1 again and continue from there.

    4. There's not much tDRK in the wallet on the MN, maybe you could donate a few to n1tTzWoubAdiizaTTYMN3ksUJJ93BXrKQM before you start to avoid it running out, although it shouldn't as all the accounts generated/sent to are recycled internally. tFaucet back up !

    5. Output div doesn't scroll down for you, you need to scroll down yourself. :sad:

    Let me know if it works for you.
     
    #23 thelonecrouton, Sep 4, 2014
    Last edited by a moderator: Sep 4, 2014
  24. r-ando

    r-ando Well-known Member
    Foundation Member

    Joined:
    Jun 22, 2014
    Messages:
    411
    Likes Received:
    250
    Trophy Points:
    233
    Great initiative Crouton! Many thanks!
     
  25. crowning

    crowning Well-known Member

    Joined:
    May 29, 2014
    Messages:
    1,428
    Likes Received:
    2,005
    Trophy Points:
    183
    -------------------------------------------------------------------------------------------------------------------
    404 Not Found
    The path '/' was not found.

    Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 670, in respond
    response.body = self.handler()
    File "/usr/local/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", line 217, in __call__
    self.body = self.oldhandler(*args, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/cherrypy/_cperror.py", line 411, in __call__
    raise self
    NotFound: (404, "The path '/' was not found.")

    Powered byCherryPy 3.5.0
    -------------------------------------------------------------------------------------------------------------------


    Browser: Comodo Dragon (aka Chrome) under Win7 64
     
  26. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    Hmmm, I thought it was auto-threaded, will investigate!

    Seems I killed the process from my end, restarted it, can access it from my laptop and phone, but I get that 404 if I refresh from anywhere past step 5 in the process, still no idea why. :mad:
     
    #26 thelonecrouton, Sep 4, 2014
    Last edited by a moderator: Sep 4, 2014
  27. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    I wanted a little tool for quickly making/funding/emptying multisig addresses for personal use - protect your precious DRK with multiple privkeys!

    Proudly presenting my latest technicolour GUI misadventure: ccmf-perv.py!

    Yes, I just mashed some existing stuff together, but a bit differently!

    Start your daemons!
    [​IMG]

    Get a multisig address and associated mumbo-jumbo!
    [​IMG]

    Fill in all this stuff to get your DRK back out!
    [​IMG]

    Voila!
    [​IMG]

    Note: currently a one-shot wonder, put it in, take it all out. May or may not get around to adding a bit more flexibility.

    Get it here: http://s000.tinyupload.com/?file_id=75243300043967423776 - boggle at my gung-ho use of globals!

    It's labelled as test-net only but I've tried it on main-net too!

    :eek:USE AT YOUR OWN RISK! :eek:

    :)
     
    #27 thelonecrouton, Oct 4, 2014
    Last edited by a moderator: Oct 4, 2014
    • Like Like x 3
  28. splawik21

    splawik21 Grizzled Member
    Dash Core Team Foundation Member Dash Support Group Moderator

    Joined:
    Apr 8, 2014
    Messages:
    1,916
    Likes Received:
    1,273
    Trophy Points:
    1,283
    THE BIG PIECE OF CAKE YOU`VE DONE!
     
  29. DarkDaos

    DarkDaos New Member

    Joined:
    Oct 24, 2014
    Messages:
    11
    Likes Received:
    1
    Trophy Points:
    3
    How do I run this on linux? :/

    Better yet, How do I run this, so that all parties getting a separate key will know that no other party knows what key they hold? Particularly parties that are online, and far away geographically?

    Once I can get it running on my ubuntu, I'll start playing with it and it'll likely make more sense to me. I hope you don't mind the noob question. Being able to run this out of a website would be awesome btw.
     
    #29 DarkDaos, Nov 4, 2014
    Last edited by a moderator: Nov 4, 2014