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

Limitation of address type for MN funding transaction

codablock

Active member
Hey,

I was working on an idea regarding trustles MN sharing which is based on specially crafted multi-sig transactions for the funding MN transaction. I had nearly all the code up and running but then realized that the funding transaction can only be a standard P2PKH transaction, making a multi-sig funding transaction impossible.

I tried to read through the code to understand why this limitation exists. I'm pretty new to the whole topic of crypto currencies, but at least already got a good understanding of how the block chain and transactions work.

Before I started to read the code, I always assumed that the UTXO is only used for identification and verification of the MN and that the pubkey is only used for MN reward payments, leading to my assumption that a P2SH (for multi-sig) address would also work. Now that I read the code, it looks like the pubkey (and probably the private key?) is used for more stuff, but I'm absolutely not sure.

Maybe someone with deeper knowledge about the MN code can explain the use of the pubkey from the UTXO. It would help me alot to understand the code and probably give me ideas on how to proceed (maybe lift the limitation in some way?)
 
Private key for 1000 DASH utxo is used to sign "masternode announce" p2p message on local wallet, corresponding pubkey is used to verify that message on every other node. Switching from current implementation to multi-sig/mixed would require:
1) changing message format (adding more pubkeys, how many?)
2) changing signing/verification process for "masternode announce"
Probably doable, but will require HF protocol update.
 
Last edited:
Can you explain the announce a little bit more? Is this what happens when someone calls "masternode start-alias"? If the private key of the funding address is used for this, for what is the masternode private key (which you specify in masternode.conf) used?

HF means hard fork? Can you explain why this would be needed? I thought the status of masternodes is not part of the blockchain and I assumed it's always possible to do non-blockchain related changes as long as all agree on the change?
 
Can you explain the announce a little bit more? Is this what happens when someone calls "masternode start-alias"? If the private key of the funding address is used for this, for what is the masternode private key (which you specify in masternode.conf) used?

HF means hard fork? Can you explain why this would be needed? I thought the status of masternodes is not part of the blockchain and I assumed it's always possible to do non-blockchain related changes as long as all agree on the change?
Yes, all "masternode start-<mode>" generate such messages. masternode private key is used to sign all other messages generated by masternode itself.

Sorry, I wasn't accurate. Yes, technically it's not a hard fork in the way it's usually defined, it's a network protocol upgrade but it will require turning off some restrictions, waiting for majority of MNs/miners to upgrade and turning restrictions back on. After that all non-upgraded nodes won't be able to recognize new masternodes thus won't be able to construct new masternode list and masternode payments properly, so they can potentially fork off (especially miners).
 
Ah, my understanding gets better, thanks :)

What is the reason that the masternode private key is not used for the signing of the announce message? Without looking into the code (can't do that right now), I would guess that the announce message is also used to publish the public key corresponding to the masternode key, so that later signed MN messages can be verified? Is this correct or am I on the wrong track? In the case I'm wrong, how are the MN messages verified by the other MNs?
 
Ah, my understanding gets better, thanks :)

What is the reason that the masternode private key is not used for the signing of the announce message? Without looking into the code (can't do that right now), I would guess that the announce message is also used to publish the public key corresponding to the masternode key, so that later signed MN messages can be verified? Is this correct or am I on the wrong track? In the case I'm wrong, how are the MN messages verified by the other MNs?
Initial message must be signed by the 1000 DASH private key to prove collateral is actually in place. This also "delegates" signing of all other messages to a corresponding masternode (the one having/knowing masternode private key).
 
Back
Top