Staking Precompile
Address: 0x0000000000000000000000000000000000001005
This precompile allows EVM contracts to interact with Sei's staking module, enabling functionalities such as delegating tokens, querying validators, and more.
Functions
Transactions
-
delegate
: Allows a user to delegate a specified amount of tokens to a validator. This function will truncate themsg.value
to 6 decimals to/// Delegates Sei to the specified validator. /// @dev This function truncates msg.value to 6 decimal places for interaction with the staking module /// @param valAddress The Sei address of the validator. /// @return Whether the delegation was successful. function delegate( string memory valAddress, ) payable external returns (bool success);
-
redelegate
: Enables the redelegation of tokens from one validator to another/// Redelegates Sei from one validator to another. /// @dev The amount should be in 6 decimal precision, not 18. 1 SEI = 1_000_000 uSEI /// @param srcAddress The Sei address of the validator to move delegations from. /// @param dstAddress The Sei address of the validator to move delegations to. /// @param amount The amount of Sei to move from srcAddress to dstAddress. /// @return Whether the redelegation was successful. function redelegate( string memory srcAddress, string memory dstAddress, uint256 amount ) external returns (bool success);
-
undelegate
: Provides the functionality for a user to withdraw a specified amount of tokens from a validator/// Undelegates Sei from the specified validator. /// @dev The amount should be in 6 decimal precision, not 18. 1 SEI = 1_000_000 uSEI /// @param valAddress The Sei address of the validator to undelegate from. /// @param amount The amount of Sei to undelegate. /// @return Whether the undelegation was successful. function undelegate( string memory valAddress, uint256 amount ) external returns (bool success);
Queries
delegation
: Queries delegation for a given delegator and validator addressstruct Delegation { Balance balance; DelegationDetails delegation; } struct Balance { uint256 amount; string denom; } struct DelegationDetails { string delegator_address; uint256 shares; uint256 decimals; string validator_address; } /// Queries delegation for a given delegator and validator address. /// @param delegatorAddress The x0 or Sei address of the delegator. /// @param valAddress The Sei address of the validator. /// @return The delegation information. Shares in DelegationDetails are usually returned as decimals. /// To calculate the actual amount, divide the shares by decimals. function delegation( address delegator, string memory valAddress ) external view returns (Delegation delegation);
View the Staking precompile source code and the contract ABI here (opens in a new tab).