æternity Documentation Hub
AeternityGitHub
  • æternity Hub
  • Developer Documentation
  • Welcome to æternity documentation
  • Getting Started
    • What is æternity?
    • How to Use Aeternity
  • æternity core concepts
    • Introduction
    • æternity Protocol
      • æternity Coin
      • Fast Æternity Transaction Engine (FATE VM)
      • æternity Nodes
        • Node architecture
        • Node types
        • Node Roles
      • Transactions
        • Types of transactions
        • Transaction Lifecycle
        • Transaction Fees
        • Meta-transactions and Generalized Accounts
        • State Channel Transactions
      • Networks
      • Consensus Mechanisms
        • Next Generation Nakamoto Consensus (Bitcoin-NG)
        • Cuckoo Cycle Proof of Work
        • Hyperchains and Delegated Proof of Stake
        • Governance and Weighted Coin Voting
      • State Channels
      • Oracles
      • Aeternity Naming System (AENS)
    • Hyperchains
      • Hyperchains Whitepaper
    • Aeternity Governance
    • Aeternity Foundation
  • aeternity user tools and services
    • Introduction
    • Run an æternity node
    • Hyperchains web app
    • Hyperchains Bridge app
    • Mine aeternity coin
    • Superhero DEX
    • Superhero Wallet
    • ærc Bridge
    • Make an NFT
    • aepps: decentralized applications on æternity
    • æScan: æternity blockchain explorer
  • æternity Developer tools
    • Quick Start Guide
      • Development Environment Setup
      • Essential Tools Overview
      • Æternity Stack
      • First Steps in Development
    • Protocol
      • Core Protocol Components
        • æternity Consensus Protocol
        • Generalized Accounts
        • Smart Contracts
          • FATE VM
          • Smart contract languages
            • æternity Sophia Language
              • In-Depth Overview
              • Sophia Compiler
              • Sophia Visual Studio
              • Sophia http
              • æREPL
            • Solidity
          • Contract Transactions
        • State Channels
        • Oracles
      • Network Layer
        • Nodes
          • Node Documentation
          • Node API Reference
        • Sync
        • Gossip
        • Stratum
      • Utility Features
        • æternity Naming System (AENS)
        • Seralization Formats
    • æternity Sophia Language
      • In-Depth Overview
      • Sophia Compiler
      • Sophia Visual Studio
      • Sophia http
      • æREPL
    • Development Infrastructure
      • CLIs
      • SDKs and APIs
        • Javascript/Typescript SDK
        • Java SDK
        • Outdated SDKs
        • APIs
          • Node API reference
      • Middleware
      • Testing and Deployment
        • æproject
        • Testnet
          • Localnet
          • Faucet
        • Testnets and Faucet
    • Token Standards
      • æternity token standards
        • AEXs: Aeternity Expansions
        • AEX-1
        • AEX-9
        • AEX-141
    • Aepps: Building apps on Aeternity
      • Boiler Plates
        • Angular Boiler Plate
        • React JS BoilerPlate
        • Vue BoilerPlate
      • Æpp architecture
      • Implementation Guidelines
      • Reference æpps
        • Case Studies
        • Code Examples
        • Aeternity Graffiti
    • Data and analytics
      • æScan
    • ÆRC Bridge
  • Hyperchains
    • Hyperchains Development Guide
    • Hyperchains Bridge
Powered by GitBook
On this page
  • Understanding the FATE VM: A Secure and Efficient Engine for æternity Smart Contracts
  • Built for Security and Efficiency
  • Efficiency through High-Level Instructions
  • Developer Interaction and Benefits
  • Comparison to Other VMs
  • FATE's Role in the æternity Ecosystem

Was this helpful?

Export as PDF
  1. æternity core concepts
  2. æternity Protocol

Fast Æternity Transaction Engine (FATE VM)

FATE VM: faster, safer code

Previousæternity CoinNextæternity Nodes

Last updated 2 days ago

Was this helpful?

Understanding the FATE VM: A Secure and Efficient Engine for æternity Smart Contracts

The Fast Æternity Transaction Engine, or FATE VM, uses a higher level of abstraction and automatically minimizes error with type checking, delivering a simpler, easier, safer programming environment.

The FATE VM is the heart of smart contract execution on the æternity blockchain. Designed specifically for the æternity ecosystem, FATE is a virtual machine, an execution engine that provides a secure and controlled environment for running smart contracts. Unlike traditional byte-code virtual machines found on other blockchains, FATE operates directly on the state tree of the æternity blockchain, providing a highly integrated and efficient approach.

Built for Security and Efficiency

FATE prioritizes both security and efficiency in its design and implementation. The VM utilizes a high-level instruction set, enabling concise and understandable contract code. Each operation in FATE is typed, meaning that any type mismatch results in an exception, reverting any changes and preventing potential vulnerabilities. This strict type checking enhances the security of smart contracts by minimizing the risk of unexpected behavior.

Furthermore, FATE incorporates several features to prevent common smart contract vulnerabilities:

  • Separation of data and control flow: This prevents malicious modification of contract code during execution.

  • Unbounded integer arithmetic: Eliminates the risk of integer overflows, a common vulnerability in other smart contract platforms.

  • Restricted jump destinations: Limits jumps to defined basic blocks, preventing arbitrary code execution and enhancing control flow security.

This focus on security makes FATE a reliable and trustworthy platform for deploying valuable smart contracts.

Efficiency through High-Level Instructions

FATE's use of high-level instructions contributes significantly to its efficiency. These instructions provide direct access to core blockchain functionalities, such as interacting with oracles, managing names in the ÆNS (æternity Naming System), and handling state channels. By directly integrating with these features, FATE eliminates the need for complex workarounds, resulting in smaller contract sizes, faster execution, and lower gas costs.

Developer Interaction and Benefits

Developers interact with FATE primarily through the Sophia programming language. Sophia is a functional smart contract language designed for security and ease of use, seamlessly integrating with FATE. Sophia contracts compile into FATE bytecode, which is then executed on the FATE VM.

FATE's security features benefit developers by minimizing the potential for errors and vulnerabilities during contract development. The efficient execution environment reduces gas costs, making æternity smart contracts more affordable to deploy and use. Furthermore, FATE's tight integration with æternity-specific features, such as oracles and the ÆNS, simplifies the development of complex blockchain applications.

Comparison to Other VMs

FATE distinguishes itself from virtual machines on other blockchains through its specialized design and focus on æternity's unique features. Compared to the Ethereum Virtual Machine (EVM), for instance, FATE contracts tend to be significantly smaller and execute more efficiently, consuming less gas. FATE's security features, such as strict type checking and control flow restrictions, address known vulnerabilities in other VMs, making it a more secure platform for smart contract deployment.

FATE's Role in the æternity Ecosystem

The FATE VM is an essential component of the æternity blockchain. It provides a secure and efficient platform for executing smart contracts, powering a wide range of decentralized applications and enabling the integration of real-world data through oracles. Its specialized design and focus on security make it a robust and reliable engine for building and deploying the next generation of blockchain applications.

Cover

FATE VM Developer Documentation