Types of smart contracts
Different types of Ontology smart contracts
There are three types of smart contracts with different execution engines that are invoked via a dispatch center:
- 1.Native contracts: Ontology's ONT and ONG contracts that govern all the OEP token protocols and their corresponding functioning.
- 2.NeoVM contracts: Smart contracts that are compiled to AVM bytecode, which is then run on the NeoVM engine. Currently supported in Python and C#.
- 3.WebAssembly (WASM) VM contracts: Smart contracts that are compiled to a portable binary code format that can be read and executed by the WebAssembly engine. Currently supported in Rust and C++.
Let us take a closer look at the flow of control for a smart contract execution cycle.
Once a smart contract has been compiled to AVM bytecode and the stack
opcodeis obtained, the contract is transmitted to the chain along with some relevant information regarding the contract. This is involves a transaction that consumes a certain amount of gas, and this is the state where a contract is considered to be deployed on the chain.
Next, when a smart contract is invoked, the layer dispatch center determines the nature of the contract. The three types of contracts all run on different engines and so the flow of control is transferred to the respective contract layer.
For every subsequent invocation from app calls the same procedure is followed.
Solidity smart contracts that run in an Ethereum Virtual Machine (EVM) environment in the Ethereum network can be also deployed on Ontology. All the same development and testing tools, such as the MetaMask wallet, the web3.js library, Truffle and Hardhat development frameworks, etc. can be used for writing, testing, deploying, and running EVM contracts on the Ontology testnet and mainnet.
Solidity contracts are compiled to bytecode and executed in the form of EVM opcodes.
You are now familiar with what smart contracts are, what they can be used to achieve, and how they are executed on the Ontology platform. Follow the link below to refer to our smart contract development guides.