file-plus-minusDifferences from Ethereum

Overview

The Seismic EVMarrow-up-right is approximately a superset of the EVM

What's the same

  • Transaction construction and serialization identical to Ethereum (with one new transaction type)

  • Address generation, gas estimation, and signing work the same as Ethereum

  • Almost all RPC methods are identical to reth

  • Standard Solidity bytecode will behave identically on Seismic, with minor exceptions (e.g., SSTORE reverts on shielded slots)

  • Seismic supports all of Ethereum's opcodes & precompiles

  • EIP-1559 transactions follow standard EIP-1559 fee rules. Seismic transactions (type 0x4A) use legacy fee pricing

  • Seismic will produce empty blocks when there are no pending transactions

Key differences

  • Shielded storage: Solidity contracts can store private data on-chain

  • Runs in a TEE: Seismic nodes must run in Trusted Execution Environments

  • Seismic transaction: We added a new transaction type that allows you to encrypt your calldata

EVM Compatibility

Opcodes

  • CLOAD – load shielded data from storage

  • CSTORE – write shielded data to storage

  • TIMESTAMP_MS – get the block timestamp in milliseconds. Note that block.timestamp still returns seconds, matching standard Solidity. Use block.timestamp_ms for millisecond precision

Seismic transaction

The transaction with type 0x4a allows users to encrypt their calldata. These otherwise work just like legacy transactions. We also support the other standard Ethereum transaction types (Legacy, EIP-1559, EIP-2930, EIP-4844, EIP-7702)

Precompiles

All standard Ethereum precompiles are still available. Seismic added 6 new precompiles to our EVM:

Staking

Seismic uses the same staking contract as Ethereum, which is hardcoded into our Genesis block at address 0x00000000219ab540356cbb839cbe05303d7705fa

Block times

We will often produce multiple blocks in the same second, yet Ethereum's block timestamps are expressed in terms of unix seconds. Our solution to this:

  • Block headers and the EVM use timestamps in milliseconds internally

  • In Seismic Solidity, block.timestamp returns unix seconds, just like in standard Solidity. We added block.timestamp_ms which returns unix milliseconds. block.timestamp_seconds is an alias for block.timestamp

RPC compatibility

We support almost every RPC endpoint in Reth, and have added a few more of our own. See the full RPC Methods reference for details.

Seismic-specific methods:

Modified Ethereum methods:

Last updated