Skip to content

Join the testnet as a validator

Testnet

Join the public RP1 DAG testnet as a validator candidate using a release-matched rp1d artifact, without requiring public source access.

Updated View as Markdown

This page is the partner-facing path for joining a live RP1 shared testnet. It separates software distribution from validator-set admission.

Publishing a node artifact only solves packaging. Becoming an active validator still requires the on-chain admission flow:

  1. initialize from the network bootstrap manifest and submit create-validator plus register-consensus-endpoint
  2. start the candidate node in its initial observer role
  3. remain publicly reachable for the admission epoch
  4. enter the active set when the validator-admission module rotates

What partners need from RP1

Before a partner can join cleanly, RP1 should provide:

Item Why it matters
Release-matched rp1d artifact Partners should not need the private source tree
Stable bootstrap.json URL Shared genesis, chain ID, RPC/REST, and core consensus peers
Chain ID Currently chain-1 for the public testnet
Funding path for operator accounts Self-delegation and fees
Self-delegation expectation Default join flow uses 100urp1 unless overridden
Support contact Reachability and admission failures need an escalation path

Set the canonical bootstrap variable before using the handoff values or commands:

Use the canonical public bootstrap manifest for node initialization:

export RP1_BOOTSTRAP_URL=https://testnet.chain.rp.one/bootstrap.json

Recommended handoff values:

Network: RP1 public / shared testnet
Chain ID: chain-1
Client RPC: https://testnet.rpc.rp.one
Client REST: https://testnet.rest.rp.one
Bootstrap manifest: $RP1_BOOTSTRAP_URL
Software status: https://github.com/RP-ONE/rp1-releases
Self-delegation: 100urp1 unless RP1 publishes a different threshold
Consensus port: public QUIC endpoint, commonly 26656

The bootstrap manifest is public and live. Do not invent peers, genesis, or a second admission process.

Software availability

Official rp1d 0.22.0 is available for Linux x86-64 from RP-ONE/rp1-releases. The release includes SHA-256 checksums, a keyless Sigstore bundle, provenance, the binary licence, and third-party notices. Follow the release repository verification steps before installation. RP1’s chain source remains private.

Ordinary testnet joining does not require access to the private chain source. Install only the official artifact identified through the release-status boundary above.

Partner host requirements

  • Persistent disk for the node home
  • Publicly reachable QUIC consensus endpoint
  • Stable public hostname or IP for --consensus.advertise-addr
  • Ability to keep the process online across at least one full admission epoch
  • Separate operator key material from application/RPC credentials

Binary-based join flow

1. Install the release-matched rp1d

Download and verify the release before installing it:

Install rp1d 0.22.0bash
version=0.22.0
release_url="https://github.com/RP-ONE/rp1-releases/releases/download/${version}"

curl -fLO "${release_url}/rp1d_linux_amd64.tar.gz"
curl -fLO "${release_url}/SHA256SUMS"
grep 'rp1d_linux_amd64.tar.gz' SHA256SUMS | sha256sum --check

tar -xzf rp1d_linux_amd64.tar.gz
sudo install -m 0755 rp1d /usr/local/bin/rp1d

The release repository documents full Sigstore verification. Confirm the installed version before continuing:

Check binary versionbash
rp1d version

2. Create the operator key

Create operator keybash
rp1d keys add partner-validator \
  --home ~/.rp1-partner \
  --keyring-backend file

Back up the mnemonic offline. Fund the resulting rp1... address with enough urp1 for self-delegation and fees.

3. Initialize from bootstrap and submit admission transactions

Join from bootstrapbash
rp1d testnet join \
  --home ~/.rp1-partner \
  --bootstrap-url "${RP1_BOOTSTRAP_URL}" \
  --consensus.listen-addr 0.0.0.0:26656 \
  --consensus.advertise-addr partner-1.example.com:26656 \
  --from partner-validator \
  --keyring-backend file \
  --moniker partner-1 \
  --self-delegation 100urp1

What this does:

  • writes the shared genesis
  • configures the node as an observer
  • seeds core consensus peers from the bootstrap manifest
  • creates validator key material if needed
  • when --from is set, broadcasts:
    • MsgCreateValidator
    • MsgRegisterConsensusEndpoint

If you omit --from, the command only prepares the home directory so you can inspect config before submitting transactions.

4. Start the node

Start candidate nodebash
rp1d start --home ~/.rp1-partner

rp1d start launches the custom DAG consensus path around the Cosmos SDK application. It is not a vanilla CometBFT block-production daemon.

How admission into the validator group works

For a live DAG testnet, RP1 does not normally rebuild genesis or hand-edit a static validator list for each new partner.

Default admission behavior:

Parameter Default
Epoch length 100
Candidate maturity 1 full epoch
Reachability threshold greater than 2/3
Max active validators 32
Offline eject 2 bad epochs

Lifecycle:

  1. rp1d testnet join --from initializes the observer-role home and submits create-validator plus register-consensus-endpoint
  2. partner starts the candidate node and syncs in its observer role
  3. active validators probe the public QUIC endpoint
  4. vote extensions record reachability evidence
  5. the validator-admission module updates the active set at the epoch boundary
  6. consensus hot-reloads the validator set and peer map

A candidate must stay reachable for the full maturity window. Coming online briefly is not enough.

Readiness checks

Before treating the join as successful:

  1. rp1d status / RPC /status shows chain ID chain-1 and the expected node identity.
  2. The operator account shows the create-validator and endpoint-registration transactions.
  3. The advertised consensus address is reachable from outside the partner network.
  4. The node remains online across the admission epoch.
  5. After activation, the node appears in the live validator set and stays connected to peers.

Also compare a current complete header against a public RPC endpoint before relying on local state.

Troubleshooting

Symptom Likely cause
Join initializes but submits no transactions --from omitted
Join transactions fail immediately unfunded operator account, wrong keyring, or unreachable bootstrap RPC
Candidate never activates public QUIC address wrong, NAT not forwarded, or node offline during the epoch
Node starts but is not useful externally advertised 0.0.0.0, private hostname, or missing bootstrap core peers
Software mismatch approved artifact version does not match the network’s release
Navigation

Type to search…

↑↓ navigate↵ selectEsc close