It is recommended to use Ubuntu 18.04 for version 2 nodes.

  1. Make sure you have a dedicated user for this install. Also enable sudo for the new user.

1.1 To create new user, as root execute:

adduser personaminer

Adding user `personaminer' ...

Adding new group `personaminer' (1001) ...

Adding new user `personaminer' (1001) with group `personaminer' ...

Creating home directory `/home/personaminer' ...

Copying files from `/etc/skel' ...

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

Changing the user information for personaminer

Enter the new value, or press ENTER for the default

Full Name []: Persona Miner

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Is the information correct? [Y/n] y

1.2 Enable sudo for the new user. As root execute:

usermod -aG sudo personaminer

1.5 Disconnect from the server and connect again using the newly created user.

  1. Git clone the core-control scripts.

git clone https://github.com/PersonaIam/core-control.git

Cloning into 'core-control'...

remote: Enumerating objects: 16, done.

remote: Counting objects: 100% (16/16), done.

remote: Compressing objects: 100% (12/12), done.

remote: Total 603 (delta 10), reused 4 (delta 4), pack-reused 587

Receiving objects: 100% (603/603), 117.77 KiB | 0 bytes/s, done.

Resolving deltas: 100% (368/368), done.

Checking connectivity... done.

cd core-control

2.1 Install persona-core. The script will install operating system patches so it is recommended to reboot the server after this step.

./ccontrol.sh install

Installing Dependencies... Done

Securing System... Done

Installing Database... Done

Setting up Core... Done

2.2 The config files are stored under "~/.config/persona-core/mainnet" and "~/persona-core/packages/crypto/dist/networks/mainnet".

-.config/persona-core/mainnet:

peers.json: used by the node to find other existing nodes.

plugins.js: contains constructor arguments for the different core plugins.

delegates.json: holds the secrets for the initial virtualized delegates.

.env contains environment variables.

-~/persona-core/packages/crypto/dist/networks/mainnet:

exceptions.json: lists blocks and transactions which are exempt from validation rules, usually because of historic forks and vulnerabilities.

genesisBlock.json: defines the very first block of your network, and from it, your networkhash is derived, as it is the header of the first block.

index.ts: exports these crypto definitions as a module.

milestones.json: defines networkwide configuration changes based on certain milestones; i.e. a global reward reduction when block 1000000 has been forged.

network.json: contains your network specific variables. (some may also be set from your env.process).

2.3 Start the node in relay mode.

***STARTING A NODE IN RELAY MODE MEANS THAT THE FORGING SECRET IS NOT FILL IN. PLEASE MAKE SURE THAT YOU DON”T ADD THE SECRET AT THIS STEP,OTHERWISE IT WILL CREATE ISSUES IN THE NETWORK***

./ccontrol.sh start relay

2.4 You can check the logs.

./ccontrol.sh logs relay

cat ~/.pm2/logs/persona-relay-out.log

Your node should now start and connect with the peers set in peers.json. It will take a few hours even a day for the entire synchronization process to finalize.

All node operators, delegates and third-party services should do the same. Once enough participants are in sync, we can move to the next step.

  1. Migrating

3.1 WARNING: Once you proceed with the following steps, v1.0 nodes will not be able to join our network, nor will you be able to downgrade the network.

Ensure that during this phase, all delegates and node operators are communicating with you.

3.2 Once we hit the migration date/time stop your v1 node.

cd ~/persona-node

./persona.sh stop

3.3 Set the delegate 12 word secret.

cd ~/core-control

./ccontrol.sh secret set word1 word2 ... word12

3.4 Start the v2 forger.

cd ~/core-control

./ccontrol.sh start forger

3.5 Check if new blocks are forged by opening the URL http://IP ADDRESS OF THE NODE:4103/api/blocks/getHeight in a web browser.