The past few months have been very exciting for AERGO. We kicked off an extremely successful public token distribution event in anticipation of the upcoming AERGO TGE, we open-sourced LiteTree (a blazing-fast, branchable database engine) and StateTrie (a modified sparse Merkle tree built for high-performance interoperability), and we gave all of you a peek at some of the core foundational open-source practices and values that underpin the AERGO project.
Today, we are excited to announce we are releasing the AERGO Chain Alpha and launching the AERGO Pre-Testnet. We had to delay the release of the Alpha in order to fix some bugs regarding memory usage in high-load situations. To make up for the delay, we will now launch the network right away in the form of a pre-testnet, instead of launching the network in the form of a testnet later this quarter. We are also shipping out some additional features, not originally scheduled to be released alongside the AERGO Chain Alpha. The pre-testnet comes with a block explorer (aergoscan.io) which allows you to monitor the performance and behavior of the network.
Overview (see the Alpha codebase on our GitHub: aergoio)
Original list of features to be released with AERGO Chain Alpha in September:
- Simple dPOS
- AERGO SQL smart contract (LLVM)
- Basic client framework and development environment (other repositories)
List of features released with AERGO Chain Alpha now:
- BFT-dPOS (consensus): Election not integrated. Provides Byzantine fault-tolerance by solving various problems that may occur in dPOS
- AERGO SQL (Lua-jit): A powerful smart contract language providing database functionalities
- Client Ship: Client framework and development environment that provides a package management and testing environment similar to npm (separate article detailing how to use it will be released shortly)
- Client CLI: A command line interface tool, aergocli, for interacting with nodes on the AERGO network
- Browser Wallet (1–2 weeks later): A Chrome extension, like Metamask, which provides an asset transfer wallet
- LiteTree (subproject): Improved SQLite is used to provide DB functionalities with regards to handling data on a ledger. It achieves higher performance through implementing LMDB
- Sparse Merkle Tree (subproject): A fast, space-saving sparse Merkle tree
- Pre-Testnet: Launch the pre-testnet to monitor operation environment with a block explorer (https://aergoscan.io)
Byzantine Fault-Tolerant Delegated Proof-of-Stake (BFT-dPOS) is a fast and reliable consensus algorithm selected to provide performance and quality of service. It is composed of two key elements:
- Block generation method: Stakers select a block producer (BP) node, and each BP generates a block in a predetermined order.
- Presence of a last irreversible block (LIB) to guarantee block finality: when a BP of 2/3 + creates a block after a certain block, the block becomes a proposed LIB (step 1). If the BP of 2/3 concatenates the block, it becomes the LIB (step 2) and this block and all the blocks before this block are final.
The method of determining LIB over two stages is a concept that was not found in dPOS which was used in Bitshares and Steem. It was introduced in EOS recently because it was discovered that the previous LIB decision method may cause problems.
- At present, the number of basic BPs is 23, and the basic block generation cycle is 1 second (you can change them in your private chain.)
- Staking-voting feature is implemented. You can find it through the code and aergocli tool.
- This alpha version does not integrate the voting feature with BP selection (you will see it soon).
AERGO SQL is a canonical smart contract engine that allows for the development of smart contracts supporting SQL, based on Lua. You could use basic syntax and modules provided by Lua, additional modules for blockchain interworking and SQL use, as well as extended syntax for smart contracts. State values can be saved, viewed, or changed using key/value or SQL grammar. Real-time compiler (JIT) technology has been implemented in AERGO SQL to improve performance and charges against computer resources used to perform contracts to prevent attacks against blockchain networks.
We will provide 2 SQL-supporting languages. This is the call-based SQL integrated language. We will release the grammar-based SQL integrated language at a later date.
First, Lua contract language will be released in alpha tag (0.8.0) and SQL (DB feature) will be released in 0.8.1 tag.
Ship (client development framework)
Ship is a tool for developing Lua smart contracts. Ship allows you to conveniently and comfortably develop smart contracts.
Ship offers the following features:
- Project Setup: complete the preparation for development with a simple task.
- Installing packages from remote repositories: packages on GitHub can be installed on local repositories.
- Build: pre-process (combine) the sources within a project to produce output for distribution.
- Unit Test: before uploading to the network, you can verify that the function works as desired.
- Deploy to local repository: install developed projects in your local repository so they can be referenced by other projects.
Client SDK (heraj, herajs, herapy)
The SDK is a tool that allows developers to interact with the AERGO network and develop software.
Client CLI (aergocli)
aergocli is a command line interface tool that allows the developer to interact with nodes that make up the AERGO network. For example, you could look up information about a block the node knows about, create an account, send a transaction, perform a smart contract, and so on.
We are developing a simple wallet as a browser extension which works in a similar way to Metamask. It already supports creating accounts and sending and receiving AERGO tokens. Soon, it will also support other kinds of tokens and interactions with websites. We want to make the experience of interacting with smart contracts as secure and user-friendly as possible. This requires thorough consideration of standards and privacy, so we are giving this a lot of thought and aim to have secure protocols built-in from the start.
Browser Wallet is not included in alpha release. You can see it soon.
LiteTree is critical to providing database functionalities on the blockchain. It’s a modified SQlite engine with branching capabilities that have garnered quite a bit of traction among the developer community. Find more details here.
Sparse Merkle Tree
A modified sparse Merkle tree is used for state data authentication on AERGO. We first implemented a standard SMT which can be found in the aergoio/SMT repository on our GitHub. The standard SMT was then optimized for the AERGO state storage. State data authentication is important for light client state verification and automated sidechain asset transfers using Merkle proofs. Find more details here.
We have officially launched the AERGO pre-testnet. It will operate in the same way as the actual testnet scheduled for launch later in the year. The pre-testnet is conceptually similar to a closed beta.
We have launched the pre-testnet with the following goals in mind:
- Showcase the development progress of AERGO to our partners, clients, and future customers.
- Showcase the current performance and scalability of the AERGO network.
- Allow network access to customers or developers looking to conduct proof of concepts or test the network.
As soon as the pre-testnet stabilizes, we will launch a faucet through which interested developers can receive free pre-testnet AERGO tokens. Note that these tokens can only be used on the pre-testnet and are not convertible. We will release further information about this in a few weeks.
If you are interested in testing the network, please apply for a developer license at [email protected].
Please note that the network can be initialized or hardforked by us as development progresses.
The AERGO block explorer provides:
- A dashboard
- Live information on blocks, transactions
- Real-time calculations on transactions per second/minute/hour
- Details on blocks, transactions, AddressDetail
- Transaction history
You could monitor network status and performance with some statistics on the dashboard. You can connect to us for using the network by clicking on the developers tab.
The AERGO Testnet will go live by the end of Q4 2018. The Testnet will be launched with various policies for block producer selection and many other features. We are very excited to showcase in the near future more of what we’ve been working on behind closed doors. The Mainnet will go live early in 2019.
The release of the AERGO Chain Alpha and the launch of the pre-testnet are major milestones for the AERGO project. With a functional network and sophisticated set of development tools, future customers and our developer community can now begin building on the platform.
This release marks the start of something very special. It’s a step closer to achieving our vision of creating a global network delivering new opportunities for existing organizations and startups: for them to leverage new trust dynamics, improve services, design new business models, and use a reliable distributed networking protocol for many different commercial use cases.
AERGO welcomes anyone to join us along the journey. More than ever: we need developers, partners, technology providers, and supporters to help us. If you are interested, please email us at [email protected] (developers: [email protected]).
Korean version found here.