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:
- initialize from the network bootstrap manifest and submit
create-validatorplusregister-consensus-endpoint - start the candidate node in its initial observer role
- remain publicly reachable for the admission epoch
- 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.jsonRecommended 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 26656The 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:
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/rp1dThe release repository documents full Sigstore verification. Confirm the installed version before continuing:
rp1d version2. Create the operator key
rp1d keys add partner-validator \
--home ~/.rp1-partner \
--keyring-backend fileBack 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
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 100urp1What 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
--fromis set, broadcasts:MsgCreateValidatorMsgRegisterConsensusEndpoint
If you omit --from, the command only prepares the home directory so you can inspect config before submitting transactions.
4. Start the node
rp1d start --home ~/.rp1-partnerrp1d 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:
rp1d testnet join --frominitializes the observer-role home and submits create-validator plus register-consensus-endpoint- partner starts the candidate node and syncs in its observer role
- active validators probe the public QUIC endpoint
- vote extensions record reachability evidence
- the validator-admission module updates the active set at the epoch boundary
- 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:
rp1d status/ RPC/statusshows chain IDchain-1and the expected node identity.- The operator account shows the create-validator and endpoint-registration transactions.
- The advertised consensus address is reachable from outside the partner network.
- The node remains online across the admission epoch.
- 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 |