Setting in motion a bootnode in the Telsius network of Alastria

Guillermo Araujo Riestra
Babel — go2chain
4 min readApr 1, 2019
Bootnode Alastria

In this link you can find the Spanish version

Written by Guillermo Araujo, senior developer at Babel Sistemas de Información and member of the Alastria Platform Core Team (APCT).

Telsius is a Quorum network which uses the IBFT consensus algorithm. It is a permissive network (one must request access to obtain it) with the possibility of generating private transactions (Constellation).

In this network, three types of nodes can be displayed:

  • Validators: Responsible of generating neutrality and reliability when generating blocks. They are in charge of executing the IBFT consensus algorithm.
  • Bootnodes: Responsible of the network’s nodes permissions. Visible to evey type of node.
  • Regular: Responsible of accepting, verifying and deliveing transactions to validators.

In this post we will go through the process of installing a bootnode type node.

Node requirements:
Operating system: Ubuntu 16.04

Docker: We need to have docker installed on the machine where the node will be deployed. Docker installation.

Hardware:

Minimum and desired hardware requirements

Ports: Traffic must be allowed to the following ports:

  • 21000 / TCP and UDP: Allows connecting and synchronizing between the nodes. This will be done including the “enode”, IP and port 21000 in the files: boot-nodes.json, regular-nodes.json or validator-nodes.json, depending on the type of node.
  • 8443 / TCP: Exposure of the REST API of the node monitor. In order to access this API, it is necessary to have a digital certificate installed in the browser.

Steps to launch the node:

1. Download the repository with the following command:

git clone -b testnet2 https://github.com/alastria/alastria-node

2. Navigate to the folder where the script resides to launch the node installation:

cd alastria-node/docker/bootnode

3. Execute the init script within this route:

./init.sh

4. The script will ask some questions we must answer:

Company Name
Number of CPU’s in the machine
Machine’s Ram number
Sequence number of nodes in the network, starting with 00 if it is the first node and increasing by one in case of having more (00, 01, 02 …)
Confirm the information is correct, entering 1 if so or 2 if not.

5. Let the script finish running. We should be able to see our red node in the network’s netstat once done.

http://netstats.telsius.alastria.io/

6. In order for our node to be included in the network and start synchronizing the chain, we must perform a Pull Request on the alastria-node repository in the testnet2 branch (currently Telsius). These files need to be modified:

• DIRECTORY_BOOTNODES.md

• data/boot-nodes.json

Since the node has been launched with docker, we need to access the container to obtain the node’s code. To find our docker’s Container_ID run the following command:

docker container ls
Command to get the CONTAINER_ID

Once we have our ID, we must run the following command to get into the docker container:

docker exec -it CONTAINER_ID /bin/bash

The necessary information about our node can be found by running this command:

git diff /root/alastria-node/data/boot-nodes.json
Diff boot-nodes.json

7. Once the information of our node has been retireved (green line in the image above), proceed to send a pull request to the github alastria-node repository — its “testnet2” branch, to be precise. To this end:

  1. Log in at https://github.com
  2. Navigate to https://github.com/alastria/alastria-node/tree/testnet2
  3. Click on theFork button and to create a copy of the current alastria node repository in our user, eg: https://github.com/go2chain/alastria-node
  4. Navigate to the testnet2 branch and then to data/boot-nodes.json. With the pencil icon, add the modification to the end of the list and fix the structure of the other nodes. Once the changes in the file have been saved, commit them with theCommit changes button.
  5. Navigate to the DIRECTORY_BOOTNODES.md file and using the pencil icon, add in the last line of the file the information, which in the case of this example would be:
| Babel | Guillermo Araujo Riestra(go2chain@babel.es) | Self Hosted (2C/4Gb/100Gb) | - | enode://a5788255afd311e2c05c3d72547724d8bf8a47a9f21aa661a4ddcc9c5cd9f87449872e474c64b79adac9b18c15ee0ba3b62cf62528d5b70a826ec27aad30f3b6@62.82.95.209:21000 |

6. Use the Commit changes button, as with every other case.

7. Create a new pull request by navigating to thePull request tab and clicking on the New Pull Request button. Make sure that the alastria\alastria-node repository is on the left and the your_user\alastria-node is on the right side, both in set to the testnet2 branch.

9. Once done, create the pull request by using the Create pull request button. This pull request will be created in the alastria-node repository, and must be accepted and integrated by the platform team.

--

--