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

Reuben's Start Multiple Masternodes from One Wallet Guide (start-many)

BolehVPN

Well-known member
Updated Guide 8 Feb 2016:

https://www.bolehvpn.net/blog/2016/02/07/what-is-a-dash-masternode-and-how-do-i-set-up-one/

Also available here:

https://dashtalk.org/threads/reubens-detailed-masternode-setup-and-maintenance-guide.7984/

This guide will no longer be maintained but is useful for the wallet consolidation.

Last Update: 28 March 2015 (Rebranding to DASH and updates on alternate ways of finding index and transaction ID)

I had some problems finding documentation on this so am putting a first draft of this guide for other people to use in the future.

DrkMiner's guide is unfortunately out of date as at 17 February 2015 but I have adapted it as it illustrates the first step correctly.

What this Guide Does

Enables you to host several local masternodes from one wallet and to start all of them from that wallet. This guide assumes you already know how to start a Masternode. If not, head on to Tao's Masternode Guide for Dummies.

This was done with the following environment:
Local: Windows 8.1 64 bit
Remote: Ubuntu 14.04 64 bit
Dash Version: 0.11.1.26

However the instructions and principles should apply to other OSes unless Dash changes its code format.

STEP 1: Consolidate all your Masternode DASH's on one wallet (Adapted from DRKMiner's Guide)

We have two setup options:


a. New wallet setup - creation on new addresses and DASH transfer.
b. Consolidation - transfer several "old" wallets into one new wallet.


a. New wallet setup
  • Create a new address for each Masternode and encrypt the wallet. You do this by opening terminal and following the following instructions.
Enter the following command: "masternode genkey" and press ENTER.

You will see a long string of numbers and letters.

Please copy/paste this string to the new notepad file on your Desktop. This is the key you will need to verify your Masternode later in the process.

Enter the following command: "getaccountaddress 0" and press ENTER.
  • Please note that a normal Dash address is not the same as an address created in this manner!
  • IMPORTANT! Please backup the wallet now. Always backup the wallet BEFORE transferring any DRK!
  • Transfer 1000 DASH to each newly created address in one transaction.
b. Consolidation of old wallets setup
  • If you encrypted your wallet, you will need to unlock it before you dump the keys from your old addresses. Command: "walletpassphrase <passphrase> <timeout>"
  • Get the private keys of all "old" addresses (Hot wallets). Command : "dumpprivkey <your-old-Dash-address-here>"
  • Install a new wallet (one address zero DASH).
  • If you encrypted your wallet, you will need to unlock it before you import the keys. Command: "walletpassphrase <passphrase> <timeout>"
  • Now on the new wallet "importprivkey <my priv key> <label>" be patient might take some time to rescan the blockchain and import all the previous transactions of that address.
  • Note: If you are doing multiple imports of private keys, you can use "importprivkey <my priv key> <label> false". The false statement prevents the client from resyncing. Only once you've reached the last key that you wanted to import, then just go ahead with "importprivkey <my priv key> <optional label>" and it will resync with all the imported addresses in one sitting.
  • All newly imported address end up in the "Addresses" Tab. Leave the Address field as is!
    Click "OK", that will move the address to the "Receive" Tab.
  • After all addresses are imported, encrypt the wallet and create a backup!
  • Keep a backup of ALL "old" wallets for security.
IMPORTANT: In both cases, please create a dash.conf with the details below. Please note that when using masternode.conf, dash.conf no longer needs to specify "masternode=1, masternodeprivkey and ip" anymore as this is all integrated into masternode.conf.

dash.conf only needs to contain:
Code:
rpcuser=SomeRandomString
rpcpassword=EvenLongerRandomString
rpcallowip=127.0.0.1
listen=0
server=1
daemon=1
logtimestamps=1

STEP 2: Create masternode.conf on your local wallet

masternode.conf is where you list all your Masternodes that you want started.

For Windows:
Browse to %appdata%\Dash This will bring you to the Dash configuration folder.
Create a new notepad document and name it "masternode.conf"
Enter in your masternodes in the following format:

ALIAS IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX

ALIAS: Any name that you want to call your masternode
IP: Your masternode IP
MASTERNODEPRIVKEY: This is the private key that you placed in your remote configuration
TRANSACTIONHASH: This is the transaction hash for the transaction in which you got your 1000 DASH deposited.
INDEX: This is the Index of your transaction for that address I'll show you how to get it in a bit.

So how do you get your Transaction Hash and Index?

You can just enter in your masternode address in a Dash Block Explorer such as Dash Explorer and then click on the transaction ID that first put your 1000 DASH in. The transaction ID is what you will be using and you will also see an Index number that corresponds with the 1000 DASH which should be either 1 or 0.

OR alternatively

Open your wallet, head on to Tools > Debug Console
Type "masternode outputs"

Something similar to this will pop up (colored in this guide for clarity)

"d1197905eaffd2fbfcd35f681adba92b25e32c62de6d0f7a5487926c01a70897" : "0",​

The long green string is your TRANSACTIONHASH, and the last purple digit is your INDEX.

Hence in my masternode.conf I would be putting it in this format:

MYMASTERNODE1 123.45.67.89:9999 MASTERNODEPRIVKEY d1197905eaffd2fbfcd35f681adba92b25e32c62de6d0f7a5487926c01a70897 0

in one line (sorry the forum isn't wide enough). For each additional masternode that you have, put in a corresponding entry in a new line, following the same process as above. Save it.

STEP 3: Starting your Masternodes

Startup your wallet in masternode mode and allow it to sync. Ensure all your dashd daemons are running properly on your remote servers.

Open up your terminal and type

masternode start-many YOURWALLETPASSWORD
If all is well, you will see something to similar to this (in this example there are 3 Masternodes listed in masternode.conf)

{
"overall" : "Successfully started 3 masternodes, failed to start 0, total 3",
"detail" : {
"status" : {
"alias" : "MN1",
"result" : "succesful"
},
"status" : {
"alias" : "MN2",
"result" : "succesful"
},
"status" : {
"alias" : "MN3",
"result" : "succesful"
}
}
}
Verify if your masternode is properly started by either going to Dash Ninja or typing masternode list | grep MASTERNODEIP if you are using Linux.

You can also start each masternode individually using the command:
masternode start-alias YOURMASTERNODEALIAS YOURWALLETPASSWORD
which is useful if you only want to start an individual masternode.

Credits
DrkMiner (for the original guide)
Populandum (on irc for helping me figure out the masternode.conf layout, drawing my attention to the start-alias command and refining the guide.)
UdjinM6 (for showing me a much simpler way of getting the transaction id and index)
tungfa (for being patient and pointing me in the right direction)
 
Last edited by a moderator:
It should also be mentioned you can still start them individually as well. Using the example in this guide:

masternode start-alias MYMASTERNODE1 YOURWALLETPASSWORD

This will only broadcast the start-command for the chosen masternode. This can be useful if only one of your masternodes have gone down for some reason.
 
Also: darkcoin.conf only needs to contain the following when you got a mastenode.conf:

rpcuser=SomeRandomString
rpcpassword=EvenLongerRandomString
rpcallowip=127.0.0.1
listen=0
server=1
daemon=1
logtimestamps=1
Notice how there is no masternode=1, masternodeprivkey and ip. All this is baked into masternode.conf now.

Edit: Thank you for spending time putting this guide together btw :)
 
Last edited by a moderator:
Well done Reuben !!

UdjinM6
Reuben pointed out that there is a misspelling in the code !
(can you check on that please)

"overall" : "Successfully started 3 masternodes, failed to start 0, total 3",
"detail" : {
"status" : {
"alias" : "MN1",
"result" : "succesful"
},
"status" : {
"alias" : "MN2",
"result" : "succesful"
},
"status" : {
"alias" : "MN3",
"result" : "succesful"
}
}
}

see that
successful !
Tx
 
Well done Reuben !!

UdjinM6
Reuben pointed out that there is a misspelling in the code !
(can you check on that please)

"overall" : "Successfully started 3 masternodes, failed to start 0, total 3",
"detail" : {
"status" : {
"alias" : "MN1",
"result" : "succesful"
},
"status" : {
"alias" : "MN2",
"result" : "succesful"
},
"status" : {
"alias" : "MN3",
"result" : "succesful"
}
}
}

see that
successful !
Tx
lol, I never noticed that.
 
Well done Reuben !!

UdjinM6
Reuben pointed out that there is a misspelling in the code !
(can you check on that please)

"overall" : "Successfully started 3 masternodes, failed to start 0, total 3",
"detail" : {
"status" : {
"alias" : "MN1",
"result" : "succesful"
},
"status" : {
"alias" : "MN2",
"result" : "succesful"
},
"status" : {
"alias" : "MN3",
"result" : "succesful"
}
}
}

see that
successful !
Tx
Good eye!
Will be fixed in 0.11.2.x https://github.com/darkcoin/darkcoin/pull/188 Thanks! :smile:

EDIT: btw BolehVPN in step 2 you could simply use masternode outputs console command instead of finding txhashes and txindexes in explorer :wink:
 
Niiiice! since start-many was extremely buggy, I skipped testing it altogether. Thank you for this!
 
If we use a new wallet and create a new addresses for each masternode, regarding the masternodeprivkey, how do I generate a masternodeprivkey specific to an address in my wallet using the command masternode genkey? or it doesn't matter and it just needs a list of masternodeprivkey? Hopefully you understand my doubt. Thanks.
 
If we use a new wallet and create a new addresses for each masternode, regarding the masternodeprivkey, how do I generate a masternodeprivkey specific to an address in my wallet using the command masternode genkey? or it doesn't matter and it just needs a list of masternodeprivkey? Hopefully you understand my doubt. Thanks.
masternodeprivkey is not tied to MN address until you place it in local and remote config and issue masternode start (or start-many) command. It's just a kind of "communication key" so it's not tied to anything until you start this "communication".
 
When one wants to setup multiple masternodes with one local wallet from scratch, the command "getaccountaddress 0" only delivers one address to put the 1000 DRK on. To get annother address for the second mastenode, one can use "getaccountaddress 1"? Or should we use a new wallet.dat and import the private key to one "master" wallet to run all masternodes from one wallet.dat?
 
When one wants to setup multiple masternodes with one local wallet from scratch, the command "getaccountaddress 0" only delivers one address to put the 1000 DRK on. To get annother address for the second mastenode, one can use "getaccountaddress 1"? Or should we use a new wallet.dat and import the private key to one "master" wallet to run all masternodes from one wallet.dat?
"getaccountaddress 0" is here from reeeeeally old times and it's outdated actually. Also there is no magic, look:
Code:
help getaccountaddress
getaccountaddress "account"

Returns the current Darkcoin address for receiving payments to this account.

Arguments:
1. "account"       (string, required) The account name for the address. It can also be set to the empty string "" to represent the default account. The account does not need to exist, it will be created and a new address created  if there is no account by the given name.

Result:
"darkcoinaddress"   (string) The account darkcoin address

Examples:
> darkcoin-cli getaccountaddress
> darkcoin-cli getaccountaddress ""
> darkcoin-cli getaccountaddress "myaccount"
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getaccountaddress", "params": ["myaccount"] }' -H 'content-type: text/plain;' http://127.0.0.1:9998/
And wallet now isn't tied to account "0", it just trying to find any inputs with exactly 1000DRK. You can even create new address from GUI as usual and send funds there.

TL;DR: Yes, "getaccountaddress A" is fine (A can be anything without spaces or even with spaces if you use quotes)
 
UdjinM6 Thank you very much for your help!

Are there any known problems with regard to masternodes beeing started local/cold => remote, which drop of the masternode list? I never experienced such issues with local/hot wallet started masternodes. After consolidation and migration to start-many local/remote setupthe masternodes drop off frequently.

My local masternode.conf contains all masternodes. e.g.
MN1 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX
MN2 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX
MN3 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX
..

The respective remote masternode.conf only contains one line e.g.
MN2 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX

remote darkcoin.conf looks like this (running several MN instances with different datadirs on one server):

rpcuser=MN2
rpcpassword=XXX
rpcallowip=127.0.0.1
rpcport=8002
listen=1
server=1
daemon=1
bind=127.0.0.2
bind=PUBLIC_MN_IP
addnode=23.23.186.131
logtimestamps=1

Anything wrong with this? The local node can be stopped after executing the startmany command, correct?
 
Last edited by a moderator:
UdjinM6 Thank you very much for your help!

Are there any known problems with regard to masternodes beeing started local/cold => remote, which drop of the masternode list? I never experienced such issues with local/hot wallet started masternodes. After consolidation and migration to start-many local/remote setupthe masternodes drop off frequently.

My local masternode.conf contains all masternodes. e.g.
MN1 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX
MN2 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX
MN3 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX
..

The respective remote masternode.conf only contains one line e.g.
MN2 IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX

remote darkcoin.conf looks like this (running several MN instances with different datadirs on one server):

rpcuser=MN2
rpcpassword=XXX
rpcallowip=127.0.0.1
rpcport=8002
listen=1
server=1
daemon=1
bind=127.0.0.2
bind=PUBLIC_MN_IP
addnode=23.23.186.131
logtimestamps=1

Anything wrong with this? The local node can be stopped after executing the startmany command, correct?
There is no need in remote masternode.conf, it's not used.
I know one possible problem that could lead to MNs dropping - you might get banned if you restart local wallet too often so your MN initializing message might not propagate properly. There is a 3 times per 3 hour time window - more then that you you'll be banned. It is already fixed in 11.2.x so that your wallet will not ask same peers too often but for now just wait 3+ hours after you nodes dropped and try again.
 
Thank you. Remote mn running with darkcoin.conf only and added

masternode=1
masternodeprivkey=(????????????)
masternodeaddr=(!!!!!!!!!!!!):9999

... seem to have fixed the issue.
 
Last edited by a moderator:
When set up masternode I typed incorrect IP address in the masternode.conf.

I could still started my masternode but in DRK.MN it look like:

Screen Shot 2015-03-16 at 11.46.33 PM.png


I had tried to correct that IP address in masternode.conf and restarted but the problem still persit.

Please help me!!! Thank you.
 
Solved:
I used sendfrom instead sendtoaddress. Now, it's working and masternode outputs lists 2 valid MN transactions.

Once again, thanks for this guide.

Hi,
I have problem with start-many.
I have created 2 accounts in the wallet. let's say mn1 and mn2.
I sent 1000 DRK to mn1 account Address
then, I did masternode outputs and the tx id showed correctly.

I then send other 1000 DRK to mn2 account Address.
I did again the masternode outputs and now, only the last tx id is shown.

then I try to get the remote/local up and running with the mn1 tx id, it fails to start with
"could not allocate vin"

..debug log part..
2015-03-20 22:54:51 CActiveMasternode::GetMasterNodeVin - Could not locate valid vin
2015-03-20 22:54:51 Register::Register() - Error: could not allocate vin
...
 
Last edited by a moderator:
I had some problems finding documentation on this so am putting a first draft of this guide for other people to use in the future.

DrkMiner's guide is unfortunately out of date as at 17 February 2015 but I have adapted it as it illustrates the first step correctly.

What this Guide Does

Enables you to host several local masternodes from one wallet and to start all of them from that wallet. This guide assumes you already know how to start a Masternode. If not, head on to Tao's Masternode Guide for Dummies.

This was done with the following environment:
Local: Windows 8.1 64 bit
Remote: Ubuntu 14.04 64 bit
DarkCoin Version: 0.11.1.25

However the instructions and principles should apply to other OSes unless DarkCoin changes its code format.

STEP 1: Consolidate all your Masternode DRKs on one wallet (Adapted from DRKMiner's Guide)

We have two setup options:


a. New wallet setup - creation on new addresses and DRK transfer.
b. Consolidation - transfer several "old" wallets into one new wallet.


a. New wallet setup
  • Create a new address for each Masternode and encrypt the wallet. You do this by opening terminal and following the following instructions.
Enter the following command: "masternode genkey" and press ENTER.

You will see a long string of numbers and letters.

Please copy/paste this string to the new notepad file on your Desktop. This is the key you will need to verify your Masternode later in the process.

Enter the following command: "getaccountaddress 0" and press ENTER.
  • Please note that a normal Darkcoin address is not the same as an address created in this manner!
  • IMPORTANT! Please backup the wallet now. Always backup the wallet BEFORE transferring any DRK!
  • Transfer 1000 DRK to each newly created address in one transaction.
b. Consolidation of old wallets setup
  • If you encrypted your wallet, you will need to unlock it before you dump the keys from your old addresses. Command: "walletpassphrase <passphrase> <timeout>"
  • Get the private keys of all "old" addresses (Hot wallets). Command : "dumpprivkey <your-old-Darkcoin-address-here>"
  • Install a new wallet (one address zero DRK).
  • If you encrypted your wallet, you will need to unlock it before you import the keys. Command: "walletpassphrase <passphrase> <timeout>"
  • Now on the new wallet "importprivkey <my priv key> <label>" be patient might take some time to rescan the blockchain and import all the previous transactions of that address.
  • Note: If you are doing multiple imports of private keys, you can use "importprivkey <my priv key> <label> false". The false statement prevents the client from resyncing. Only once you've reached the last key that you wanted to import, then just go ahead with "importprivkey <my priv key> <optional label>" and it will resync with all the imported addresses in one sitting.
  • All newly imported address end up in the "Addresses" Tab. Leave the Address field as is!
    Click "OK", that will move the address to the "Receive" Tab.
  • After all addresses are imported, encrypt the wallet and create a backup!
  • Keep a backup of ALL "old" wallets for security.
IMPORTANT: In both cases, please create a darkcoin.conf with the details below. Please note that when using masternode.conf, darkcoin.conf no longer needs to specify "masternode=1, masternodeprivkey and ip" anymore as this is all integrated into masternode.conf.

darkcoin.conf only needs to contain:
Code:
rpcuser=SomeRandomString
rpcpassword=EvenLongerRandomString
rpcallowip=127.0.0.1
listen=0
server=1
daemon=1
logtimestamps=1

STEP 2: Create masternode.conf on your local wallet

masternode.conf is where you list all your Masternodes that you want started.

For Windows:
Browse to %appdata%\DarkCoin This will bring you to the DarkCoin configuration folder.
Create a new notepad document and name it "masternode.conf"
Enter in your masternodes in the following format:

ALIAS IP:9999 MASTERNODEPRIVKEY TRANSACTIONHASH INDEX

ALIAS: Any name that you want to call your masternode
IP: Your masternode IP
MASTERNODEPRIVKEY: This is the private key that you placed in your remote configuration
TRANSACTIONHASH: This is the transaction hash for the transaction in which you got your 1000 drk deposited.
INDEX: This is the Index of your transaction for that address I'll show you how to get it in a bit.

So how do you get your Transaction Hash and Index?

Open your wallet, head on to Tools > Debug Console
Type "masternode outputs"

Something similar to this will pop up (colored in this guide for clarity)

"d1197905eaffd2fbfcd35f681adba92b25e32c62de6d0f7a5487926c01a70897" : "0",​

The long green string is your TRANSACTIONHASH, and the last purple digit is your INDEX.

Hence in my masternode.conf I would be putting it in this format:

MYMASTERNODE1 123.45.67.89:9999 MASTERNODEPRIVKEY d1197905eaffd2fbfcd35f681adba92b25e32c62de6d0f7a5487926c01a70897 0

in one line (sorry the forum isn't wide enough). For each additional masternode that you have, put in a corresponding entry in a new line, following the same process as above. Save it.

STEP 3: Starting your Masternodes

Startup your wallet in masternode mode and allow it to sync. Ensure all your darkcoinds are running properly on your remote servers.

Open up your terminal and type

masternode start-many YOURWALLETPASSWORD
If all is well, you will see something to similar to this (in this example there are 3 Masternodes listed in masternode.conf)

{
"overall" : "Successfully started 3 masternodes, failed to start 0, total 3",
"detail" : {
"status" : {
"alias" : "MN1",
"result" : "succesful"
},
"status" : {
"alias" : "MN2",
"result" : "succesful"
},
"status" : {
"alias" : "MN3",
"result" : "succesful"
}
}
}
Verify if your masternode is properly started by either going to drk.mn or typing masternode list | grep MASTERNODEIP if you are using Linux.

You can also start each masternode individually using the command:
masternode start-alias YOURMASTERNODEALIAS YOURWALLETPASSWORD
which is useful if you only want to start an individual masternode.

Credits
DrkMiner (for the original guide)
Populandum (on irc for helping me figure out the masternode.conf layout, drawing my attention to the start-alias command and refining the guide.)
UdjinM6 (for showing me a much simpler way of getting the transaction id and index)
tungfa (for being patient and pointing me in the right direction)

Can you please start working on "rebranding" the guide ?!
that would be great and super appreciated
Tx
 
Back
Top