> For the complete documentation index, see [llms.txt](https://docs.bouncebit.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bouncebit.io/developer-resources/bouncebit-mainnet-node-setup.md).

# BounceBit Mainnet Node Setup

**Deployment Guides**

* [Run a Full Node](https://github.com/BounceBit-Labs/bouncebit-chain-node/blob/main/docs/Running%20a%20Full%20Node.md)
* [Become a Validator](https://github.com/BounceBit-Labs/bouncebit-chain-node/blob/main/docs/Become%20a%20Validator.md)

> Testnet Snapshot 2025-03-12
>
> [<mark style="color:red;">https://snapshots.bouncebit.io/bouncebit\_testnet\_snapshot\_2025-03-12T06\_28\_37-UTC.tar.zst</mark>](https://snapshots.bouncebit.io/bouncebit_testnet_snapshot_2025-03-12T06_28_37-UTC.tar.zst)
>
> Mainnet Archive Snapshot 2025-11-21
>
> [<mark style="color:red;">https://snapshots.bouncebit.io/bouncebit\_archive\_snapshot\_2025-11-21T00\_01\_55-UTC.tar.zst</mark>](https://snapshots.bouncebit.io/bouncebit_archive_snapshot_2025-11-21T00_01_55-UTC.tar.zst)
>
> Mainnet Snapshot Lite 2025-08-06
>
> [<mark style="color:red;">https://snapshots.bouncebit.io/bouncebit\_statesync\_snapshot\_2025-08-06T09\_44\_47-UTC.tar.zst</mark>](https://snapshots.bouncebit.io/bouncebit_statesync_snapshot_2025-08-06T09_44_47-UTC.tar.zst)

**Mainnet Configuration Spec**

> 💡 **Mainnet**
>
> Chain-id <mark style="color:red;">`bouncebit_6001-1`</mark>
>
> <mark style="color:red;">Fullnode Endpoint</mark> `https://fullnode-mainnet.bouncebitapi.com`
>
> Latest Snapshot <mark style="color:red;">`echo "https://snapshots.bouncebit.io/bouncebit_archive_snapshot_$(curl -s https://snapshots.bouncebit.io/latest).tar.zst"`</mark>

**Mainnet Configuration for Lite Version**

> Configuration File Link: (Important: This configuration disables Rosetta.)
>
> [<mark style="color:red;">http://snapshots.bouncebit.io/bouncebit\_statesync\_config.tar.gz</mark>](http://snapshots.bouncebit.io/bouncebit_statesync_config.tar.gz)

## **Mainnet Latest Version**

Latest Version downloads can always be found here:&#x20;

{% embed url="<https://github.com/BounceBit-Labs/bouncebit-chain-node/releases>" %}

#### v1.6.2

{% file src="/files/cUDGUKkgcbNTlwiU440W" %}

```bash
docker pull bouncebit/bouncebit-node:v1.6.2
```

#### **v1.6.1**

{% file src="/files/vy5hCBbq2gR1s3J0Eno4" %}

```bash
docker pull bouncebit/bouncebit-node:v1.6.1
```

{% hint style="warning" %}
DO NOT UPGRADE TO V1.6.0
{% endhint %}

#### v1.5.4

{% file src="/files/y0fjHip0o7JyQl25rG9a" %}

```bash
docker pull bouncebit/bouncebit-node:v1.5.4
```

{% hint style="warning" %}
DO NOT UPGRADE TO V1.5.3
{% endhint %}

#### v1.5.2

{% file src="/files/ix5qjYlGv6iN0YCkQxm0" %}

```bash
docker pull bouncebit/bouncebit-node:v1.5.2
```

***

### Mainnet Deployment **Guide**

#### **Preparation**

Create workspace directory

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

Create work user

```bash
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 <mark style="color:red;">`Latest Version`</mark> bbcored

```bash
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

```bash
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 👇

{% file src="/files/m64NHuRHVU2gLXvWSJMd" %}

Unzip mainnet-config-files.zip

And move the downloaded file to the following path.

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

### Update seeds ( Required )

**config.toml**

```bash
[p2p]
seeds = "163036cbfa81ac9ff542da47fb8d1a55aac4ce03@35.187.242.164:26656,1cdc3a521bac188bb14b1ee573f475baaa9fcf93@34.124.209.175:26656,9a648107c68081f85cc5ca6614aaef9061e3ce86@35.185.181.242:26656,f72890ab6ade55f6f705b5c4addcd5fedc0c9c15@34.87.108.66:26656"
```

### Config ( Optional )

<mark style="color:red;">If you want to run an archived node , we recommend simply using the following settings.</mark>

**app.toml**

```bash
pruning = "nothing"
```

**config.toml**

```bash
indexer = "kv"
```

<mark style="color:red;">If you are running as a validator and seeking to save disk space, we recommend simply using the following settings.</mark>

**app.toml**

```bash
pruning = "custom"

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

**config.toml**

```bash
indexer = "null"
```

### 🌈 Download <mark style="color:red;">`Latest Version`</mark> snapshot

Download and check snapshot file

```bash
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.sha256sum -c https://snapshots.bouncebit.io/bouncebit_archive_snapshot_$(curl -s https://snapshots.bouncebit.io/latest).tar.zst.sha256sum

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

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

Show the $WORKSPACE

```bash
├── 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`:

```bash
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**

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

**View logs**

```bash
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 <mark style="color:red;">`26660`</mark>. To change the port, edit your config/config.toml file.

```bash
prometheus = true

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

```
