Bare Metal
Author: [ jleopoldA ]
System Requirements
CPU
OS
RAM
DISK
2 Cores
Debian / Ubuntu 22.04
8Gb RAM
128GB
Using a version of Rootstock that is below 6.3.1 will result in issues that prevent successful syncing.
Pre-Requisites
sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -ySetting up Firewall
Set explicit default UFW rules
# Set explicit default UFW rules
sudo ufw default deny incoming
sudo ufw default allow outgoingAllow SSH
sudo ufw allow 22/tcpAllow remote RPC connections with Rootstock node
sudo ufw allow 4444
sudo ufw allow 4445Allow P2P Connections
sudo ufw allow 30303/tcp
sudo ufw allow 30303/udpEnable Firewall
sudo ufw enableTo check status of UFW and see the current rules
sudo ufw status verboseBuilding a Node on Rootstock
Dependencies
Install Java
# If you have a previous version of Java - remove it.
sudo apt purge openjdk-*
# Remove unused packages
sudo apt autoremove
# Install Java 8
sudo apt install openjdk-8-jdk
# Verify Installation
java -versionCreate Directories for Rootstock
# Create directory for Rootstock
mkdir /root/rootstock
# Create a folder for configuration
mkdir /root/rootstock/configCreate Configuration File
# Create Configuration File
nano /root/rootstock/config/node.confPaste the below Configuration into the file:
blockchain.config.name = "main"
database.dir = /root/rootstock/database/mainnet
rpc {
providers: {
web: {
cors = "*"
http: {
enabled = true
bind_address = 0.0.0.0
port = 4444
hosts = ["*"]
}
ws: {
enabled = true
bind_address = 0.0.0.0
port = 4445
}
}
}
modules = {
eth { version: "1.0", enabled: "true"},
net { version: "1.0", enabled: "true"},
rpc { version: "1.0", enabled: "true"},
web3 { version: "1.0", enabled: "true"},
evm { version: "1.0", enabled: "true"},
sco { version: "1.0", enabled: "false"},
txpool { version: "1.0", enabled: "true"},
debug { version:"1.0", enabled: "true"},
personal { version: "1.0", enabled: "false"}
}
}
Ctrl + X and Yto exit and confirm saving changes to a file.
Create Data Directory to store chain data for Rootstock blockchain.
mkdir /root/rootstock/database/mainnet/Download Rootstock
# Download Rootstock within your "rootstock" directory.
cd ./root/rootstock/
git clone --recursive https://github.com/rsksmart/rskj.git
cd rskj
git checkout tags/ARROWHEAD-6.3.1 -b ARROWHEAD-6.3.1Ensure the Security Chain
Get External Dependencies
# From within the root of your "rskj" directory, run the following.
./configure.sh
# This will download and set important components (ex. Gradle Wrapper)Compile the node
# From within the root of your "rskj" directory, run the following.
./gradlew build -x testCreate systemd service for Rootstock node
# Copy and paste the code below and run it within your terminal.
sudo echo "[Unit]
Description=Rootstock Node
After=network.target
StartLimitIntervalSec=200
StartLimitBurst=5
[Service]
Type=simple
Restart=on-failure
RestartSec=5
TimeoutSec=900
User=root
Nice=0
LimitNOFILE=200000
WorkingDirectory=/root/rootstock/rskj/rskj-core/build/libs/
ExecStart=/usr/bin/java -Drsk.conf.file=/root/rootstock/config/node.conf -jar /root/rootstock/rskj/rskj-core/build/libs/rskj-core-6.3.1-ARROWHEAD-all.jar co.rsk.Start
KillSignal=SIGTERM
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/rootstock.serviceStart Rootstock Node
sudo systemctl daemon-reload # refresh for systemd configuration changes
sudo systemctl enable rootstock.service # enable rootstock.service at start up
sudo systemctl start rootstock.service # start rootstock.serviceView Logs for Debugging
journalctl -fu rootstock.serviceQuery Rootstock Node
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:4444
# The response should resemble the follow
{"jsonrpc":"2.0","id":1,"result":"0xcab5ab"}References
Last updated