arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Welcome

Private by Default. Familiar by Design.

Seismic is an EVM blockchain with native on-chain privacy. Write Solidity. Deploy with Foundry. Interact with Viem. The only difference: your users' data stays private.


hashtag
One letter changes everything

The difference between a public ERC20 and a private SRC20 is one letter:

The s prefix tells the Seismic compiler to shield the underlying value. Observers see 0x00...0 instead of actual balances and amounts. Everything else — the Solidity syntax, the EVM execution model, the deployment flow — stays exactly the same.


hashtag
What you can build

  • Shielded tokens — ERC20s where balances and transfer amounts are hidden from observers

  • Confidential DeFi — AMMs and lending protocols where positions, prices, and liquidation thresholds are shielded

  • Compliant finance — Privacy with built-in access control so regulators can verify without exposing user data


hashtag
3-minute quickstart

Already have Rust and the ?

You just ran shielded contract tests locally. See the for next steps.


hashtag
Find what you need

I want to...
Go to

hashtag
Pre-requisite knowledge

Our documentation assumes some familiarity with blockchain app development. Before getting started, it'll help if you're comfortable with:

If you're new to blockchain app development or need a refresher, we recommend starting out with the tutorial.


hashtag
Work with us

If you might benefit from direct support from the team, please don't hesitate to reach out to [email protected]. We pride ourselves in fast response time.

You can also check out our for the latest updates, or join our community.

// Standard ERC20 — balances visible to everyone
mapping(address => uint256) public balanceOf;

function transfer(address to, uint256 amount) public {
    balanceOf[msg.sender] -= amount;
    balanceOf[to] += amount;
}
// Seismic SRC20 — balances shielded by default
mapping(address => suint256) balanceOf;    // uint256 → suint256

function transfer(address to, suint256 amount) public {  // uint256 → suint256
    balanceOf[msg.sender] -= amount;
    balanceOf[to] += amount;
}

Private voting — On-chain governance where votes are secret until tallied

Learn about shielded types

Integrate a frontend

Deploy to testnet

Understand the transaction lifecycle

Run a node

Understand why Seismic exists

Why Seismic

See how it works under the hood

How Seismic Works

Set up my dev environment

Installation

Run my first shielded contract

Quickstart

Build a complete app step by step

Walnut App Tutorial

Build a shielded ERC20 token

SRC20 Tutorial

Seismic tools installed
full quickstart
Solidityarrow-up-right
Foundryarrow-up-right
Viemarrow-up-right
CryptoZombiesarrow-up-right
X accountarrow-up-right
Discordarrow-up-right
git clone "https://github.com/SeismicSystems/seismic-starter.git"
cd seismic-starter/packages/contracts
sforge test -vv
Shielded Types
Client Libraries
Migrating from Ethereum
Seismic Transaction
Node Operator FAQ