Private Proof-of-Authority Ethereum Network on Synology NAS

By | 13. August 2020

1. Download Ubuntu installation image and create virtual machine on NAS

I started with Ubuntu server version.

How to install Ubuntu on Synology

2. Optional – install Xrdp Server (Remote Desktop) on Ubuntu 20.04

https://linuxize.com/post/how-to-install-xrdp-on-ubuntu-20-04/

As my main development computers are Windows-based I preferred to have remote desktop access to Ubuntu server. For some reasons first Ubuntu Desktop version failed to connect with typical black screen after connection. Ubuntu server plus steps mentioned in link above were successful. Installing desktop environment on server version takes quite a time , so probably on difference there with installing Desktop version from start. Also initializing desktop via remote connection takes some time, so if you see black screen after connection give it few minutes to load, specially if you can hear that NAS is busy with “something”

We are following instructions form article Setting a multi-node private Ethereum blockchain with Proof of Authority 

But in this article we take simplified approach with one node only. This is sufficient for starting development. In later article we will show ho to expand network with additional signer nodes and  bootnode.

Now we are ready for installing Ethereum blockchain prerequisites.

Step 1: Install Ethereum and geth

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

 

Step 2: Ceate the folder where our blockchain will be stored.

mkdir blkchain

Step 3: Generate the authority account 

Create a geth account. This is necessarily a first step. Even before initializing a genesis block.

geth --datadir blkchain account new

Be sure to keep track of the password used to create each account!

Step 4: Create the genesis block

Using puppeth, a CLI tool released with geth 1.6, create and export the definition for your genesis block:

puppeth
...
Please specify a network name to administer (no spaces, please)
> clique
...

What would you like to do? (default = stats)
 1. Show network stats
 2. Configure new genesis
 3. Track new remote server
 4. Deploy network components
> 2

Which consensus engine to use? (default = clique)
 1. Ethash - proof-of-work
 2. Clique - proof-of-authority
> 2

How many seconds should blocks take? (default = 15)
> 15

Which accounts are allowed to seal? (mandatory at least one)
> 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b
> 0x

Which accounts should be pre-funded? (advisable at least one)
> 0x1808adc011f6e970943d3f28f4d285053d9140ac
> 0x

Specify your chain/network ID if you want an explicit one (default = random)
> 58343
INFO [02-15|18:24:03] Configured new genesis block

 

What would you like to do? (default = stats)
 1. Show network stats
 2. Manage existing genesis
 3. Track new remote server
 4. Deploy network components
> 2

 1. Modify existing fork rules
 2. Export genesis configuration
 3. Remove genesis configuration
> 2

Which file to save the genesis into? (default = clique.json)
> genesis.json
INFO [02-15|18:24:22] Exported existing genesis block

Step 5: Start your private Ethereum instance

Initialize the newly exported genesis.json start your authority geth instance:

geth --datadir blkchain init genesis.json

Start geth console. We will set several flags.

geth --port 3000 --networkid 58343 --datadir=./blkchain --gasprice 0 --maxpeers=5  --rpc --rpcport 8543 --rpcaddr 127.0.0.1 --rpccorsdomain "*" 
--rpcapi "eth,net,web3,personal,miner" console 2>>eth.log

If your server is accessible from public network then be careful with flags you set and enable.

Verify that coinbase address is the same you did set up earlier

> eth.coinbase
“0x1994caa35403d3ad71a7617926f1cfbc8cc7d47b”

If it is missing or different then check again command line parameters for –networkid and –datadir.

On unlocking of account you will probably get error like this

If your blockchain is in private network and only for development then you can add command line switch

--allow-insecure-unlock

You do not want to do it in public network!!!

After unlocking you can start mining

> miner.start()
null

And now we can verify that blockchain is really up and running by checking latest Block Number

> eth.blockNumber
183

 

So this was the quick and dirty path to get PoA chain up for me. Read carefully article mentioned above –  Setting a multi-node private Ethereum blockchain with Proof of Authority.

As expected proof of authority “mining” has no effect on computing resources:

 

 

In next articles we will expand our simple single node blockchain with additional authority nodes.

 

Useful

How to check ip address in ubuntu :

ip addr show

https://itsfoss.com/check-ip-address-ubuntu/

 

In case embedded links are going dead the copy of text is in attachments. All the ownership of the files context stays to their authors.

How to install Ubuntu on Synology Step by Step Wizard (0 downloads) How to Install Xrdp Server Remote Desktop on Ubuntu 20.04 (0 downloads)

 

In next article we will see topic Adding Another Node to Private Ethereum Network

Leave a Reply