English | 中文
Welcome to the official Go implementation of the Ontology blockchain!
Ontology is a high-performance public blockchain project and distributed trust collaboration platform. It is highly customizable and suitable for all kinds of business requirements. The Ontology MainNet was launched on June 30th, 2018.
As a public blockchain project, Ontology is currently maintained by both the Ontology core tech team and community members who can all support you in development. There are many available tools for use for development - SDKs, the SmartX IDE, Ontology blockchain explorer and more.
New features are still being rapidly developed, therefore the master branch may be unstable. Stable versions can be found in the releases section.
- Scalable lightweight universal smart contracts
- Scalable WASM contract support
- Cross-chain interactive protocol
- Multiple encryption algorithms supported
- Highly optimized transaction processing speed
- P2P link layer encryption (optional module)
- Multiple consensus algorithms supported (VBFT/DBFT/RBFT/SBFT/PoW)
- Quick block generation time (1-30 seconds)
Install from Binaries
You can download a stable compiled version of the Ontology node software by either:
- Downloading the latest Ontology binary file with
curl https://dev.ont.io/ontology_install | sh.
- Downloading a specific version from the release section.
Build From Source
- Golang version 1.12 or later
Note that the code in the
master branch may not be stable.
$ git clone https://github.com/ontio/ontology.git $ cd ontology $ make all
After building the source code successfully, you should see two executable programs:
ontology: The primary Ontology node application and CLI.
tools/sigsvr: The Ontology Signature Server,
sigsvr- an RPC server for signing transactions. Detailed documentation can be found here.
The Ontology CLI can run nodes for the MainNet, TestNet and local PrivateNet. Check out the Ontology CLI user guide for a full list of commands.
MainNet Sync Node
You can run an Ontology MainNet node built from the source code with:
./ontology # Linux ./ontology-darwin-amd64 # MacOS start ontology-windows-amd64.exe # Windows
TestNet Sync Node
You can run an Ontology TestNet node built from the source code with:
./ontology --networkid 2 # Linux ./ontology-darwin-amd64 --networkid 2 # MacOS start ontology-windows-amd64.exe --networkid 2 # Windows
The Ontology CLI allows you to run a local PrivateNet on your computer. Before you can run the PrivateNet you will need to create a wallet file. A wallet file named
wallet.dat can be generated by running
./ontology account add -d
To start the PrivateNet built from the source code with:
./ontology --testmode # Linux ./ontology-darwin-amd64 --testmode # MacOS start ontology-windows-amd64.exe --testmode # Windows
Here's an example of the directory structure
$ tree └── ontology ├── ontology └── wallet.dat
Run with Docker
You can run the Ontology node software with Docker.
- Setup Docker on your computer
- You will need the latest version of Docker Desktop.
- Make a Docker image
- In the root directory of the source code, run
make dockerto make an Ontology image.
- Run the Ontology image
- Run the command
docker run ontio/ontologyto start Ontology
- Run the command
docker run -ti ontio/ontologyto start Ontology and allow interactive keyboard input
- If you need to keep the data generated by the image, refer to Docker's data persistence function
- You can add arguments to the Ontology command, such as with
docker run ontio/ontology --networkid 2.
ONT transfer sample
-- from: transfer from； -- to: transfer to； -- amount: ONT amount；
./ontology asset transfer --from=ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48 --to=AaCe8nVkMRABnp5YgEjYZ9E5KYCxks2uce --amount=10
If the asset transfer is successful, the result will display as follows:
Transfer ONT From:ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48 To:AaCe8nVkMRABnp5YgEjYZ9E5KYCxks2uce Amount:10 TxHash:437bff5dee9a1894ad421d55b8c70a2b7f34c574de0225046531e32faa1f94ce
TxHash is the transfer transaction hash, and we can query a transfer result by the TxHash. Due to block time, the transfer transaction will not be executed before the block is generated and added.
If you want to transfer ONG, just add --asset=ong flag.
Note that ONT is an integer and has no decimals, whereas ONG has 9 decimals. For detailed info please read Everything you need to know about ONG.
./ontology asset transfer --from=ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48 --to=ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48 --amount=95.479777254 --asset=ong
If transfer of the asset succeeds, the result will display as follows:
Transfer ONG From:ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48 To:AaCe8nVkMRABnp5YgEjYZ9E5KYCxks2uce Amount:95.479777254 TxHash:e4245d83607e6644c360b6007045017b5c5d89d9f0f5a9c3b37801018f789cc3
Please note, when you use the address of an account, you can use the index or label of the account instead. Index is the sequence number of a particular account in the wallet. The index starts from 1, and the label is the unique alias of an account in the wallet.
./ontology asset transfer --from=1 --to=2 --amount=10
Query transfer status sample
./ontology info status <TxHash>
./ontology info status 10dede8b57ce0b272b4d51ab282aaf0988a4005e980d25bd49685005cc76ba7f
Transaction:transfer success From:AXkDGfr9thEqWmCKpTtQYaazJRwQzH48eC To:AYiToLDT2yZuNs3PZieXcdTpyC5VWQmfaN Amount:10
Query account balance sample
./ontology asset balance <address|index|label>
./ontology asset balance ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48
./ontology asset balance 1
BalanceOf:ARVVxBPGySL56CvSSWfjRVVyZYpNZ7zp48 ONT:989979697 ONG:28165900
For further examples, please refer to the CLI User Guide.
If you have any issues getting setup, open an issue or reach out in the Ontology Discord.
The Ontology source code is available under the LGPL-3.0 license.