Roller Operation Quick guide

Cumulo
Cumulo.pro
Published in
9 min readSep 10, 2023

for Froopyland Testnet

Table of contents

· ⌘ Get info from the Roller
💈RollApp ID for the Roller config
💈Check relayer status
· ⌘ Check different items
💈Processes running roller
💈Ports
💈Client status
💈Endpoints
· ⌘ Check LOGS
💈Relayer logs
💈RollApp logs
💈Light Node logs
💈Issues with IBC transfers
· ⌘ SystemD
💈Check status of services
💈Check light node
💈Stop all services
💈Kill rollapp processes
💈Restarting the processes
💈SystemD Relayer Logs
· ⌘ Managing sessions with screen
· ⌘ Operation
💈Update Roller
· ⌘ Potential problems
💈Issues with relayer channel establishment
💈Relayer blocked
💈no sequencer registered on the hub for this rollapp
💈RPC requests — rate limit.
· ⌘ Explorers
💈Devnet explorer:
💈EVMOS Block Explorer RollApps
💈Roller Front-Chain
· ⌘ Other resources
💈State Sync
💈Migrate RollApp to another server
💈How to Migrate an Existing RollApp to Avail DA

⌘ Get info from the Roller

💈RollApp ID for the Roller config

roller config show

💈Check relayer status

roller relayer status

⌘ Check different items

💈Processes running roller

ps -a | grep 'rly\|roller'

💈Ports

lsof -i tcp:<PORT>

lsof -i tcp:26657
lsof -i tcp:1317
lsof -i tcp:8545

💈Client status

curl localhost:26657/status

💈Endpoints

RollApp RPC Endpoint

Check in browser: http://<VPS IP>:26657/status

Rest Endpoint

Check in browser: http://<VPS IP>:1317/status

JSON RPC Endpoint (for EVM RollApps)

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":1}' -H "Content-Type: application/json" <IP>:<PORT>

⌘ Check LOGS

💈Relayer logs

tail -f ~/.roller/relayer/relayer.log

💈RollApp logs

tail -f ~/.roller/rollapp/rollapp.log

💈Light Node logs

tail -f ~/.roller/da-light-node/light_client.log

💈Issues with IBC transfers

(after successful channel establishment)

grep "Relayed packets" ~/.roller/relayer/relayer.log

⌘ SystemD

💈Check status of services

sudo systemctl status da-light-client
sudo systemctl status sequencer
sudo systemctl status relayer

💈Check light node

journalctl -fu da-light-client.service -o cat 

💈Stop all services

sudo systemctl stop sequencer
sudo systemctl stop relayer
sudo systemctl stop da-light-client

💈Kill rollapp processes

sudo killall roller 
sudo killall rollapp_evm
sudo killall rly

💈Restarting the processes

sudo systemctl restart sequencer
sudo systemctl restart relayer
sudo systemctl restart da-light-client

💈SystemD Relayer Logs

sudo journalctl -u relayer -f --no-hostname -o cat

⌘ Managing sessions with screen

The Screen program allows Linux systems to open multiple terminal instances within a single session. It also allows you to close the terminal and reconnect to the screen session, which will keep the “virtual terminals” you had open, in case you are not using SystemD

⌘ To install screen we use the following command:

apt install screen

It is possible to assign a name to a new session, using the “-S” parameter:

screen -S <session-name>

screen -S rollapp

Now you can start your scripts in the screen session, e.g. start your rollapp:

roller run

To leave the session but to leave it in the background running:

CTL + a +d

To close the current session and screen sessions:

exit

⌘ Operation

💈Update Roller

Stop the sequencer, da-light-client and relayer (If you’re using systemctl:

sudo systemctl stop sequencer
sudo systemctl stop relayer
sudo systemctl stop da-light-client

Run the update:

curl -L https://dymensionxyz.github.io/roller/install.sh | bash

Run roller migrate:

roller migrate

Restart the RollApp services

sudo systemctl restart sequencer
sudo systemctl restart relayer
sudo systemctl restart da-light-client

Check logs:

tail -f ~/.roller/relayer/relayer.log

Chain syncing:

Relayer working fine:

⌘ Potential problems

💈Issues with relayer channel establishment

Instead of running roller run, please run separately

roller da-light-client start
roller sequencer start
roller relayer start

💈Relayer blocked

if your relayer stays in one of the states indefinitely:
Establishing IBC transfer channel
💈 Creating clients…
💈 Updating clients…
💈 Creating connection…
💈 Creating channel…
💈 Waiting for channel completion….
💈 Creating channel…

Start the relayer again with:

roller relayer start --override

Wait untill the last command is finished successfully and then run roller run again.

💈no sequencer registered on the hub for this rollapp

Use this command:

roller tx register --force

to force register sequencer to registered rollapp

💈RPC requests — rate limit.

RPC error -32000 — Due to the high consumption or frequency of RPC requests, you have exceeded the rate limit

Hub RPC

roller config set hub-rpc <URL RPC>

For example:

roller config set hub-rpc https://dym.rpc.cumulo.com.es:443

And restart services:

sudo systemctl restart sequencer
sudo systemctl restart relayer
sudo systemctl restart da-light-client

NOTE: you can find more RPC endpoints in:

⌘ Explorers

💈Devnet explorer:

💈EVMOS Block Explorer RollApps

💈Roller Front-Chain

The modular dashboard of Dymension

⌘ Other resources

💈State Sync

Dymension rollapps can perform a state sync from a snapshot

More info:

Create a snapshot

Install compressor lz4

sudo apt install lz4

Stop the rollapp:

sudo systemctl stop sequencer
sudo systemctl stop relayer
sudo systemctl stop da-light-client

Create a compressed archive of the rollapp data directory:

cd ~/.roller/rollapp
tar -cvf - data | lz4 > snapshot.tar.lz4

Load a snapshot

Clear the rollapp state with:

rollapp_evm dymint unsafe-reset-all --home ~/.roller/rollapp

Load the snapshot into the rollapp data directory:

cd ~/.roller/rollapp
lz4 -c -d snapshot.tar.lz4 | tar -x -C .

Ensure the rollapp isn’t producing blocks until it’s synced. Set aggregator=false in the rollapp's config file:

~/.roller/rollapp/config/dymint.toml

Edit file:

sudo vi .roller/rollapp/config/dymint.toml

Save file:

ESC
:wq!

Start the rollapp using roller run:

roller run

Verify the rollapp is fully synced by checking its logs:

tail -f ~/.roller/rollapp/rollapp.log
tail -f ~/.roller/relayer/relayer.log?
relayer logs
rollapp logs

Once it is synchronised, modify the file again:

~/.roller/rollapp/config/dymint.toml

With aggregator=true

Restart rollapp:

sudo systemctl restart sequencer
sudo systemctl restart relayer
sudo systemctl restart da-light-client

💈Migrate RollApp to another server

The safest method we have so far is to copy the entire directory of .roller

On the original rollapp server stop rollapp:

sudo systemctl stop sequencer
sudo systemctl stop relayer
sudo systemctl stop da-light-client

Compress .roller folder:

sudo tar -cvf - .roller | lz4 > copyroller.tar.lz4

Verify that roller is installed on the new environment:

Copy copyroller.tar.lz4 to new server and unzip it:

lz4 -c -d copyroller.tar.lz4 | tar -x -C .

Modify the file .roller/rollapp/config/dymint.toml and change the user of the new server, if necessary:

keyring_home_dir = "/home/user/.roller/hub-keys"

Start rollapp services:

sudo systemctl start sequencer
sudo systemctl start relayer
sudo systemctl start da-light-client

Check that everything works in the logs:

NOTE: If everything works correctly request the IP change in your pair rollappID.

💈How to Migrate an Existing RollApp to Avail DA

The following section explains how to change the DA of a rollapp, you can see more information about it in this section:

Dymension docs: https://docs.dymension.xyz/build/change_configuration

Avail docs: https://docs.availproject.org/clash-of-nodes/dymension/

1. Stop All Roller Services

sudo systemctl stop sequencer
sudo systemctl stop relayer
sudo systemctl stop da-light-client

2. Switch DA to Avail

roller config set da avail

Do not forget to save the address of Avail will be necessary to fund the faucet:

3. Update Avail Network Endpoint

sed -i 's|wss://dymension-devnet.avail.tools/ws|wss://goldberg.avail.tools/ws|g' .roller/rollapp/config/dymint.toml

4. Retrieve Your Avail Address

roller keys list

5. Fund Your Avail Address

To perform this step you need a Gitcoin Passport. If you have not set up a Gitcoin Passport yet, visit https://passport.gitcoin.co/#/dashboard

More info: https://support.gitcoin.co/gitcoin-knowledge-base/gitcoin-passport/how-do-i-add-passport-stamps

Go to Avail Discord in #goldberg-faucet, use the command /deposit <avail address>.

With the command /balance <avail address> you will be able to see your balance:

6. Restart All Services

sudo systemctl restart sequencer
sudo systemctl restart relayer
sudo systemctl restart da-light-client

Check rollapp logs:

tail -f ~/.roller/relayer/relayer.log
tail -f ~/.roller/rollapp/rollapp.log

7. Update Your RollApp in the Dymension Github

Assuming you have already listed your rollapp in Portal, you need to make changes to your PR.

More information about rollapp Portal listing:

https://docs.dymension.xyz/build/production/portal-listing


"type": "RollApp",
"da": "Avail",
"description": "",
"analytics": true,
"goldberg": true,
"availAddress": "<your Avail address>"
}

dYmension networks:

⌘ Web: https://www.dymension.xyz/

⌘ Twitter oficial: https://twitter.com/dYmensionXYZ

⌘ Telegram: https://t.me/dYmensionXYZ

⌘ Discord: https://discord.gg/dymension

Twitter | Medium | LinkedIn | Discord | Telegram | cumulo.pro

--

--