Skip to main content
Sei precompiles are special smart contracts deployed at fixed addresses. They expose native Sei functionality to EVM applications. You can call them like any standard smart contract, with viem, ethers, or wagmi.
Available precompiles:This page shows Bank, Staking, Governance, Distribution, JSON, and Solo. The other precompiles have their own pages: CosmWasm, Address, Pointer contracts for both pointer precompiles, and P256.
The @sei-js/precompiles package does not export the IBC and Oracle precompiles. IBC is disabled in both directions, and native Oracle queries are retired. Calls to either precompile cannot succeed on live Sei. See IBC is disabled and Oracle Precompile (Retired).
@sei-js/precompiles@3 is ESM-only and matches the Sei Chain v6.6.1 ABIs. Import raw *_PRECOMPILE_ABI constants from the package root, @sei-js/precompiles/precompiles, or @sei-js/precompiles/viem. Import the ethers factories from @sei-js/precompiles/ethers. The package does not expose VIEM_*_PRECOMPILE_ABI aliases. It re-exports the viem sei and seiTestnet definitions and also exports seiLocal (chain ID 713714, http://localhost:8545). The package requires viem 2.55.16 or newer.

Setup

Bank precompile

eth_getBalance returns only the EVM-side SEI balance. The Bank precompile lets you query the native SEI (usei) bank balance for an address:

Staking precompile

Delegate, undelegate, and query staking state:

Governance precompile

Vote on an active governance proposal:

Distribution precompile

Claim staking rewards from a validator:

JSON precompile

Parse JSON data in EVM contracts or dApps. This is useful for oracle responses, NFT metadata, and structured payloads:

Solo precompile

Claim a Solo migration payload. Both functions take the signed payload as bytes and return a boolean:
To claim a single payload instead of everything available to the address, use claimSpecific with the same argument shape.

Common patterns

Error handling

Wrap precompile calls in try/catch and check for specific error codes:

Batch read operations

Fetch multiple precompile values in parallel:

Gas limits

Precompile calls that write state need enough gas. Use estimateContractGas instead of a hard-coded value:
viem

Full working example

This Node.js script delegates SEI and then casts a governance vote:
Run the script:

Next steps

For the full ABI reference and all available functions of each precompile, see these pages: