Why Seismic
As shown on the welcome page, shielding a Solidity contract can be as simple as adding an s prefix to your types. But why does that matter?
The transparency problem
Blockchains are public ledgers. Every balance, every transaction, every contract interaction is visible to anyone with a block explorer. This transparency was a design choice -- but it creates real problems:
Front-running and MEV extraction. Bots watch the mempool, see your trade, and sandwich it for profit. On Ethereum, MEV extraction costs users billions annually.
Competitive intelligence leaks. If your protocol holds assets on-chain, competitors can see your treasury, your positions, and your strategy in real time.
Privacy violations for end users. When Alice sends tokens to Bob, everyone can see how much she holds, how much she sent, and build a complete transaction graph linking her activity.
Business logic exposure. Contract state is fully readable. Pricing algorithms, liquidation thresholds, and internal parameters are all public.
Traditional finance operates with confidentiality by default. Public blockchains flip that assumption, and it limits what you can build.
Why existing privacy solutions fall short
Several projects have tried to solve this. None of them let you stay in Solidity.
ZK chains (Aztec, Aleo, Mina)
Require new languages (Noir, Leo, o1js). You leave Solidity, Foundry, and the entire EVM ecosystem behind.
Mixers (Tornado Cash)
Only work for transfers. You can obscure the sender, but contract state is still public. No programmable privacy.
L2 privacy layers
Sacrifice composability. Contracts on the privacy layer cannot natively interact with contracts on the base chain.
Homomorphic encryption (fhEVM)
Computationally expensive. Operations on encrypted data are orders of magnitude slower, limiting what you can practically build.
Each of these approaches forces a tradeoff: learn a new language, accept limited functionality, or live with performance constraints.
The Seismic approach
Seismic solves on-chain privacy with two innovations working together:
Shielded types in the compiler
Seismic extends the Solidity compiler with shielded types: suint, sint, sbool, sbytes, and saddress. The s prefix marks a value as shielded. Under the hood, these compile to CLOAD and CSTORE opcodes (instead of the standard SLOAD/SSTORE), which route data through shielded storage.
No new language. No new programming model. Just a one-letter prefix on the types you already know.
TEE-based execution
Seismic nodes run inside Trusted Execution Environments (TEEs) using Intel TDX. The TEE creates a hardware-enforced boundary: even the node operator cannot read the data being processed. Transactions are encrypted before they hit the network and decrypted only inside the TEE for execution.
Together, these two layers provide privacy at the language level and enforcement at the hardware level.
What does not change
Seismic is designed so that everything around the privacy layer stays familiar:
Same language. Standard Solidity, with shielded types added. No new syntax beyond the
sprefix. Existing Solidity contracts compile and deploy without modification.Same tooling.
sforge,sanvil, andssolcare forks of Foundry'sforge,anvil, andsolc. Your workflow does not change.Same client libraries.
seismic-viemextends Viem.seismic-reactextends Wagmi.seismic-alloyextends Alloy for Rust.seismic_web3extends web3.py for Python.Same standards. ERC20 becomes SRC20. The interface is the same. The deployment flow is the same. The difference is that balances are private.
Same deployment flow. Write, test, deploy. The commands are
sforge build,sforge test,sforge create. If you have deployed to Ethereum, you can deploy to Seismic.
Last updated

