Introduction
This article demonstrates and explains the process of installing and setting up Stratis Full Node on Raspberry Pi.
Raspberry Pi
The Raspberry Pi Foundation is a UK-based registered educational charity. The Raspberry Pi is a small, low-cost computer the size of a credit card that connects to a computer display or television and utilizes a conventional keyboard and mouse. Raspberry Pi allows anyone of any age to learn to program in a variety of programming languages. It is a little computer with computing skills. The Raspberry Pi has a lot of features, including the capacity to interface with the outside world and many other computer functions, such as accessing the internet and playing high-definition video, as well as spreadsheets, word processing, and gaming.
To learn more about Raspberry Pi, you can enroll yourself into the C# Corner
Internet of Things learn series.
Stratis Platform
Stratis Ltd. is the creator of Stratis Platform, a blockchain technology platform for enterprises to build enterprise-grade blockchain-based solutions using Microsoft’s .NET framework and C# language. Stratis Platform is easy to learn, adapt, and integrate with existing enterprise applications. Stratis offers both public blockchain and private blockchain solutions. Stratis’s product offerings include Distributed Ledger Technology (DLT), Identity Platform, Supply Trust, STO Platform, DiFi, and Smart Contracts written in C# and executed on native .NET CLR makes it appealing to companies that want to build blockchain solutions on Microsoft stack.
Visit
here to learn more about Stratis Platform.
Blockchain
A blockchain is a growing list of records, known as blocks, that are cryptographically linked together. A cryptographic hash of the preceding block, a timestamp, and transaction data are all included in each block (generally represented as a Merkle tree). To get into the hash, the timestamp validates that the transaction data existed when the block was published. Each additional brick reinforces the ones before it, forming a chain.
To know more about Blockchain, visit the C# Corner
Blockchain category.
Blockchain Full Node
In a distributed network, there are a lot of computers connected. Each computer is called a node. A node is a point of intersection or connection within the network. It can act as both a redistribution point or a communication endpoint. A Blockchain full node is a node on a Blockchain network.
Every block and transaction is downloaded and checked against Blockchain's consensus rules by full nodes. Even if every other node on the network considers a transaction or block is acceptable, it is rejected if it defies the consensus rules. Miners have limited power on full nodes: they can only rearrange or delete transactions, and only with a lot of computational power. Although a powerful miner may carry out certain major assaults, full nodes rely on miners for just a few things, therefore miners cannot fully modify or destroy the Blockchain.
Pre-Requisite
Before starting, you need to have Raspberry Pi with either Rasbian or Linux or Ubuntu or any of the operating systems of your choice installed.
If you wish to buy Raspberry Pi, you can visit
here.
Raspberry Pi 4 is the latest Pi hardware version. You can have a look at the following to learn more about it,
Important Points to remember
- I am assuming that you have installed and configured your OS with remote login.
- I am using Raspberry Pi 3 Model B with Raspbian OS. For remote login, I am using AnyDesk.
- Raspberry Pi 3 is a 32-bit machine and Raspberry Pi 4 is a 64-bit machine, so download the resources accordingly.
Quick Fix - Download package on Raspberry Pi
Use the following command to download any package on Raspberry Pi:
sudo apt install [package-name]
Installing Dot Net
Stratis Full Node is based on C#.Net, so we need to install the dotnet framework onto the Raspberry Pi. This involves 2 steps,
- Downloading the binaries from the StratisFullNode Github repository
- Extracting the downloaded repository and copying it into the root directory
Downloading DotNet
Open the terminal by clicking CTRL+ALT+T or you can click on the terminal button on the top left side.
Type the following command and hit enter,
In the above commands,
- "sudo" is used to access system resources with admin rights
- "curl -SL" is used to download the "dotnet-sdk-latest-linux-arm.tar.gz" file
- "-o dotnet.tar.gz" is used to rename the downloaded file
Installing DotNet
After the downloaded is finished. We need to create a system folder to copy the extracted file contents, this can be done using the following command,
sudo mkdir -p /usr/share/dotnet
Next, we will copy the extracted tar.gz onto that folder using the command,
sudo tar -zxf dotnet.tar.gz -C /usr/share/dotnet
Now we will create a symbolic link, so that system can find where it had to look for dotnet,
sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
A symbolic link is a term for any file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution.
So, we are done installing DotNet. You can verify the installation by typing in "dotnet" and you will get something like the following,
If you encounter any errors, please start from the beginning.
Installing StraxNode (Stratis FullNode)
Since we have successfully downloaded the DotNet, we can now move on to downloading and setting up the Stratis Full Node.
You can download it using the following commands,
In the above command:
- "sudo" is used to access system resources with admin rights
- "wget is used to download the "Stratis.StraxD-linux-arm.zip" file
- "-O Snode.zip" is used to rename the downloaded zip file
Note
We will then be extracting the downloaded zip file to the StraxNode folder using the following command:
sudo unzip SNode.zip -d ~/StraxNode
Congratulations, we are done installing and setting up the Stratis FullNode on Raspberry Pi.
Starting the Stratis FullNode
Once we are done installing, the final step includes running the node. We run the FullNode using the command,
sudo screen dotnet ~/StraxNode/Stratis.StraxD.dll run -mainnet
In the above command,
- "screen" package is used to open/fork a virtual terminal on top of the current terminal.
- "dotnet" is used to run the dotnet application
- "mainnet" is the default network, on which we deploy the blockchain. If you want you can use "testnet".
You need to run the above command every time you need to start the FullNode, or you can make it a daemon process so that I can start every time you boot the Pi.
Once we run the command we would be getting an output like the following,
In order to make it a background process, use shortcut Ctrl+A and then Ctrl+D.
Quick Fix - Screen not working
It may be possible that "screen" may not run on your pi, so you can run the command without using "screen".
Quick Fix - FullNode not starting
If you are facing difficulties in starting the FullNode make sure to run the following command,
sudo find /root/.stratisnode/ -mindepth 1 ! -regex '^/root/.stratisnode/strax/StraxMain/wallets\(/.*\)?' -delete
And then reinstall the Stratis FullNode.
Note
If you have configured a wallet on your system,
- Please make sure you have a backup of your wallet before proceeding.
- If you want to delete both the FullNode and Wallet use the following command:
sudo rm -r /root/.stratisnode/
Points to remember
- Whenever you want to stop FullNode use "CTRL+C". And that also only one time, otherwise it would not shut down safely, which will eventually corrupt the whole blockchain.
- If you closed the wallet before it has not fully synched, you may not be able to restart the FullNode, as one of the blocks may get corrupted. So make sure you reinstall StratisNode.
Stratis Development Team is working to solve this issue. And shortly, you will get the version with an automatic ReSync facility.
Watch the following complete video, to install and configure Stratis FullNode on Raspberry Pi.
Conclusion
We successfully installed and configured the Stratis Full Node on Raspberry Pi. For any doubts or clarification, feel free to visit
Stratis Discord.
Visit C# Corner to find answers to more such questions.