Pigeonpedia

Join the movement

Run Pigeoncoin

Datanode

Why Datanodes?

Datanodes are the backbone of the Pigeon messaging infrastructure.
They store, deliver and delete encrypted messages and images.

Secure the Network

Data is stored on multiple nodes across whole internet to guarantee speed and safety of your encrypted data.

Earn PGN

Datanode Maintainers are rewarded with message sending fees and part of each new block reward in rotary scheme.


SETUP A PIGEONCOIN TESTNET DATANODE
 

WHAT YOU WILL NEED
1) A VPS (Virtual Private Server)
2) 1000000 Testnet Pigeoncoin (PGNt)
3) A testnet collateral address (and associated private key)
4) A testnet owner address (and associated private key)
5) A testnet voting address (and associated private key)
6) A testnet payout address (and associated private key)

COMPILE TESTNET FROM SOURCE

To compile from source on a fresh ubuntu 18.04 install:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
mkdir dash-fork
cd dash-fork
git clone https://github.com/akshaynexus/pigeoncoin-dash
cd pigeoncoin-dash
export HOST=x86_64-linux-gnu
sudo apt install python3-pip
sudo apt install python-pip
python3 -m pip install –user futoin-cid
pip install futoin-cid==0.8.3
pip install futoin-cid
sudo apt-get install curl
~/.local/bin/cid prepare
~/.local/bin/cid build

Once compiled, binaries can be found in dash-fork\pigeoncoin-dash\build\pigeon\bin and wallet files including pigeon.conf will be located in ~/.pigeoncore. To run in testnet you will need to make some initial modifications to your pigeon.conf file.

testnet=1

[test]
rpcuser=xxx
rpcpassword=xxx
rpcallowip=127.0.0.1

GENERATE YOUR ADDRESSES

Run ./pigeon-cli getnewaddress from the command line or getnewaddress from the console to generate an address. Repeat this four times so that you have a collateral address, owner address, voting address and payout address.

FUND YOUR ADDRESSES

Send some PGNt funds to all of your addresses apart from your collateral address. Finally send exactly 1000000 PGNt to your collateral address. Once the collateral transaction has confirmed on the network, run

masternode outputs

The console will then output your collateral hash and your collateral index (you will need these later).

 

{
“16347a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3” : “0”,
}

GENERATE YOUR BLS KEYS

Run bls generate to generate your secret key and your public key (these will also be needed later).

 

{
“secret”: “395555d67d884364f9e37e7e1b29536519b74af2e5ff7b62122e62c2fffab35e”,
“public”: “99f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670e”
}

PREPARE YOUR CONFIG FILE

Edit your pigeon.conf file again and add the following lines so that it looks like the below (the masternodeblsprivkey is intentionally commented out for now).

testnet=1

[test]
rpcuser=XXX
rpcpassword=XXX
rpcallowip=127.0.0.1
listen=1
server=1
daemon=1
port=18765
bind=XXX.XXX.XXX.XXX
externalip=XXX.XXX.XXX.XXX
addnode=138.68.75.8:18765
addnode=159.89.177.213:18765
addnode=86.3.228.217:18765
addnode=213.136.83.223:18765
addnode=45.63.99.59:18765
#masternodeblsprivkey=395555d67d884364f9e37e7e1b29536519b74af2e5ff7b62122e62c2fffab35e

EXECUTE YOUR PROTX REGISTER_PREPARE COMMAND

The protx register_prepare command is formulated as follows.

protx register_prepare collateralHash collateralIndex ipAndPort ownerKeyAddr operatorPubKey votingKeyAddr operatorReward payoutAddress

The collateralHash and the collateralIndex were generated by you earlier when you executed the masternode outputs command. You should already know your IP and port. You generated your owner address earlier. Your operatorPubKey is the public key you generated earlier with the bls generate command. You also generated your voting address earlier. Set your operator reward to 0 and add your payout address to the end of the command. When your protx command is ready, it should look something like this.

protx register_prepare 16347a28f4e5edf39f4dceac60e2327931a25fdee1fb4b94b63eeacf0d5879e3 0 45.76.230.239:18765 nPgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip 99f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670e nPRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg 0 nPZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN

Run it and your output will look something like this.

{
“tx”: “030001000175c9d23c2710798ef0788e6a4d609460586a20e91a15f2097f56fc6e007c4f8e0000000000feffffff01a1949800000000001976a91434b09363474b14d02739a327fe76e6ea12deecad88ac00000000d1010000000000e379580dcfea3eb6944bfbe1de5fa2317932e260acce4d9ff3ede5f4287a34160100000000000000000000000000ffff2d4ce6ef4e1fd47babdb9092489c82426623299dde76b9c72d9799f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670ed1935246865dce1accce6c8691c8466bd67ebf1200001976a914fef33f56f709ba6b08d073932f925afedaa3700488acfdb281e134504145b5f8c7bd7b47fd241f3b7ea1f97ebf382249f601a0187f5300”,
“collateralAddress”: “nPSPYvgUiAQ9AFj5tKFA8thFLoLBUxQERb”,
“signMessage”: “yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN|0|yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip|yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg|ad5f82257bd00a5a1cb5da1a44a6eb8899cf096d3748d68b8ea6d6b10046a28e”
}

SIGN THE GENERATED MESSAGE

Next you need to sign the message generated by your previous protx command.

signmessage collateralAddress signMessage

Formulating the signmessage from the previous output, it will look something like this.

signmessage "nPSPYvgUiAQ9AFj5tKFA8thFLoLBUxQERb" "yjZVt49WsQd6XSrPVAUGXtJccxviH9ZQpN|0|yfgxFhqrdDG15ZWKJAN6dQvn6dZdgBPAip|yfRaZN8c3Erpqj9iKnmQ9QDBeUuRhWV3Mg|ad5f82257bd00a5a1cb5da1a44a6eb8899cf096d3748d68b8ea6d6b10046a28e"

The command will generate a signature that you’ll need for the next step.

II8JvEBMj6I3Ws8wqxh0bXVds6Ny+7h5HAQhqmd5r/0lWBCpsxMJHJT3KBcZ23oUZtsa6gjgISf+a8GzJg1BfEg=

At this point you will need to uncomment the masternodeblsprivkey line in your pigeon.conf file.

 

SUBMIT THE SIGNED MESSAGE

protx register_submit tx sig

This final command is used to submit the special protx transaction onto the blockchain and register your testnet masternode. The tx is taken from the output of your earlier protx register_prepare command and the sig is the signature output from your earlier signed message. It should look something like this.

protx register_submit 030001000175c9d23c2710798ef0788e6a4d609460586a20e91a15f2097f56fc6e007c4f8e0000000000feffffff01a1949800000000001976a91434b09363474b14d02739a327fe76e6ea12deecad88ac00000000d1010000000000e379580dcfea3eb6944bfbe1de5fa2317932e260acce4d9ff3ede5f4287a34160100000000000000000000000000ffff2d4ce6ef4e1fd47babdb9092489c82426623299dde76b9c72d9799f20ed1538e28259ff80044982372519a2e6e4cdedb01c96f8f22e755b2b3124fbeebdf6de3587189cf44b3c6e7670ed1935246865dce1accce6c8691c8466bd67ebf1200001976a914fef33f56f709ba6b08d073932f925afedaa3700488acfdb281e134504145b5f8c7bd7b47fd241f3b7ea1f97ebf382249f601a0187f5300 II8JvEBMj6I3Ws8wqxh0bXVds6Ny+7h5HAQhqmd5r/0lWBCpsxMJHJT3KBcZ23oUZtsa6gjgISf+a8GzJg1BfEg=

You’ll now need to restart the daemon ./pigeon-cli stop and then start it again ./pigeond and finally wait for the transaction to appear on the chain.

 

NOTES

The above method will work for testnet but is very insecure and should not be used for live mainnet pigeoncoin masternodes. Collateral is set to 1000000 PGNt. Use mnsync next , mnsync status and masternode status to check your masternode. If you are setting up on a VPS with only 1GB of RAM then you’ll need to create a swap file (https://www.vultr.com/docs/setup-swap-file-on-linux). If you need help with any part of the process then please use the #help channel to request assistance.