BounceBit Mainnet Node Setup

Deployment Guides (Just refer to the testnet)

Testnet Snapshot 2025-03-12

https://snapshots.bouncebit.io/bouncebit_testnet_snapshot_2025-03-12T06_28_37-UTC.tar.zst

Mainnet Snapshot 2025-06-06

https://snapshots.bouncebit.io/bouncebit_archive_snapshot_2025-06-06T00_01_28-UTC.tar.zst

Mainnet Configuration Spec

💡 Mainnet

Chain-id bouncebit_6001-1

Fullnode Endpoint https://fullnode-mainnet.bouncebitapi.com

Latest Snapshot echo "https://snapshots.bouncebit.io/bouncebit_archive_snapshot_$(curl -s https://snapshots.bouncebit.io/latest).tar.zst"

Mainnet Latest Version

v1.6.1

docker pull bouncebit/bouncebit-node:v1.6.1

v1.5.4

docker pull bouncebit/bouncebit-node:v1.5.4

v1.5.2

docker pull bouncebit/bouncebit-node:v1.5.2

Mainnet Deployment Guide

Preparation

Create workspace directory

cd $WORKSPACE
mkdir -p bouncebit/bin
mkdir -p bouncebit/config

Create work user

sudo groupadd -r -g 979 bouncebit
sudo useradd -m -u 979 -g 979 --system -s /sbin/nologin -d /var/lib/bouncebit bouncebit
sudo mkdir /etc/bouncebit && sudo chown bouncebit:bouncebit /etc/bouncebit

sudo tee /etc/bouncebit/bbcored.env <<EOF
GOGC=75
EOF

## rm old node key
sudo rm /data/bouncebit/config/node_key.json

🌈 Download Latest Version bbcored

curl -OL https://github.com/BounceBit-Labs/node/releases/download/v1.5.4/bbcored

tar zxf bbcored.tgz -C bouncebit/bin
sha256sum bbcored

chmod +x bbcored

ln -s $WORKSPACE/bin/bbcored /usr/local/bin/bbcored 
# or
# sudo cp bbcored /usr/local/bin/bbcored 

Init Bouncebit Mainnet Network

cd $WORKSPACE
bbcored init [moniker] -o --chain-id bouncebit_6001-1 --home $WORKSPACE

🖇️ Download Mainnet Network_files

Mainnet configuration files can be downloaded from here 👇

Unzip mainnet-config-files.zip

And move the downloaded file to the following path.

config/app.toml
config/client.toml
config/config.toml
config/genesis.json

Update seeds ( Required )

config.toml

[p2p]

seeds = "[email protected]:26656,[email protected]:26656"

Config ( Optional )

If you want to run an archived node , we recommend simply using the following settings.

app.toml

pruning = "nothing"

config.toml

indexer = "kv"

If you are running as a validator and seeking to save disk space, we recommend simply using the following settings.

app.toml

pruning = "custom"

# These are applied if and only if the pruning strategy is custom.
pruning-keep-recent = "100"
pruning-interval = "10"

config.toml

indexer = "null"

🌈 Download Latest Version snapshot

Download and check snapshot file

wget -c -O bouncebit_archive_snapshot.tar.zst -c https://snapshots.bouncebit.io/bouncebit_archive_snapshot_$(curl -s https://snapshots.bouncebit.io/latest>).tar.zst
wget -c -O bouncebit_archive_snapshot.tar.zst.sha256 -c https://snapshots.bouncebit.io/bouncebit_archive_snapshot_$(curl -s https://snapshots.bouncebit.io/latest>).tar.zst.sha256

# check sha256
sha256sum -c bouncebit_archive_snapshot.tar.zst.sha256

sudo -u bouncebit bash -c "tar --use-compress-program=zstd -xvf bouncebit_archive_snapshot.tar.zst -C /data/bouncebit"

Show the $WORKSPACE

├── bin
│   ├── bbcored
│   └── checksum.txt
├── config
│   ├── addrbook.json
│   ├── app.toml
│   ├── client.toml
│   ├── config.toml
│   ├── genesis.json
│   ├── node_key.json
│   └── priv_validator_key.json
└── data
    ├── application.db
    ├── blockstore.db
    ├── cs.wal
    ├── evidence.db
    ├── evmindexer.db
    ├── priv_validator_state.json
    ├── snapshots
    ├── state.db
    └── tx_index.db

Running Node via systemd

We recommend using Systemd to manage Bouncebit service and check logs.

Setting up systemd unit file

You can create a Systemd unit file at the following location /etc/systemd/system/bouncebit.service:

sudo tee /etc/systemd/system/bouncebit.service <<EOF
[Unit]
Description=bouncebit node daemon
After=network-online.target
Wants=network-online.target data.mount
Requires=data.mount

[Service]
ExecStart=/usr/local/bin/bbcored start \\
    --log_format=json \\
    --log_level=info \\
    --home=/data/bouncebit

Type=simple
Restart=on-failure
KillMode=process
KillSignal=SIGINT
TimeoutStartSec=infinity
TimeoutStopSec=600
User=bouncebit
Group=bouncebit
CPUSchedulingPolicy=batch

LimitNOFILE=524288
LimitNPROC=16384
MemoryMax=27G

WorkingDirectory=/data/bouncebit
EnvironmentFile=-/etc/bouncebit/bbcored.env

# /run/bouncebit
RuntimeDirectory=bouncebit
RuntimeDirectoryMode=0700

# /etc/bouncebit
ConfigurationDirectory=bouncebit
ConfigurationDirectoryMode=0755

# /var/lib/bouncebit
StateDirectory=bitcoind
StateDirectoryMode=0710

SyslogIdentifier=bbcored

# Provide a private /tmp and /var/tmp.
PrivateTmp=true

# Mount /usr, /boot/ and /etc read-only for the process.
ProtectSystem=full

# Deny access to /home, /root and /run/user
ProtectHome=true

# Disallow the process and all of its children to gain
# new privileges through execve().
NoNewPrivileges=true

# Use a new /dev namespace only populated with API pseudo devices
# such as /dev/null, /dev/zero and /dev/random.
PrivateDevices=true

# Deny the creation of writable and executable memory mappings.
MemoryDenyWriteExecute=true

[Install]
WantedBy=multi-user.target
EOF

Start the service

systemctl daemon-reload
systemctl start bouncebit.service
systemctl enable bouncebit.service

View logs

journalctl -o cat -f -u bouncebit

Monitoring

Monitor your Full node using the instructions at Logging, Tracing, Metrics, and Observability.

The default metrics port is 26660. To change the port, edit your config/config.toml file.

prometheus = true

# Address to listen for Prometheus collector(s) connections
prometheus_listen_addr = ":26660"

Last updated