What you can build
- Standard application contracts (ERC-20, ERC-721, escrows, AMMs) with any EVM toolchain.
- Verified, indexed contracts on Stablescan with live event streams through ethers.js.
- Protocol-integrated contracts that call Bank / Distribution / Staking precompiles from Solidity.
- System-transaction listeners that watch for protocol-emitted events (for example, unbonding completions) through standard
eth_getLogs.
How Stable differs
- USDT0 is the gas token.
maxPriorityFeePerGasmust be0. Thevaluefield in native transfers carries USDT0, not ETH. See Work with USDT0 as gas. - USDT0 has a dual role. Contracts that hold native USDT0 can have their balance changed by ERC-20
transferFromorpermit— never mirror native balance in auint256. See USDT0 behavior on Stable. - Precompile addresses are fixed across testnet and mainnet. Burn them into your contract as constants.
Start here
Deploy
Scaffold Foundry, configure Stable, and deploy Counter.
Verify
Upload source to Stablescan with forge verify-contract.
Index
Subscribe to events with ethers.js and backfill historical logs.
Next recommended
Contracts guide index
Full list of contract guides, precompile references, and system module ABIs.
Use system modules
Call Bank / Distribution / Staking from Solidity and ethers.js.
JSON-RPC reference
Which
eth_* and debug_* methods Stable supports.
