Skip to main content

EVM Development

Specter provides full Ethereum Virtual Machine compatibility through the Cosmos SDK EVM module. Any Solidity smart contract that runs on Ethereum will run on Specter without modification.

What's the same as Ethereum

  • Solidity, Vyper, and any EVM-compatible language
  • Standard Ethereum JSON-RPC methods
  • MetaMask, WalletConnect, and all Ethereum wallets
  • Foundry, Hardhat, Remix, and all development frameworks
  • ethers.js, viem, web3.js, and all client libraries
  • OpenZeppelin and all Solidity libraries

What's different

FeatureEthereumSpecter
Chain ID15445 (testnet)
Gas tokenETHGHOST
Block time~12 seconds1–2 seconds
FinalityProbabilistic (~12 min)Instant (BFT)
MaxCodeSize24 KB64 KB
ConsensusProof of StakeCometBFT BFT
Native mint/burnNot possibleVia 0x0808 precompile

64 KB code size limit

Specter uses a custom go-ethereum fork that increases MaxCodeSize from 24 KB to 64 KB. This accommodates the PoseidonT3 library (~55 KB bytecode), which is required for ZK-friendly hashing in smart contracts. Standard contracts are unaffected.

Ghostmint precompile

The precompile at address 0x0808 lets authorized smart contracts mint and burn native GHOST tokens. This is how the Ghost Protocol commit-reveal system works at the consensus layer. See Ghostmint Precompile for details.

Gas price behavior

The Cosmos EVM module may return 0 from eth_gasPrice, but the chain enforces a minimum gas price of 1 gwei. Always set gas price explicitly:

const tx = await contract.someFunction({
gasPrice: 1_000_000_000n, // 1 gwei
});

Dual address format

Specter supports both Ethereum hex addresses and Cosmos Bech32 addresses:

  • Ethereum format: 0x2bBd88eA213c76f2cA3BAeBaA20F3FA9c4B522e7
  • Cosmos format: specter1... (Bech32 with specter prefix)

Both formats refer to the same underlying account. Use the Ethereum format for EVM interactions and the Cosmos format for staking, governance, and IBC operations.

Next steps