All standard Ethereum JSON-RPC methods work out of the box. Existing contracts can be deployed to Tempo without modification in most cases.
What Works Identically
Smart Contracts
Solidity, Vyper, Yul compile to identical bytecode. Deploy contracts without modification.
Development Tools
Foundry, Hardhat, Remix work out of the box. No special configuration needed.
Wallets
MetaMask, Rainbow, WalletConnect connect seamlessly. Add Tempo as a custom network.
JSON-RPC API
All eth_* methods** work identically:
eth_sendTransaction, eth_call, eth_estimateGas, etc.Standard EVM Operations
✅ All EVM opcodes supported (Osaka hardfork set)✅ Contract creation via CREATE and CREATE2
✅ Standard transaction types (0x00, 0x01, 0x02, 0x03)
✅ EIP-1559 fee market (dynamic fees)
✅ EIP-2930 access lists
✅ EIP-7702 authorization lists (with Tempo signatures)
✅ Events and logs with Bloom filters
✅ Standard block structure and headers
✅
eth_call for read-only contract calls✅
eth_estimateGas for gas estimation✅
eth_getLogs for event queries
Tempo-Specific Additions
Tempo extends the EVM with payment-focused features:1. Tempo Transactions (Type 0x76)
Native transaction format with batching, fee sponsorship, and passkeys:Tempo Transactions
Learn about batching, fee sponsorship, and scheduled payments
2. Enshrined Precompiles
Tempo implements critical functionality as protocol-level precompiles:TIP-20 Tokens (0x20c0...)
TIP-20 Tokens (0x20c0...)
ERC-20 compatible tokens with built-in memos, payment lanes, and compliance.Gas savings: ~50k gas per transfer vs 65k+ for standard ERC-20.
TIP-403 Policy Registry
TIP-403 Policy Registry
Shared compliance policies across multiple tokens.
Fee AMM
Fee AMM
Automatic stablecoin conversion for fee payments.Users pay in USDC, validators receive DAI — conversion handled automatically.
Account Keychain
Account Keychain
Protocol-level key management with passkeys, spending limits, and expiry.
Nonce Manager
Nonce Manager
2D nonce tracking for parallel transaction processing.Query nonces per nonce key for out-of-order transaction submission.
Stablecoin DEX
Stablecoin DEX
On-chain order book for stablecoin swaps with limit orders.
3. Fee Market Differences
Fees denominated in USD (stablecoins):- Attodollars (10^-18 USD): Gas price unit
- Microdollars (10^-6 USD): Token unit (TIP-20 uses 6 decimals)
- Conversion:
attodollars / 10^12 = microdollars
Fee conversion: If you specify
feeToken, the Fee AMM automatically converts your payment to the validator’s preferred stablecoin.4. Multi-Signature Support
Tempo supports three signature types natively:secp256k1
Standard Ethereum signatures (65 bytes)
P256
Hardware-backed signing (129 bytes)
WebAuthn
Passkey signatures (variable size)
Key Differences from Ethereum
State Creation Costs (TIP-1000)
Tempo implements elevated storage costs to prevent state bloat:| Operation | Ethereum | Tempo | Change |
|---|---|---|---|
| New state element (SSTORE) | 20,000 gas | 250,000 gas | +12.5x |
| Account creation | 0 gas | 250,000 gas | New cost |
| Contract deployment (per byte) | 200 gas | 1,000 gas | +5x |
| Contract deployment (base) | 32,000 gas | 500,000 gas | +15.6x |
Gas Limits
| Parameter | Ethereum | Tempo | Purpose |
|---|---|---|---|
| Block gas limit | 30M | 500M | Total capacity |
| Transaction gas cap | 30M | 30M | Max per tx |
| Payment lane | N/A | 450M | TIP-20 transfers |
| General lane | N/A | 30M | Smart contracts |
- 500ms block times vs 12s (24x faster)
- Dedicated payment lane for high throughput
- State rent economics prevent bloat despite larger blocks
Block Time
- Ethereum: ~12 seconds
- Tempo: ~500 milliseconds (0.5s)
- Faster transaction confirmation
- More frequent
block.timestampupdates (useful for time-sensitive logic) - Higher block number growth rate
Best Practice: Use
block.timestamp for time-based logic, not block.number. Block numbers grow 24x faster on Tempo.Finality
- Ethereum: ~15 minutes for practical finality (2 epochs)
- Tempo: <1 second (Simplex consensus)
No Beacon Chain / Merge Concepts
Tempo uses Simplex consensus from genesis — there’s no separate consensus layer or beacon chain:- ❌ No beacon chain API
- ❌ No merge transition
- ❌ No execution/consensus layer split
- ✅ Single unified node software
Uncle/Ommer Blocks
Tempo does not have uncle blocks:block.ommersHashalways returns empty hash- No uncle rewards
- Simpler fork choice rule (Simplex BFT)
Contract Migration Guide
Step 1: Review Storage Usage
Identify contracts with heavy storage usage:Step 2: Test Gas Costs
Deploy to Tempo testnet and compare gas usage:Step 3: Update Time-Based Logic
Replaceblock.number with block.timestamp for time checks:
Step 4: Handle Fee Differences
Update gas estimates for user-facing apps:Step 5: Test Signature Handling
If your contract verifies signatures, test with P256/WebAuthn:Tool Compatibility
Foundry
✅ Full support — no configuration changes needed:Hardhat
✅ Full support — add Tempo network to config:Ethers.js / Viem
✅ Full support — use standard provider:Web3.js
✅ Full support:Remix IDE
✅ Full support — use “Injected Provider” with MetaMask connected to Tempo.RPC Differences
Standard Methods (Identical)
All standardeth_* methods work identically:
eth_blockNumber,eth_getBalance,eth_calleth_sendTransaction,eth_sendRawTransactioneth_getTransactionReceipt,eth_getLogseth_estimateGas,eth_gasPrice,eth_maxPriorityFeePerGaseth_getCode,eth_getStorageAt
Tempo Extensions
Additional RPC methods:Transaction Receipts
Tempo receipts include additional fields:Osaka Hardfork Features
Tempo targets the Osaka hardfork EVM specification:EOF (EVM Object Format)
Improved bytecode format with code/data separation and versioning.
Verkle Trees
Efficient state proofs for light clients (future optimization).
Account Abstraction
EIP-7702 authorization lists natively supported (Tempo signatures).
Blob Transactions
EIP-4844 style data availability (adapted for Tempo’s model).
Osaka features may be implemented progressively. Check the Tempo roadmap for current status.
Common Pitfalls
Using block.number for Time
Using block.number for Time
Problem: Blocks are 24x more frequent on Tempo (500ms vs 12s).Solution: Use
block.timestamp for all time-based logic.Hardcoded Gas Estimates
Hardcoded Gas Estimates
Problem: State creation costs differ from Ethereum.Solution: Always use
eth_estimateGas, don’t hardcode gas limits.Assuming Ethereum Fee Market
Assuming Ethereum Fee Market
Problem: Fees are denominated in stablecoins (attodollars), not ETH (gwei).Solution: Display fees in USD, not ETH.
Not Leveraging TIP-20
Not Leveraging TIP-20
Problem: Using custom ERC-20 contracts when TIP-20 would be cheaper.Solution: Use TIP-20 for tokens that need high throughput and low fees.See TIP-20 Token Standard.
Testing Strategy
- Local Development: Use Foundry’s anvil or Hardhat’s node (Ethereum-compatible)
- Integration Testing: Deploy to Tempo testnet and run full test suite
- Gas Profiling: Compare gas costs between Ethereum and Tempo
- Load Testing: Test with Tempo’s higher throughput (500ms blocks)
- Production: Deploy to Tempo mainnet
Migration Checklist
Audit Storage Usage
Identify contracts with heavy SSTORE operations. Calculate new deployment costs.
Further Reading
Quickstart: EVM Compatibility
Practical guide to deploying Ethereum contracts on Tempo
TIP-1000: State Creation Costs
Technical specification of elevated storage pricing
Tempo Transactions
Leverage native batching and fee sponsorship
Smart Contract Development
Complete guide to building on Tempo