IoTeX Mainnet v1.2 — Web3.js for Ethereum Tools on IoTeX & Node/Database Upgrades
During the first quarter of 2021, we saw an overflow of announcements from IoTeX, including new research, partnerships, and ecosystem initiatives. But that just scratches the surface of what the IoTeX core team has been up to. Behind-the-scenes, we have continued aggressive development to enhance the “heart” of the network, iotex-core, the blockchain protocol run by all Delegates and full-nodes that gives life to the entire IoTeX Network.
In this blog, we share the incredible features and tools that have been packaged into our highly anticipated Mainnet v1.2 code release, which was officially released on April 30. IoTeX Delegates will have until May 24 to upgrade their nodes, after which Mainnet v1.2 will be officially activated!
Web3.js Wrapper for Ethereum Tools on IoTeX
IoTeX is an EVM-compatible blockchain that supports Solidity smart contracts, allowing Ethereum Dapps to be easily ported to IoTeX. To make it even easier for Ethereum developers to build/extend products to the IoTeX platform, we are introducing Babel, an Ethereum-node API wrapper that enables IoTeX users/builders to utilize the rich ecosystem of Ethereum tools on IoTeX. This means tools/services like MetaMask, Remix, Truffle, Graph, and more can work with IoTeX by just pointing them to a Babel Endpoint!
Web3.js is a collection of libraries that allows you to interact with a local or remote Ethereum node using HTTP, IPC or WebSocket. Stay tuned for our detailed documentation on how to configure Web3.js to develop DApps using Ethereum tools on the IoTeX Network.
Blockchain Database Management Upgrades
The iotex-core full-node database is now approaching 60GB and is expected to grow with the rapid increase of device + Dapp activity on the network. IoTeX is committed to making our blockchain code as efficient as possible so anyone can afford to operate a full node, or even a block producing Delegate node, without having to spend exorbitant amounts of capital on hardware and storage. Mainnet v1.2 will extend our commitment to open participation with a variety of blockchain database management upgrades.
Multiple database files
Starting this quarter, the IoTeX core team has spent significant time and effort to streamline our blockchain database — with Mainnet v1.2, iotex-core will now split the database in multiple database files with each one containing 1,000,000 blocks. In the long-term, this split will prevent bottlenecks stemming from one single, massive database file and opens up the possibility for faster, incremental synchronization with the network, where a node can selectively download from the most recent database files.
Reduced database file size
Together with storage architecture upgrades with multiple database files, we have overhauled the database file itself by using an improved block storage approach with much better compression. This will bring an estimated improvement of ~30% savings in storage space. Faster syncing + streamlined storage = an amazing node operator experience!
Improved speed when querying the blockchain
We have also been working on an improved transaction indexing scheme in the database. As a result, specific API queries such as pulling all transactions from an address within a certain block range will now get a much faster response.
Node Management & Logs Upgrades
When something bad happens in software, logs can save you. But exploring the logs of a blockchain node (especially for a fast network like IoTeX, with an instantly finalized block every 5 seconds) can be complicated and time-consuming. Extracting the data you need to understand issues can even be impossible simply because of the size of the logs. Mainnet v1.2 fixes this.
Node logs format will support ELK
We will make the lives of node operators easier than ever via improvements to log formats, specifically making them compatible with the ELK stack! This will enable you to pull the logs from your node with the “Beats” agent installed on your node, and send it to the popular Elasticsearch + Kibana servers to analyze these logs, as well as create visualizations for node monitoring, troubleshooting, security analytics, and much more. Best of all, ELK is fully open-source providing great flexibility to deploy/manage ELK.
No More “Zombie” Nodes
Some of you, especially Delegates, may have noticed your node failed to synchronize with the blockchain after losing network connection, even for a short period. For nodes without a robust monitoring system in place, this can lead to the node remaining in a “zombie” state where it is running but not able to synchronize with the blockchain even if the connection is restored. This is particularly dangerous for Delegates, as the node can stop producing blocks.
To avoid this potential issue, we have improved the code of iotex-core such that nodes can now detect such events and re-connect with the p2p network immediately after Internet connection is resumed. This will allow nodes to immediately re-synchronize with the blockchain, greatly reducing the risk of network outages.
What’s Next?
We are excited to bring Mainnet v1.2 to life and evolve the IoTeX Network to the next level. Since our Mainnet v1.1 in August 2020, the IoTeX team has worked diligently for months on our upcoming Mainnet v1.2 release. In addition to Mainnet v1.2, those that follow our Github activity have also seen constant and meaningful upgrades across our ioPay, iotexscan, Pebble Tracker, SDKs, and staking repos — IoTeX is truly firing on all cylinders!
The Mainnet v1.2 code will be published on Friday, April 30 for Delegates to install to their nodes. As a hard-fork code release, Delegates will have until May 24 to upgrade their nodes — follow the IoTeX Developer Twitter for more updates!
In an upcoming code release, IoTeX Mainnet will support the new version v0.6.x of EVM, which enables a multitude of new capabilities for developers, including mandatory “keywords” to make the code more explicit/secure, improvements to semantics and syntax of code, try/catch construct for exceptions handling, explicit conversion from address-to-address payable with the payable(x) instruction, push() for dynamic storage arrays, and much more.
About IoTeX
Founded as an open-source platform in 2017, IoTeX is building the Internet of Trusted Things, an open ecosystem where all “things” — humans, machines, businesses, and DApps — can interact with trust and privacy. Backed by a global team of 30+ top research scientists and engineers, IoTeX combines blockchain, secure hardware, and confidential computing to enable next-gen IoT devices, networks, and economies. IoTeX will empower the future decentralized economy by “connecting the physical world, block by block”.