EVM Compatibility
Overview
Compatibility Levels
1. Binary Compatibility
// This Ethereum contract works identically on OPN Chain
contract Example {
mapping(address => uint256) public balances;
function deposit() public payable {
balances[msg.sender] += msg.value;
}
function withdraw(uint256 amount) public {
require(balances[msg.sender] >= amount, "Insufficient balance");
balances[msg.sender] -= amount;
payable(msg.sender).transfer(amount);
}
}2. API Compatibility
3. Tool Compatibility
Tool
Compatibility
Notes
4. Library Compatibility
Smart Contract Standards
ERC Standards Support
Standard
Description
Support
Example Implementations
Address System
Address Format
Key Derivation
Transaction Format
Transaction Types
Gas Compatibility
Gas Costs
Gas Estimation
Event System
Event Emission
Event Filtering
State Management
Storage Layout
State Access
Precompiled Contracts
Differences from Ethereum
Block Time
Finality Model
Gas Price Stability
Migration Guide
From Ethereum
Testing Compatibility
Best Practices
1. Use Standard Tools
2. Test Thoroughly
3. Monitor Differences
Conclusion
Last updated
