• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Shared MN using multisig

strix

Active member
Foundation Member
Greetings All...

As someone with limited funds who desires a MN, my only recourse is to participate through MN shares. I am currently involved with Mangled Blue, and have been very appreciative of his openness and level of support. None the less, I am somewhat troubled that participation in a shared MN requires an extremely high level of trust in the holder of the MN. Not only is this contrary to the trustless spirit of DRK, it also places you in the hands of fate. What happens to the participants should the holder be hit by the proverbial bus? No matter how trustworthy they were, the funds could still be unrecoverable.

Based on my limited knowledge of multisig, it seems reasonable to think that 10 (or less) people could create a multisig address containing 1000DRK and that this address could be used to fund the MN. Would it not be possible for it to be set up in an N of M manner, so that (for example) any seven of the 10 originators could cause the address to return the funds to the wallets of all the participants?

This would have the advantage of creating a trustless shared MN, which would be safe from the vagrancies of fate. It would also allow a much greater adoption of shared MNs and a corresponding increase in the number of MNs on the network. The originator would still profit by charging fees up front, or preferably by extracting them from the proceeds of the MN. The participants would only be at risk for the distribution of their share of the proceeds, and should they not be distributed to the satisfaction of the majority, the multisig address could be revoked and the funds reverted to the participants. I suspect the address could also be set up to disband and return the funds at a predetermined date, so that the participants sign on for a specific period of time.

Sadly I do not have the expertise to produce a working template for this, and am hoping that some of you might be able to produce one along the lines of what Fernando created here: http://wiki.darkcoin.qa/display/DRK/Complex+Multisignature+Example

Any takers?
 
Greetings All...

As someone with limited funds who desires a MN, my only recourse is to participate through MN shares. I am currently involved with Mangled Blue, and have been very appreciative of his openness and level of support. None the less, I am somewhat troubled that participation in a shared MN requires an extremely high level of trust in the holder of the MN. Not only is this contrary to the trustless spirit of DRK, it also places you in the hands of fate. What happens to the participants should the holder be hit by the proverbial bus? No matter how trustworthy they were, the funds could still be unrecoverable.

Based on my limited knowledge of multisig, it seems reasonable to think that 10 (or less) people could create a multisig address containing 1000DRK and that this address could be used to fund the MN. Would it not be possible for it to be set up in an N of M manner, so that (for example) any seven of the 10 originators could cause the address to return the funds to the wallets of all the participants?

This would have the advantage of creating a trustless shared MN, which would be safe from the vagrancies of fate. It would also allow a much greater adoption of shared MNs and a corresponding increase in the number of MNs on the network. The originator would still profit by charging fees up front, or preferably by extracting them from the proceeds of the MN. The participants would only be at risk for the distribution of their share of the proceeds, and should they not be distributed to the satisfaction of the majority, the multisig address could be revoked and the funds reverted to the participants. I suspect the address could also be set up to disband and return the funds at a predetermined date, so that the participants sign on for a specific period of time.

Sadly I do not have the expertise to produce a working template for this, and am hoping that some of you might be able to produce one along the lines of what Fernando created here: http://wiki.darkcoin.qa/display/DRK/Complex Multisignature Example

Any takers?
It's certainly possible to do it that way, and I thought about it when I set up my shared MNs, but many-party multisig introduces new problems:

1. It's a cumbersome pain in the arse. Each transaction needs to be signed by all the necessary parties and co-ordinating eg. seven people over the internet all in different time zones can be time consuming. It's hard enough getting one's partners to send you a payout address sometimes, let alone expecting them all to perform complicated voodoo with unfeasibly long hex strings, even though I have a GUI for that. ;) Also, getting back out chunks that are different from the ingoing chunks can be eye watering. Multisig as it exists in BTC/DRK is still a pretty crude tool.

2. It introduces the possibility that a few bad actors can collude to throw a spanner in the works of the majority, depending on the N of M.
 
Thank you for the response TLC. Like you, I am amazed at the insecurities people are willing to put up with (eg pools); and consider the trust required for shared masternodes in the same light. When DRK approaches $100, the only new masternodes are likely to be shared, and no one will be willing to participate without something like what I am talking about. Ultimately a port of BTC Armory will probably solve the problem, but in the meantime a guide such as Fernando's cited above would do the trick.

I am fairly good at following, and even improving convoluted instructions, if someone can get them to me in the first place. If some one could show me how to do one with three participants, I am sure I could extrapolate it to 10.

I'm not sure what you mean by different ingoing and outgoing chunks. I am thinking for example that three people contribute 500, 300, and 200 DRK respectively, and comit to a sharred MN for one quarter (3mo.). The administrator holds the address receiveing the payments to the MN, which he is responsible to disperse monthly. At the end of the three months the DRK automatically revert to a wallet specified by the each of the participants, (or to the address which originally sent the funds). Should all parties agree, two of the three could disband the collective in an emergency. I suspect this latter option would only be likely if the time agreed to was longer than three months.

You mention you have a gui--what does it do and could it be expanded? I am thinking a field for number of participants, and length of contract. Loop for participant originating address, amount contributed, reverting address, required pub/priv keys etc.

Is this to complicated for the security it affords?
 
You mention you have a gui--what does it do and could it be expanded? I am thinking a field for number of participants, and length of contract. Loop for participant originating address, amount contributed, reverting address, required pub/priv keys etc.

I played with multisig a few months ago, my experiments are here: https://darkcointalk.org/threads/qu...g-ui-in-python-qt-new-unimproved-perver.2197/ - have a doggie bag ready, I'm not a GUI designer!

Temporal contracts aren't possible at the moment, but they might be if InstantX transaction locking can be set to an arbitrary number of blocks into the future, I don't know though, we only got to play with it briefly in the last round of testing.
 
Again, thank you TLC! This looks like exactly what I was hoping for. It also looks like the perfect venue for a project to finally get serious about learning Python. I have been thinking that someone needs to tackle BTC Armory, but knew that it was too much for me to start with, no matter how desperate I was to see it adapted to DRK. (I am still hoping one of you Python masters will take it on. ;-)

After writing my previous post I started poking around and realized I need to get testnet up and running. I now realizing that I am wading in way over my head :eek: If I understand Flare's post (http://wiki.darkcoin.qa/display/DRK/Darkcoin+101) correctly, testnet is its own user on a linux system?!:what: Is this correct? I have been playing with Arch for a few months, and love the fact that a can compile each new edition of the wallet as soon as it is released ($ yaourt -Syua --devel), but am still very much a neophyte.

I realize that I am now moving far afield of the thread topic; should I start a new thread concerning testnet, or are there better sources of info than the one I cited by Flare?

Thank you again for the patience with my newbie questions.:confused:
 
Greetings All...

As someone with limited funds who desires a MN, my only recourse is to participate through MN shares. I am currently involved with Mangled Blue, and have been very appreciative of his openness and level of support. None the less, I am somewhat troubled that participation in a shared MN requires an extremely high level of trust in the holder of the MN. Not only is this contrary to the trustless spirit of DRK, it also places you in the hands of fate. What happens to the participants should the holder be hit by the proverbial bus? No matter how trustworthy they were, the funds could still be unrecoverable.

Based on my limited knowledge of multisig, it seems reasonable to think that 10 (or less) people could create a multisig address containing 1000DRK and that this address could be used to fund the MN. Would it not be possible for it to be set up in an N of M manner, so that (for example) any seven of the 10 originators could cause the address to return the funds to the wallets of all the participants?

This would have the advantage of creating a trustless shared MN, which would be safe from the vagrancies of fate. It would also allow a much greater adoption of shared MNs and a corresponding increase in the number of MNs on the network. The originator would still profit by charging fees up front, or preferably by extracting them from the proceeds of the MN. The participants would only be at risk for the distribution of their share of the proceeds, and should they not be distributed to the satisfaction of the majority, the multisig address could be revoked and the funds reverted to the participants. I suspect the address could also be set up to disband and return the funds at a predetermined date, so that the participants sign on for a specific period of time.

Sadly I do not have the expertise to produce a working template for this, and am hoping that some of you might be able to produce one along the lines of what Fernando created here: http://wiki.darkcoin.qa/display/DRK/Complex Multisignature Example

Any takers?
I'm glad to see that someone has read my wiki page :)

I haven't tried to do a multisig masternode yet (it's in my todo list, but not too high for the problems I will state later). I think it is possible because you can import the multisig address to the wallet with the addmultisig command, but I'm not sure how it will work.

Some problems with multisig masternodes:
-The MN address needs one 1000 DRK input. If people send to the multisig directly there will be more inputs. You would need a first payment to consolidate. I think it is not needed anymore that the 1000 DRK input is the first one for the address, if it were, you'd be out of luck.
-As thelonecrouton has said, coordinating so many people can be tricky. Also, it could lead to people being excluded/scammed by the majority. Someone could create several fake shareholders to control those seven signatures and steal the other's funds. If you require everybody to sign, then anyone can block the funds.
-If you make a mistake with things like calculating the fee for the multisig payments you can get into deep shit (huge fee or insufficient fee and the transaction not being picked... not sure what happens in that case). You would need to trust the technical skills of the other shareholders.

I think we already have timelocks, but they are quite difficult to use. If you create a raw transaction you can change the 'locktime' parameter so the transaction is not included in a block until a certain moment in the future. However, creating raw transactions in a big pain in the ass. I want to play with that and maybe combine with multisigs, but I need some time to do my research.
 
I'm glad to see that someone has read my wiki page :)
I think it is not needed anymore that the 1000 DRK input is the first one for the address, if it were, you'd be out of luck.

Can anybody confirm this? If it works, then you could 1) seed a MN with 1,000 DRK, 2) add 1,000 with multisig, 3) remove the initial 1,000.

Still problematic if you're trying to run a MN with multiple shares because of the coordination required. But the above seems like a good solution for if you want someone else to manage a full masternode for you.
 
Can anybody confirm this? If it works, then you could 1) seed a MN with 1,000 DRK, 2) add 1,000 with multisig, 3) remove the initial 1,000.

Still problematic if you're trying to run a MN with multiple shares because of the coordination required. But the above seems like a good solution for if you want someone else to manage a full masternode for you.
That is not what I meant. You can't touch the 1000 DRK in the address of the masternode. What I meant is that in the beginning you needed to create an address named '0' and then send exactly 1000 DRK to it. The first input in that address had to be 1000 DRK. I believe this is not the case anymore and you could send in different transactions and then consolidate in one input by sending to self, but that is the part I'm not sure.
 
Fernando, thank you for the thoughtful reply. I have finally got testnet working and am anxious to start exploring and experimenting. It is somewhat heady seeing all those coins show up from the faucet :eek: and it is nice to see the results of "setgenerate true." :grin: I have not had a chance to set up a test masternode, but I am looking forward to it, as well as helping test instantx and other new functions. After I feel comfortable with my new-found power, I will return to the issue of shared MNs.

While my coding is at a sub-Neanderthal level, my desire to help is high. Please keep me appraised of your efforts in this direction, if nothing else, I would like to participate as a guinea pig. :confused:
 
fernando I can confirm that there is not obligated having 1000 coins as 1st input. It can be whatever numer input but it has to be later sent as a self payment of 1000drk after 15 confirmations ready to start. Practised and works :)
 
fernando I can confirm that there is not obligated having 1000 coins as 1st input. It can be whatever numer input but it has to be later sent as a self payment of 1000drk after 15 confirmations ready to start. Practised and works :)
Awesome, thanks. I always set them up like that because that is how it had to be in the beginning, but it is nice to know we are more flexible now!
 
Back
Top