To learn more about the differences and similarities see Aptos Learn
| Feature | Ethereum | Aptos |
|---|
| Smart Contracts | Solidity, EVM | Move, MoveVM |
| Benefits | Mature, wide adoption | Scalability, low latency, predictable fees |
| Transaction Fees | Variable, can be high | Lower and more predictable |
| Account Addresses | 160-bit | 256-bit |
| Account Structure | Balance in a single field, uses nonce | Modules and resources, uses sequence number |
| Data Storage | Patricia Merkle Trees | Global storage with resources and modules |
| Storage Mindset | Contract-based storage | Account centric mindset for code and data |
| Example Code | ERC-20 | Fungible Asset |
| Caller ID | msg.sender | &signer reference |
| Upgradeability | Proxy patterns | Direct module upgrades |
| Safety & Security | Vulnerable to attacks like reentrancy | Mitigates common vulnerabilities |
| Dispatch Type | Dynamic dispatch | Static dispatch |
| FT Standard | ERC-20 | Coin (legacy) and Fungible Asset |
| NFT Standards | ERC-721, ERC-1155 | Digital Asset |
| Blockchain Interaction | Ethers.js library | Aptos Typescript SDK |
| Solidity | Move (Aptos) |
|---|
| Token Structure | Each token is its own contract. | Every token is a typed Coin or FungibleAsset using a single, reusable contract. |
| Token Standard | Must conform to standards like ERC20; implementations can vary. | Uniform interface and implementation for all tokens. |
| Balance Storage | Balances stored in contract using a mapping structure. | Resource-Oriented Balance: Balances stored as a resource in the user’s account. Resources cannot be arbitrarily created, ensuring integrity of token value. |
| Transfer Mechanism | Tokens can be transferred without receiver’s explicit permission. | Except for specific cases (like AptosCoin), Tokens generally require receiver’s signer authority for transfer. |
- EVM: Known for its flexibility and dynamic dispatch, which allows a wide range of smart contract behaviors. This flexibility, however, can lead to complexities in parallel execution and network operations.
- Move VM: Focuses on safety and efficiency with a more integrated approach between the VM and the programming language. Its data storage model allows for better parallelization, and its static dispatch method enhances security and predictability.
| EVM (Ethereum Virtual Machine) | Move VM (Move Virtual Machine) |
|---|
| Data Storage | Data is stored in the smart contract’s storage space. | Data is stored across smart contracts, user accounts, and objects. |
| Parallelization | Parallel execution is limited due to shared storage space. | More parallel execution enabled due to flexible split storage design. |
| VM and Language Integration | Separate layers for EVM and smart contract languages (e.g., Solidity). | Seamless integration between VM layer and Move language, with native functions written in Rust executable in Move. |
| Critical Network Operations | Implementation of network operations can be complex and less direct. | Critical operations like validator set management natively implemented in Move, allowing for direct execution. |
| Function Calling | Dynamic dispatch allows for arbitrary smart contract calls. | Static dispatch aligns with a focus on security and predictable behavior. |
| Type Safety | Contract types provide a level of type safety. | Module structs and generics in Move offer robust type safety. |
| Transaction Safety | Uses nonces for transaction ordering and safety. | Uses sequence numbers for transaction ordering and safety. |
| Authenticated Storage | Yes, with smart contract storage. | Yes, leveraging Move’s resource model. |
| Object Accessibility | Objects are not globally accessible; bound to smart contract scope. | Guaranteed global accessibility of objects. |