Curium masternode setup – Hot wallet Linux (no GUI)

Masternode setups can be tricky. The masternode and the wallet run on the same computer. Since a masternode needs a 24/7 internet connection, the wallet on it is, as they say, “hot”. It’s always connected.

This how-to will help you set-up a Curium masternode. The masternode will run on Linux and will also contain the wallet for the required collateral. Before we start, I’m assuming you have a Linux installation up and running with enough disk-space, memory and root access.

Preparing the masternode

First become root user, then continue.

Memory management

If you have 1GB of memory (or even less) on your VPS, you need to create a swap file. Else building the core wallet will fail. You can create a swapfile with these commands:

fallocate -l 3G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo -e "/swapfile none swap sw 0 0 \n" >> /etc/fstab

Now you have a file “/swapfile” which functions as extra memory in case your vps needs more then 512MB.

Setup firewall

If you already have firewall software up and running, make sure to allow incoming TCP traffic on port 18745. If you do not have a firewall, it’s highly recommended to set one up.

Here are the basics for just SSH and the masternode connection:

If you have CentOS, type:

yum install ufw

If you have Ubuntu/Debian, type:

apt-get install ufw

Now execute the following command in this exact order, else you might lock yourself out of the vps. Type:

ufw allow ssh/tcp
ufw limit ssh/tcp
ufw allow 18745/tcp
ufw logging on
ufw enable

Press “y” when a confirmation is asked.

Install libraries

If you have CentOS, type:

yum upgrade
yum install epel-release
yum install autoconf automake gcc-c++ libdb4-cxx libdb4-cxx-devel boost-devel openssl-devel wget

If you have Ubuntu/Debian, type:

add-apt-repository ppa:bitcoin/bitcoin
apt-get update
apt-get install pkg-config build-essential autoconf automake libtool libboost-all-dev libevent-dev libgmp-dev libssl-dev libcurl4-openssl-dev libdb4.8-dev libdb4.8++-dev wget

Create user

Create a user to run the daemon with, type:

adduser curium

Install core wallet

Become user curium and download the latest “Source code (tar.gz)” from GitHub here. Type:

su - curium
wget https://github.com/curiumofficial/curium/archive/v1.0.1.tar.gz

Extract the tarball with the commands:

tar zxf v1.0.1.tar.gz
cd curium-1.0.1

Prepare some files and build the core client, type:

./autogen.sh
./configure --prefix=$HOME --disable-tests --disable-gui
make
make install

We’ve installed curium in ~/bin, to add this to the path, Ubuntu already made preparations, run:

source ~/.profile

Run the daemon with the following command:

curiumnd

It will show a message that it’s missing the initial curium.conf file.

“Error: To use curiumnd, or the -server option to curiumn-qt, you must set an rpcpassword in the configuration file:
/home/curium/.curiumcru/curium.conf”

Copy the “rpcuser” and “rpcpassword”, you need them in a few other steps.

Create the file ~/.curiumcru/curium.conf with an editor, type:

vi ~/.curiumcru/curium.conf

Add the following lines (press “i” to go into INSERT mode):

rpcuser=RPCUSER_FROM_PREVIOUS_STEP
rpcpassword=RPCPASSWORD_FROM_PREVIOUS_STEP
rpcallowip=127.0.0.1
rpcport=11772
listen=1
server=1
daemon=1
port=18745
maxconnections=256
masternode=0
masternodeprivkey=

To save and close the file, press ESC first (INSERT will disappear from the bottom), then type “:wq” and press enter.

Start the daemon so it can begin synchronizing the blockchain, type:

curiumnd

Leave it running. In the meantime, we’re going to setup the wallet containing the collateral.

Creating the collateral wallet

Let’s create a wallet address to hold your collateral, type:

getnewaddress "MN1"

(The name “MN1” is an example, this can be anything you want (use quotes around it if you used spaces in the name) so you know which wallet this is.)

Safety first! So we’re going to encrypt this wallet, type:

curiumn-cli encryptwallet "passphrase"

Please “passphrase” with a strong password. The best would be a so called “mnemonic passphrase” (a list of words). Save your passphrase in a password manager, or print it on paper and keep it somewhere safe. If you lose this passphrase, you’ll lose access to your wallet and all your coins are lost.

Send exactly 10000 CRU (ten thousand) collateral to the address you’ve just created and wait for at least 1 confirmation. (Take into consideration that you’re paying a small fee, so make sure you send enough CRU to pay the fee and still have exactly 10000 CRU left.) You can see the confirmations, when you run this command:

curiumn-cli gettransaction TxId

Look for the variable value of “bcconfirmations“.

Check if the coins have arrived at your collateral address, type:

curiumn-cli getbalance MN1

It should return:

10000.00000000

Generate a masternode key, type:

curiumn-cli masternode genkey

Write down the masternode key, you need it later.

Retrieve the transaction Id and output Id, type:

curiumn-cli masternode outputs

It will show you something like this:

{
b8298be868216507ae23c10440cfa9b699018f0bc043b91c6d96fe1d2c41bae7“: 0
}

Write down the transaction Id and the output Id, you need it later.

!!!! If you get an empty response, do this, else skip !!!!

Create a new wallet address and re-send 10000 CRU, like so:

curiumn-cli getnewaddress "MN2"

(Use this label in all future steps where a label is needed.)

curiumn-cli walletpassphrase "passphrase" 30
curiumn-cli sendtoaddress NEW_WALLET_ADDRESS 10000

The application will say something like making a “Payment to yourself”. Wait for 1 confirmation, then check outputs again with:

curiumn-cli masternode outputs

You should now see the transaction Id and output Id, write it down, you need it later.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

If done correctly, we have the following data collected:

  • RpcUser – From the vps curium.conf.
  • RpcPassword – From the vps curium.conf.
  • MasterNodePrivKey – a masternode private key
  • TxId – a transaction Id (txid)
  • OutputId – the output Id
  • We have a wallet containing 1000 CRU collateral

Stop the daemon with the command:

curiumn-cli stop

Open the file ~/.curiumcru/curium.conf, type:

vi ~/.curiumcru/curium.conf

Change the lines “masternode” and “masternodeprivkey” line, like so (first press “i” to go into INSERT mode):

masternode=1
masternodeprivkey=THE_MASTERNODE_PRIVATE_KEY

Where:

  • THE_MASTERNODE_PRIVATE_KEY – The private key from the “masternode genkey” command.

To save and close the file, press ESC first (INSERT will disappear from the bottom), then type “:wq” and press enter.

Open the file ~/.curiumcru/masternode.conf, type:

vi ~/.curiumcru/masternode.conf

Now add the following line (first press “i” to go into INSERT mode):

MN1 IP:18745 MasterNodePrivKey TxID OutputId

Where:

  • MN1 – The label I gave the collateral wallet in the “getnewaddress” command.
  • IP:18745 – The external IP address of your vps and the port number.
  • MasterNodePrivKey – The private key from the “masternode genkey” command.
  • TxId – The transaction Id from the “masternode outputs” command.
  • OutputId – The output Id from the “masternode outputs” command.

To save and close the file, press ESC first (INSERT will disappear from the bottom), then type “:wq” and press enter.

Start the daemon, type:

curiumnd

The masternode is now ready.

Before we start, wait until there are at least 30 confirmations on the blockchain (check with gettransaction), type:

curiumn-cli startmasternode alias 0 MN1

(“MN1” is the label of the masternode we gave it in the masternode.conf file.)

The command should return:

{

“alias” : “MN1”,

“result” : “successful”

}

Congratulations, you now have a masternode running.

Verifying if it all works

Here are a few commands you can use to check the setup.

curiumn-cli masternode list-conf

It should show the config and “status” should be set to “ENABLED”.

curiumn-cli masternode status

It should return something that looks like this:

{
 "vin" : "CTxIn(COutPoint(TxId, OutputId), scriptSig=)",
 "service" : "IP:18745",
 "pubkey" : "Your collateral wallet address",
 "status" : "Masternode successfully started"
}
curiumn-cli masternode list | grep TxId

This should return a line containing your TxId and followed by “ENABLED”.

Possible issues

The command “curium-cli masternode status” shows all zeros in the vin parameter.

"vin" : "CTxIn(COutPoint(TxId, OutputId), scriptSig=)",

Most likely you’ve started the masternode to soon. There need to be at least 30 confirmations on the blockchain before you can start the masternode.

Donate

Did you find this guide helpful? Show some appreciation by sending some coins to:

CRU (new): RFvcV9goU4AM11eeVdQ78yoiKevL6vTg85

Thank you!

External links

Leave a Reply

Your email address will not be published.

*