1. Download Ubuntu installation image and create virtual machine on NAS
I started with Ubuntu server version.
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