Ethereum to Aptos Cheat Sheet

High Level Overview

Smart ContractsSolidity, EVMMove, MoveVM
BenefitsMature, wide adoptionScalability, low latency, predictable fees
Transaction FeesVariable, can be highLower and more predictable
Account Addresses160-bit256-bit
Account StructureBalance in a single field, uses nonceModules and resources, uses sequence number
Data StoragePatricia Merkle TreesGlobal storage with resources and modules
Storage MindsetContract-based storageAccount centric mindset for code and data
Example CodeERC-20Fungible Asset
Caller IDmsg.sender&signer reference
UpgradeabilityProxy patternsDirect module upgrades
Safety & SecurityVulnerable to attacks like reentrancyMitigates common vulnerabilities
Dispatch TypeDynamic dispatchStatic dispatch
FT StandardERC-20Coin (legacy) and Fungible Asset
NFT StandardsERC-721, ERC-1155Digital Asset
Blockchain InteractionEthers.js libraryAptos Typescript SDK

Comparing Token Standards in Detail

SolidityMove (Aptos)
Token StructureEach token is its own contract.Every token is a typed Coin or FungibleAsset using a single, reusable contract.
Token StandardMust conform to standards like ERC20; implementations can vary.Uniform interface and implementation for all tokens.
Balance StorageBalances 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 MechanismTokens can be transferred without receiver's explicit permission.Except for specific cases (like AptosCoin), Tokens generally require receiver's signer authority for transfer.

Comparing EVM and Move VM in Detail

  • 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 StorageData is stored in the smart contract's storage space.Data is stored across smart contracts, user accounts, and objects.
ParallelizationParallel execution is limited due to shared storage space.More parallel execution enabled due to flexible split storage design.
VM and Language IntegrationSeparate 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 OperationsImplementation of network operations can be complex and less direct.Critical operations like validator set management natively implemented in Move, allowing for direct execution.
Function CallingDynamic dispatch allows for arbitrary smart contract calls.Static dispatch aligns with a focus on security and predictable behavior.
Type SafetyContract types provide a level of type safety.Module structs and generics in Move offer robust type safety.
Transaction SafetyUses nonces for transaction ordering and safety.Uses sequence numbers for transaction ordering and safety.
Authenticated StorageYes, with smart contract storage.Yes, leveraging Move’s resource model.
Object AccessibilityObjects are not globally accessible; bound to smart contract scope.Guaranteed global accessibility of objects.