Skip to main content

Soneium is a next-generation Ethereum layer 2 blockchain ecosystem developed by Sony Block Solutions Labs. It connects Web3 with everyday Web2 services, making blockchain more accessible for users. Soneium aims to be a versatile, general-purpose platform, empowering developers and creators with scalable, user-friendly technology. It supports a range of applications, including entertainment, gaming, and finance, offering innovative and competitive features in the Ethereum layer 2 space. image

Minato Node Setup Guide

This guide provides instructions on setting up a Minato node using Docker, Docker Compose, and binary installation.

Hardware Requirement​

We recommend using the i3.2xlarge AWS instance type or equivalent hardware. If you want to set it up as a public RPC, you will need to adjust node resources based on your traffic.

ResourceSpecification
CPU Cores8 vCPUs
RAM61 GiB
Storage1.9 TB NVMe SSD

Docker Installation (Option 1)​

Prerequisites​

  • Docker: Ensure Docker is installed on your system. You can install it by following the instructions below.
  • Docker Compose: Ensure Docker Compose is installed on your system. You can install it by following the instructions below.

Make sure you have the latest versions of Docker and Docker Compose installed.

Install Docker​

Run the following commands to install Docker:

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# Add Docker’s official GPG key:
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null

# Set up the Docker repository:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker Engine:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Verify the installation:
sudo docker --version

Install Docker Compose​

sudo apt install docker-compose
docker-compose --version

Install OpenSSL​

Run the following commands to install OpenSSL on your system:

sudo apt update
sudo apt install openssl -y

Setup Instructions​

Generate JWT Secret​

Generate a JWT secret by running the following command:

openssl rand -hex 32 > jwt.txt

Rename Environment File​

mv sample.env .env

Update Environment Variables​

Open the .env file in a text editor and update the following variables:

L1_URL=https://sepolia-l1.url 
L1_BEACON=https://sepolia-beacon-l1.url
P2P_ADVERTISE_IP=<Node Public IP>

In some node providers, you need to specify your node's public IP for op-geth. To do this, replace <your_node_public_ip> with your actual public IP in the --nat=extip:<your_node_public_ip> parameter within the docker-compose.yml file, specifically under the op-geth-minato service settings.

Recommendation: For faster synchronization, it's recommended to have the L1 node geographically close to the Minato node.

Run Docker Compose​

Run the Docker Compose file to start the services:

docker-compose up -d

Check Logs​

Monitor the logs to ensure the services are running correctly:

For op-node-minato:

docker-compose logs -f op-node-minato

For op-geth-minato:

docker-compose logs -f op-geth-minato

After each restart, it takes approximately 2 minutes for the node to start syncing.

Binary Installation (Option 2)​

Prerequisites​

  • Ubuntu 22.04 or a compatible Linux distribution.
  • Root or sudo privileges.
  • OpenSSL installed.

Install OpenSSL​

Run the following commands to install OpenSSL on your system:

sudo apt update
sudo apt install openssl -y

Installation Steps​

Step 1: Download Binaries​

Download the op-node and geth binaries from the release page:

wget https://github.com/Soneium/soneium-node/releases/download/v1.9.0-ec45f663-1723023640/op-node
wget https://github.com/Soneium/soneium-node/releases/download/v1.101315.3-stable-8af19cf2/geth

Step 2: Set Executable Permissions​

Make the downloaded binaries executable:

chmod +x op-node geth

Step 3: Move Binaries to /usr/local/bin​

Move the binaries to /usr/local/bin for easy execution:

sudo mv -t /usr/local/bin geth op-node

Step 4: Set Up Configuration​

Create the necessary directories and generate the JWT secret:

sudo mkdir /etc/optimism
openssl rand -hex 32 > jwt.txt
git clone [email protected]:Web3-Technology-Planning-Office-SNCLabs/soneium-node.git
cd soneium-node/minato
openssl rand -hex 32 > jwt.txt
sudo mv -t /etc/optimism/ minato-genesis.json jwt.txt minato-rollup.json

Step 5: Initialize Geth​

Initialize geth with the genesis configuration:

sudo geth init --datadir=/data/optimism/ /etc/optimism/genesis.json

Service Configuration​

op-node Service​

Create a systemd service for op-node:

sudo nano /etc/systemd/system/op-node.service

Add the following content:

[Unit]
Description=op-node
After=network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/op-node \
--l1=https://sepolia-l1.url \
--l2=http://localhost:8551 \
--rpc.addr=127.0.0.1 \
--rpc.port=9545 \
--l2.jwt-secret=/etc/optimism/jwt.txt \
--l1.trustrpc \
--l1.beacon=https://beacon-l1.url \
--syncmode=execution-layer \
--l1.rpckind=erigon \
--p2p.priv.path=/etc/optimism/p2p.key \
--p2p.static=/dns4/peering-01.prd.hypersonicl2.com/tcp/9222/p2p/16Uiu2HAm36ufaFmS3tjSjkUnwSJmQN8W8fZ8yXiu2AYL2o11EgcK,/dns4/peering-02.prd.hypersonicl2.com/tcp/9222/p2p/16Uiu2HAmPkRbG8kkhJ3JWmrqeiMvy1hWXFSz4s4rncVe8YiCJHmx \
--p2p.discovery.path=/etc/optimism/p2p.db \
--p2p.peerstore.path=/etc/optimism/p2p-peerstore.db \
--metrics.enabled \
--p2p.advertise.ip=<your-public-ip> \
--metrics.port=7310 \
--rollup.config=/etc/optimism/rollup.json

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

op-geth Service​

Create a systemd service for geth:

sudo nano /etc/systemd/system/op-geth.service

Add the following content:

[Unit]
Description=op-geth
After=network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/geth --datadir=/data/optimism --http --http.corsdomain="*" --http.vhosts="*" --http.addr=0.0.0.0 --http.api=web3,debug,eth,txpool,net,engine --ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.origins="*" --ws.api=debug,eth,txpool,net,engine --syncmode=full --gcmode=archive --maxpeers=100 --authrpc.vhosts="*" --authrpc.addr=0.0.0.0 --rollup.sequencerhttp=https://seq3-rpc.prd.hypersonicl2.com --authrpc.port=8551 --authrpc.jwtsecret=/etc/optimism/jwt.txt --metrics --metrics.addr=0.0.0.0 --metrics.expensive --metrics.port=6060 --rollup.disabletxpoolgossip=false --db.engine=pebble --state.scheme=hash --bootnodes=enode://6526c348274c54e7b4184014741897eb25e12ca388f588b0265bb2246caeea87ed5fcb2d55b7b08a90cd271a53bc76decb6d1ec37f219dbe4cd3ed53a888118b@peering-02.prd.hypersonicl2.com:30303,enode://34f172c255b11f64828d73c90a60395691e89782639423d434385594dd38b434ddffb78ad411da6fd37cbda6d0f93e17ceae399ac4f2594b0d54eb8c83c27de9@peering-01.prd.hypersonicl2.com:30303

Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Step 6: Enable and Start Services​

Enable and start the services to run at boot:

sudo systemctl enable op-node.service
sudo systemctl start op-node.service

sudo systemctl enable op-geth.service
sudo systemctl start op-geth.service

Monitoring Logs​

You can monitor the logs for both services with the following commands: For op-node:

sudo journalctl -u op-node.service -f

For op-geth:

sudo journalctl -u op-geth.service -f