Skip to main content
Status: pre-launch. The staking program (infini-stake, ID mi7DC6qnESgL6TWdQn7xJBKqWwv2YiZVeoVuhpXhLvz) is not yet deployed/initialized on devnet. The node-run and bridge steps are executable today; the delegate / claim / unstake flows light up once the program is deployed and initialized. Values that only exist post-launch (live Config values, validator identities, etc.) are marked TBD or as <placeholder>; token/bridge addresses are devnet values.
This section covers how to run a staking node (operator) and how to stake LAYER to a validator (delegator) on the Solayer chain.
The Solayer chain is SVM-compatible — @solana/web3.js, @solana/spl-token, and @coral-xyz/anchor work against the L2 RPC exactly as they do on Solana.

How staking works

  • You stake one SPL tokenLAYER, the stake token. It is both the asset you stake and the asset you earn rewards in. There is no separate reward token.
  • You delegate your tokens to a validator (an operator the project has registered). You can split across several validators; each (you, validator) pair is an independent position.
  • Rewards accrue continuously at the gross APY the admin sets, and are minted directly to your wallet when you claim. No epochs, no manual compounding.
  • Each validator charges a commission (0–100%, set in basis points) on its delegators’ rewards, so your effective APY is apy * (1 - commission). The admin sets a validator’s initial rate at registration; the validator can change it any time via set_commission (only future rewards are affected) and collects it on-chain via claim_commission.
  • Unstaking has a cooldown (7 days by default). You request, wait, then withdraw. The portion in cooldown stops earning immediately.
The staking program (infini-stake) runs on the L2, and it accepts the L2-native LAYER mint. LAYER’s home chain is the L2 — it is a Solayer-native token, not a Solana token bridged in — so if you already hold LAYER on the L2 you can delegate straight away, no bridging needed. Only holders of the wrapped form on Solana (L1) have to bridge it back first. A “validator” in this program is just a registered pubkey on-chain — an identity. The node software (rpc-v2) does not sign anything for the staking program; the admin allowlists who counts as a validator out-of-band. Running a node is the service that earns you a spot on that allowlist.

Lifecycle at a glance

Network endpoints & addresses

The stake token is LAYER, and it is Solayer-L2-native: the L2 mint above is the token’s home, and the L1 mint is only a wrapped representation created by the bridge (its mint authority is the bridge handler PDA). The token/bridge addresses are devnet values — mainnet may differ, and the canonical source of truth once the program is initialized is Config.stake_mint (see Check your position).

Post-launch values (TBD)

These only exist after the staking program is deployed and initialized:
  • Config.stake_mint — expected to be the native L2 LAYER mint above. Whatever you hold or receive on L2 must equal this value, or delegate rejects it. (The L1 mint is only the wrapped form — the program does not accept it.)
  • Validator identity pubkey(s) — registered validators you can delegate to.
The program IDL is already available: infini_stake.json (served from these docs, generated from the program source). You’ll need it for the TypeScript snippets in the Delegate LAYER page.