Expand description

§Steel: The ZK Coprocessor for EVM Apps
“Unbounded EVM computation made simple”
Steel lets Solidity developers effortlessly scale their applications by moving computation offchain without compromising on onchain security. Steel drastically reduces gas costs and this enables previously impossible applications.
Steel pulls state from any EVM chain, performs verifiable computation across multiple blocks offchain, and generates concise execution proofs. Developers simply verify these proofs onchain to access boundless compute, without worrying about gas limits.
** Example **
A single Steel proof has verified a computation equivalent to 30 Ethereum blocks—saving 1.2 billion gas—generated for under $10 and verified onchain for under 300k gas.
§Getting Started with Steel
The recommended place is to start is Steel examples, specifically the ERC20 Counter example.
The create-steel-app script will allow you to set up the erc20-counter example locally in one command:
sh <(curl -fsSL https://raw.githubusercontent.com/boundless-xyz/steel/refs/heads/main/crates/steel/docs/create-steel-app/create-steel-app)This example acts as your skeleton project structure for further development. Once the script is finished, you can run through a test workflow with either local proving or Bonsai proving. The documentation below uses the ERC20-counter example as a guide to explain Steel in detail.
§Documentation
Steel Documentation can be found on the Boundless Docs. risc0-steel also has crate documentation. This documentation covers the core concepts of Steel. After reading, you will understand how Steel creates verifiable EVM execution proofs allowing you to carry out execution off-chain verifiably.
- Introducing Steel 1.0 (blog post)
- What is Steel?
- How does Steel work?
- Steel Commitments
- Steel History
- Steel Events
§Further Reading & Ask Questions
The RISC Zero dev docs are a great place to start to understand the zkVM in detail. If you have any questions, and/or just want to hang out with other builders, please join the RISC Zero Discord.
Re-exports§
pub use account::Account;pub use beacon::BeaconInput;pub use event::Event;pub use history::HistoryInput;pub use alloy;hostpub use revm;
Modules§
- account
- Types related to account queries.
- beacon
- Types related to commitments to the beacon block root.
- config
- Handling different blockchain specifications.
- ethereum
- Type aliases and specifications for Ethereum.
- event
- Types related to event queries.
- history
- Types related to commitments to a historical state.
- host
host - Functionality that is only needed for the host and not the guest.
- serde
- Serde related helpers.
Structs§
- Block
Input - Input committing to the corresponding execution block hash.
- Call
Builder - Represents a prepared EVM contract call, ready for configuration and execution.
- Commitment
- A Solidity struct representing a commitment used for validation within Steel proofs.
- Compose
Input - A generalized input type consisting of a block-based input and a commitment wrapper.
- Contract
- Represents a contract instance for interacting with EVM environments.
- EvmEnv
- Represents the complete execution environment for EVM contract calls.
- Merkle
Trie - A sparse Merkle Patricia trie storing byte values.
- State
Account - Represents an TrieAccount in the account trie.
- StateDb
- A simple MPT-based read-only EVM database implementation.
- Steel
Verifier - Represents a verifier for validating Steel commitments within Steel.
Enums§
- Commitment
Version - Version identifier for a Commitment, indicating the type of claim.
- EvmInput
- The serializable input to derive and validate an EvmEnv from.
Traits§
- Block
Header Commit - A trait linking the block header to a commitment.
- EvmBlock
Header - An EVM abstraction of a block header.
- EvmDatabase
- A database abstraction for the Steel EVM.
- EvmFactory
- Abstracts the creation and configuration of a specific EVM implementation.