Documentation Index
Fetch the complete documentation index at: https://docs.stablenet.network/llms.txt
Use this file to discover all available pages before exploring further.
StableNet is fully EVM-compatible with one exclusion (blob opcodes) and one addition (Anzeon BLS precompile).
Supported instruction set
StableNet uses the Anzeon EVM instruction set, which equals London + Shanghai with partial Cancun support:
| Fork | Status | Notes |
|---|
| Frontier – Istanbul | Supported | All base opcodes |
| Berlin | Supported | EIP-2929 access lists |
| London | Supported | BASEFEE opcode |
| Shanghai | Supported | PUSH0 opcode |
| Cancun (partial) | Partial | Blob opcodes excluded — see below |
Set evmVersion to shanghai in all your tooling. Using cancun causes compilation errors or runtime failures.
Hardhat (hardhat.config.js):
solidity: {
version: "0.8.20",
settings: {
evmVersion: "shanghai",
},
},
Foundry (foundry.toml):
Foundry defaults to shanghai for Solidity 0.8.20+. No change needed unless you explicitly set evm_version in your profile.
Excluded: blob opcodes
The following Cancun opcodes are not supported:
| Opcode | EIP | Status |
|---|
BLOBHASH | EIP-4844 | Not supported |
BLOBBASEFEE | EIP-7516 | Not supported |
Contracts that use these opcodes will revert at runtime. Do not set evmVersion: "cancun" in Solidity compiler settings.
Added: Anzeon precompile
StableNet adds one custom precompile:
| Address | Name | Purpose |
|---|
0x00000000000000000000000000000000000b0001 | blsPoP | Anzeon BLS Proof-of-Possession verification |
This precompile is used internally by the consensus layer. Application contracts do not need to call it directly.
Standard precompiles
All standard EVM precompiles are available at their canonical addresses:
| Address | Name |
|---|
0x01 | ecRecover |
0x02 | SHA-256 |
0x03 | RIPEMD-160 |
0x04 | Identity |
0x05 | ModExp (EIP-198) |
0x06 | ecAdd (EIP-196) |
0x07 | ecMul (EIP-196) |
0x08 | ecPairing (EIP-197) |
0x09 | Blake2f (EIP-152) |
Native system contracts
StableNet also includes Go-implemented system contracts that participate in the normal CALL flow:
| Address | Name | Purpose |
|---|
0x00000000000000000000000000000000000b0002 | NativeCoinManager | Direct native balance manipulation (used by NativeCoinAdapter) |
0x00000000000000000000000000000000000b0003 | AccountManager | Account extra-data management (blacklist, authorized flag) |
These are internal system contracts. Application contracts interact with them indirectly through NativeCoinAdapter.
StableNet-specific behavior
The following behaviors differ from standard Ethereum EVM execution:
| Behavior | Details |
|---|
| Maximum call stack depth | 1024 (same as Ethereum) |
| Value transfer restrictions | Anzeon enforces additional destination restrictions on value transfers during CALL execution |
| Blacklist checks | Every CALL checks the blacklist flag in the sender’s and recipient’s Extra account field — transfers to or from blacklisted addresses revert |
Blacklist status is managed by the GovCouncil contract (0x…1004) and is stored in each account’s Extra field. These checks occur at the EVM level, not the RPC level — a transaction to a blacklisted address will revert even if it passes eth_estimateGas at the time of estimation.
Developer benefits
- All existing Solidity libraries and patterns work without modification
- EIP-2930 access lists and EIP-1559 fees are supported
- Multicall3, OpenZeppelin contracts, and standard tooling work out of the box