Becoming a Validator
The first ever Starknet validator survey is now live! Make your voice heard and help improve Starknet and its ecosystem together 🤜🤛 |
Using the Starknet staking contract to stake STRK tokens requires interacting with the stake
function. The stake
function does the following:
-
Locks the specified amount of STRK tokens from the validator’s account into the staking contract.
-
Records the validator’s details, including reward and operational addresses, in the staking contract.
-
If pooling is enabled, deploys a new delegation pool contract associated with the validator.
Subsequently, the validator’s tokens will be locked in the staking contract, and the validator will begin earning rewards based on their stake.
For more information on what happens during the staking process, see Staking Architecture.
-
Validators are required to run full nodes in preparation for the following stages of the protocol. You can use any full node implementation you choose:
-
Juno by Nethermind: juno.nethermind.io/hardware-requirements
-
Pathfinder by Equilibrium: github.com/eqlabs/pathfinder?tab=readme-ov-file#hardware-requirements
-
Madara by Madara Alliance: docs.madara.build/Installation/requirements
-
-
A Starknet-compatible block explorer or CLI tool.
-
Sufficient STRK token balance in your wallet.
For validators who wish to use a secure hardware wallet, the Ledger hardware wallet is supported by both Argent and Braavos wallets.
-
If you are using a block explorer:
-
Navigate to the STRK contract by searching for its address
-
In the contract interface, locate and select the
approve
function.
-
-
Pre-approve the STRK ERC20 contract for the transfer of tokens from your address to the staking contract by invoking its
approve
function with the following parameters:-
In the first parameter (
spender
), enter the staking contract’s address. -
In the second parameter (
amount
), enter the number of STRK tokens you want to stake (note the minimum stake for validators and that STRK has 18 decimals).
-
If you using Starkli as CLI tool, the following example, which approves the STRK contract to transfer 1 STRK to the staking contract on Sepolia, can be used as reference:
|
-
If you are using a block explorer:
-
Navigate to the staking contract by searching for its address.
-
In the contract interface, locate and select the
stake
function.
-
-
Invoke the staking contract’s
stake
function with the following parameters:-
In the first parameter (
reward_address
), enter the address where the rewards will be sent. -
In the second parameter (
operational_address
), enter the address that in the future will be used for block attestations and sequencing. -
In the third parameter (
amount
), enter the number of STRK tokens you want to stake (note the minimum stake for validators and that STRK has 18 decimals). -
In the fourth parameter (
pool_enabled
), enter1
(true) if you wish to enable delegation pooling, otherwise enter0
(false). -
In the fifth parameter (
commission
), enter the commission rate for any delegated staking. The rate should be entered as a percentage with precision, where 10000 represents 100%. For example, to set a 5% commission, you would enter 500.
-
If you are using Starkli as CLI tool, the following example, which stakes 1 STRK with delegation pooling enabled and 1% commission on Sepolia, can be used as reference:
|
-
Register your validator on Karnot’s, Staking Rewards', and Voyager’s dashboards.