Skip to main content

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:
ForkStatusNotes
Frontier – IstanbulSupportedAll base opcodes
BerlinSupportedEIP-2929 access lists
LondonSupportedBASEFEE opcode
ShanghaiSupportedPUSH0 opcode
Cancun (partial)PartialBlob opcodes excluded — see below

Tool configuration

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:
OpcodeEIPStatus
BLOBHASHEIP-4844Not supported
BLOBBASEFEEEIP-7516Not 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:
AddressNamePurpose
0x00000000000000000000000000000000000b0001blsPoPAnzeon 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:
AddressName
0x01ecRecover
0x02SHA-256
0x03RIPEMD-160
0x04Identity
0x05ModExp (EIP-198)
0x06ecAdd (EIP-196)
0x07ecMul (EIP-196)
0x08ecPairing (EIP-197)
0x09Blake2f (EIP-152)

Native system contracts

StableNet also includes Go-implemented system contracts that participate in the normal CALL flow:
AddressNamePurpose
0x00000000000000000000000000000000000b0002NativeCoinManagerDirect native balance manipulation (used by NativeCoinAdapter)
0x00000000000000000000000000000000000b0003AccountManagerAccount 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:
BehaviorDetails
Maximum call stack depth1024 (same as Ethereum)
Value transfer restrictionsAnzeon enforces additional destination restrictions on value transfers during CALL execution
Blacklist checksEvery 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