# 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="<https://1316604192-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaNWumH92fd1205exOOBs%2Fuploads%2FNOKu15vYFlY2yBrohz2c%2Fbbcored_v1.6.2.tgz?alt=media&token=94cc7059-ddf0-45a9-8e86-a989021997bd>" %}

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

#### **v1.6.1**

{% file src="<https://1316604192-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaNWumH92fd1205exOOBs%2Fuploads%2FFfmsPoxfK8dKiE5HtsDx%2Fbbcored_v1.6.1.tgz?alt=media&token=9c5bff0b-09e7-4cd6-ab45-72a11bed7525>" %}

```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="<https://1316604192-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaNWumH92fd1205exOOBs%2Fuploads%2FH0whDUdqPRs5l4RYAXhD%2Fbbcored_v1.5.4.tgz?alt=media&token=c6f9d4f2-b5b1-4fc5-97ce-6431c2cf3947>" %}

```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="<https://1316604192-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaNWumH92fd1205exOOBs%2Fuploads%2FOJHVFfr9K1cGchjt7Ls3%2Fbbcored_v1.5.2.tgz?alt=media&token=0eea5917-f026-4cb8-b3cf-a31c704fd210>" %}

```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="<https://1316604192-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FaNWumH92fd1205exOOBs%2Fuploads%2FGPvAVU4Cx9HrqWGrRlGB%2Fmainnet-config-files.zip?alt=media&token=86ee5839-6c2e-4dd3-8aa2-c4bf74b3a85f>" %}

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"

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bouncebit.io/developer-resources/bouncebit-mainnet-node-setup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
