This page targets devnet. For a mainnet-alpha RPC node (different
endpoints and build flags), see
Mainnet Alpha Node. Start with the
LAYER Staking Overview if you haven’t read
it yet.
What “running a staking node” means here
There are two separate things that together make you a “validator”:- Run an
rpc-v2node — a follower RPC that syncs from the project’s central sequencer over gRPC and serves Solana-compatible JSON-RPC. This is what you operate as infrastructure. The node binary itself has no built-in staking logic. - Hold a “validator identity” pubkey that the project’s admin has
registered in the
infini-stakeprogram. That on-chain registration is what makes the identity eligible to be delegated to.
Economics callout. Your on-chain income has two parts: rewards on
your own self-delegation, plus the commission (0–100%, in bps) you
take out of other delegators’ rewards. The admin sets your initial
commission at registration; you change it any time via
set_commission
(future rewards only) and withdraw what’s accrued via claim_commission.
Any extra off-chain compensation for running infrastructure is separate.Build the node
The node software lives in the solayer-rpc repository; the required toolchain is pinned in itsrust-toolchain.toml. For devnet, build
without the mainnet feature:
target/release/rpc-v2. The sequencer binary
(target/release/sequencer) is for the project; you don’t run it.
System requirements (rough guidance):
- Linux x86_64 (macOS works for development).
- 8 GB RAM or more (16 GB comfortable).
- 200 GB+ disk for slots/chaindata growth on devnet; consider a dedicated SSD/NVMe.
- Stable public IPv4 if you want other RPC nodes to peer with you (set
--grpc-advertise-addr).
Generate your validator identity keypair
The “validator identity” is a Solana keypair you control. It’s used by the staking program (never by the node binary) for three things:- The admin registers its public key via
register_validator(identity, commission_bps). - You can self-delegate to it from any wallet (using its secret key is convenient but not required — anyone holding the stake token can delegate to this identity).
- It is the only signer allowed to call
set_commission(change your commission rate) andclaim_commission(mint accrued commission to your own token account) — both bound to the keypair by the["validator", identity]PDA seeds, and commission pays out to an ATA this identity owns. So the secret key is required to manage and collect commission, not just convenient.
The node software (
rpc-v2) does not read this keypair. There is no
--identity-keypair flag on rpc-v2. Keep it separate from any node-host
credentials.Run rpc-v2 against the devnet sequencer
Minimal invocation, connecting to the project’s devnet sequencer (devnet-seed-1.solayer.org). Replace <SEQUENCER_PUBKEY> and <YOUR_PUBLIC_IP> with
real values; ask the team for the sequencer pubkey.
--sequencer-grpc-server-addr— primary gRPC upstream for block sync.--sequencer-http-server-addr/--sequencer-rpc-server-addr— snapshot bootstrap and JSON-RPC fallback to the sequencer.--rpc-registry-addrs— registry to register yourself with, comma-separated if you want to point at multiple.--sequencer-pubkey— required; rpc-v2 verifies the sequencer’s finalization signature with this. A mismatch makes the node refuse to finalize blocks.--grpc-listen-addr— where your node serves gRPC sync to downstream subscribers (peers, indexers).--grpc-advertise-addr— the public address you announce to the registry so other nodes can dial you. Set to your public IP/DNS if exposed.--listen-addr— your Solana-compatible JSON-RPC for clients (web3.js, Anchor, etc.).--metric-addr— Prometheus metrics endpoint.--start-slot latest— start tailing from the current tip. Avoidcheckpoint(would need S3 access tos3://solayer-devnet).
Optional: Cassandra indexer + S3
These are not required for a follower that just syncs + serves RPC. They add:--cassandra-hosts host1:9042,host2:9042 --cassandra-replication-factor N— enables indexed historical queries (transaction-by-signature, etc.). Stand up your own ScyllaDB/Cassandra cluster if you need this.--s3-path,--s3-access-key-id(envS3_ACCESS_KEY_ID),--s3-secret-key(envS3_SECRET_KEY),--s3-region— for snapshot/slot backfill from S3. Project-internal on devnet today; skip unless you’ve been given creds.
systemd unit (example)
Verify the node is syncing
JSON-RPCgetSlot should advance:
registry-probe helper binary from the
same repo):
| Symptom | Likely cause |
|---|---|
| Node exits with “signature verification failed” | Wrong --sequencer-pubkey. Re-fetch from the team. |
failed to connect to gRPC | Sequencer host/port unreachable. Check egress to devnet-seed-1.solayer.org:5005. |
| Slot frozen / never advances | Upstream momentarily down, or --start-slot is in the wrong mode. Try latest. |
| Disk fills up | Slots/chaindata grow. Mount a larger volume; rotate logs. |
Get your identity registered as a validator
Validator allowlisting is admin-controlled and off-chain. Once your node is syncing and your identity keypair is ready:-
Contact the project team. Send them:
- Your validator identity pubkey.
- Your node’s
--grpc-advertise-addrso they can verify it’s reachable. - Any operator metadata they ask for (contact, name to display, etc.).
-
Admin runs
register_validator(identity, commission_bps). This creates aValidatorPDA at seeds["validator", identity]withactive = trueand your commission rate set tocommission_bps(basis points, capped atMAX_COMMISSION_BPS = 10000= 100%; otherwise rejected withInvalidCommission). You can change the rate later viaset_commission. -
Verify on-chain. Once registered:
The node binary doesn’t know about — and isn’t notified by — this
registration. It’s purely an on-chain effect.
Self-delegate to start earning
Your on-chain staking income has two parts: rewards on your own self-delegation, plus the commission you take from any other delegators (set by the admin at registration, adjustable viaset_commission, collected via
claim_commission). To earn on your own stake, follow
Delegate LAYER from your validator’s
perspective:
- Acquire LAYER on the L2 (devnet mint in the overview). LAYER is L2-native, so you may already hold it there; if what you hold is the wrapped form on Solana (L1), bridge it back to L2 first.
- Delegate to your own identity pubkey — the
validator_identityyou pass to the delegation PDA is your validator’s pubkey; theowner(signer) can be the same keypair or a different wallet that holds the stake token.
claim to
your wallet whenever you want.
Your commission on other delegators’ stake accrues separately — mint it
to your own token account any time with claim_commission (see the
reference).