Skip to main content
Sei supports EVM transactions, so it works with Ethereum-based tools and contracts. Transactions are signed messages from an externally owned account (EOA) that trigger state changes on the blockchain.

Transaction lifecycle

On other EVM chains, you need to wait for multiple confirmations. Sei’s consensus mechanism gives immediate transaction finality. After a transaction is included in a block, it cannot be reversed.

Gas mechanics

Gas is a unit of computational work in the EVM. It helps prevent spam and allocate resources efficiently:
Gas requirements for common operations:
  • Simple SEI transfer: 21,000 gas
  • ERC-20 transfer: approximately 45,000 gas
  • Contract deployment: Depends on contract size and complexity
  • Always estimate gas with eth_estimateGas before you send transactions

Transaction structure

EVM transactions on Sei follow the Ethereum transaction format and its standard properties:

Transaction guidelines

  • Use network conditions to estimate appropriate values for maxFeePerGas and maxPriorityFeePerGas.
  • Track and increment nonces correctly to avoid transaction failures.
  • Prefer EIP-1559 transactions (type 2) for more predictable fees.
  • Handle possible transaction failures and revert reasons in your code.
  • Always double-check destination addresses, because transactions cannot be reversed.

Transaction validation

Before Sei accepts an EVM transaction, it performs strict semantic validation of the transaction fields. Sei enforces this validation from v6.5.0 onward. If you construct and sign transactions manually, make sure they are well formed to avoid rejection.
  • Transaction types is the canonical field-level reference. It covers signature-value byte caps and zero-padding rules, access-list entries, and EIP-7702 authorization lists.
  • Differences with Ethereum covers envelope-level restrictions: no Cosmos wrapper fields, canonical protobuf encoding, and whole-block rejection on decode failure.

Receipts for nonce-bumping failed transactions

Some EVM transactions pass basic validation and bump the sender’s nonce, but still fail during state transition. One example is a transaction whose gas limit clears the intrinsic-gas check but falls short of the EIP-7623 floor-data-gas requirement. This can occur in normal operation after Pectra. Because these transactions bump the nonce, they are considered to have happened and therefore produce a receipt. For such failures, Sei writes a synthetic status=0 (failed) receipt at the end of the block. The receipt reports a gasUsed of 0 and an effectiveGasPrice of 0. It also carries a VmError that describes the state-transition reason. eth_getTransactionReceipt returns this failed-transaction receipt instead of null. Sei stores the VmError on its internal receipt record, not in the eth_getTransactionReceipt JSON response. To get it, use the non-standard eth_getVMError method.
Previously, a nonce-bumping transaction that failed during state transition could return null from eth_getTransactionReceipt indefinitely. Clients that polled for a receipt could then hang. Clients should now expect a status=0 receipt for these transactions and treat it as a normal failed-transaction result.

Additional resources

RPC reference

Sei’s EVM RPC endpoints for creating and monitoring transactions

Gas and fees

Learn more about gas calculation, fee estimation, and cost optimization on Sei

Accounts

Externally owned accounts and contract accounts on Sei