Skip to main content

Solana AVS Mainnet Guide

info

This document serves as a guide for onboarding as an operator of the AVS for Solana IBC, powered by the Picasso Restaking layer. Operators of this AVS are essentially validators of the previously known 'Guest Blockchain'. Additional information can be found here.

Operator Security Model

The operator set of the AVS will be directed by majority where it is the responsibility of active operator to maintain uptime and sign corresponding payloads of transactions.

Bonding

Joining as a validator will require a bonded stake to keep participation gated from malicious actors easily onboarding. The size of the bond will be 25 SOL.

(Re) Staking

The validator set will be able to accept SOL and liquid staked derivatives of SOL, such as jitoSOL, mSOL, bSOL, LST and edgeSOL to secure the network.

Oracles

The Pyth oracle will be used to access price feeds for LST assets staked to the platform.

Slashing

Slashing functionality will not be included during the initial launch stage. It will be implemented after the network is fully operational and IBC is live in production on Solana.

Rewards

Operators and stakers will receive 40% of transfer fees generated by the IBC transfers to and from Solana. These rewards are pooled globally and distributed automatically to operators and delegators. Each validator has the option to impose a commission on the rewards earned on behalf of the delegators. The fees collected are directed to a global reward pool and a validator proposer-reward pool.

Upon the AVS launch, rewards will not be active until the initiation of IBC on Solana. Initially, the commission rate will be set at a default of 1%, and operators can adjust this rate once rewards are activated. For this reason, MANTIS credits will be awarded to early participants.

Validator Setup

  1. Install the validator CLI using the following command (From validator branch)
cargo install --git https://github.com/composableFi/emulated-light-client

If you have previously installed the binary, use the --force flag.

  1. Check if the validator CLI is installed using the following command. The current version should be returned as a value indicating successful installation.
validator --version
> 0.0.5
  1. Set up the rpc url with your validator keypair using the command below (note that the program ID is already added). Use a custom rpc since the Solana public rpc is not good enough to send transactions and will usually be dropped frequently. Keypair path is the path to your keypair json file. For Example
validator init --rpc-url <RPC_URL> --ws-url <WS_URL> --program-id 2HLLVco5HvwWriNbUhmVwA2pCetRkpgrqwnjcsZdyTKT --keypair-path <KEYPAIR_PATH> -—priority-fees <PRIORITY_FEES>
info

It's recommended to use the same key as your mainnet validator to ensure that you always have enough SOL in your account. However, you can use a different key if you prefer, but make sure you have enough SOL to cover gas fees at all times.

  1. Run the following command to bond 25 SOL or liquid staked SOL token in order to join the network.

The token address can be any one of the whitelisted tokens under the restaking layer. Currently, 25 tokens from: wSOL, bSOL, jitoSOL, mSOL, LST, or edgeSOL are accepted. Validators are free to choose from any of these options as the deposit asset. The addresses are as follows:

  • wSOL: So11111111111111111111111111111111111111112
  • bSOL: bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1
  • jitoSOL: J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn
  • LST: LSTxxxnJzKDFSLr4dUkPcmCf5VyryEqzPLz5j4bpxFp
  • edgeSOL: edge86g9cVz87xcpKpy3J77vbp4wYd9idEV562CCntt
  • mSOL: mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So
Validator stake -a 25000000000 -t <token-address> --rpc-url <RPC_URL> --ws-url <WS_URL> --program-id <PROGRAM_ID> --keypair-path <KEYPAIR_PATH> -—priority-fees 10000
  1. Once the config file is set, run the validator:
validator run -—priority-fees <PRIORITY_FEES>
note

You can even pass any of the arguments which would override the default config set in previous step. These arguments are optional and has higher preference than the default config file. Any of the arguments can be passes and its not neccessary to pass all of them.

validator run --rpc-url <RPC_URL> --ws-url <WS_URL> --program-id 2HLLVco5HvwWriNbUhmVwA2pCetRkpgrqwnjcsZdyTKT --keypair-path <KEYPAIR_PATH> -—priority-fees <PRIORITY_FEES>