Hello IoTeX community! June is IoTeX Technology Month, and we have unveiled some of the blockchain and cryptography innovations we have been diligently working on. We published two academic papers on blockchain privacy (DKSAP-IoT) and consensus (Roll-DPoS, to be released end of June), and shared these innovations at some of the leading blockchain conferences around the world. Today, we are excited to conclude IoTeX Technology Month with our second code release: Testnet Alpha (codename “Strive”) !
You can check out the code on our Github now: https://github.com/iotexproject/iotex-core
Detailed instructions for running the Strive code are provided in this README file, and a detailed demo video can also be found here:
IoTeX Testnet Alpha — “Strive”
Strive is named after Ronald Linn Rivest, a cryptography pioneer and an Institute Professor at MIT (EECS, CSAIL). If you haven’t noticed already, “Strive” is a permutation of “Rivest”, just as “StoneVan” is with “Vanstone”, who our first code release was named after.
Rivest is one of the inventors of the RSA algorithm, as well as several symmetric key encryption algorithms and cryptographic hash functions. Naming this release “Strive” is an IOTX token of appreciation to Rivest, who helped paved the way for IoTeX to innovate today.
In our first code release, Testnet Preview (codename “StoneVan”), we introduced basic blockchain features such as transaction and block handling, gossip protocol over P2P network, pluggable consensus framework, and initial remote procedure call (RPC) support. Over the past two months, the IoTeX technology team has made amazing progress in not only enhancing the StoneVan code, but also adding many new in-house features for Strive, including full implementation of our optimized elliptic curve cryptography (ECC) library and Roll-DPoS consensus mechanism. For the full list of features and incremental comparison between StoneVan and Strive, please see the table below:
IoTeX’s Upfront Design Decisions + Strive
As our early followers know, IoTeX is a blockchain project built completely from scratch (i.e., not forking any existing projects), as supporting the future of global IoT on blockchain requires a fundamentally different design and implementation than any existing projects. Those that follow several public blockchain platforms know that all projects must make upfront design decisions and choose innovations to cater to the ultimate use case of their platform. A common “tradeoff triangle” is one introduced by Vitalik, where he says a public blockchain can have two of the following three components: security, scalability, and decentralization of block production.
IoTeX is no different — we certainly make tradeoffs to cater to our ultimate use case of supporting the future of global IoT, where sensitive data (e.g., location of valuable goods) will be exchanged in a rapid manner across many types of devices and stakeholders. However, building a blockchain for IoT requires two other key tradeoff considerations that most public blockchains do not choose to / need to include in their upfront design: privacy and interoperability. Therefore, IoTeX’s upfront design decisions must not only find the appropriate balance of security, scalability, and decentralization, but must also ensure that privacy and interoperability are prioritized. So how does IoTeX do this? We use three key innovations to tackle this challenge:
- Lightweight privacy-preserving techniques: full transaction privacy (i.e., encrypt sender, receiver, value) using lightweight cryptography — fun fact: Raullen (Co-founder) and Xinxin (Head of Cryptography) focused their Ph.D research at UWaterloo on lightweight cryptography!
- Roll-DPoS consensus mechanism: fast consensus and massive throughput with a more decentralized approach than normal DPoS (yellow paper coming on June 30)
- Blockchains-in-blockchain architecture: permissionless root chain which enables cross-chain communication between flexible, interoperable sub-chains of IoT device networks, with ability to add any number of sub-chains for high scalability
Although these innovations are impressive enough as individual features, we don’t see them as standalone components. Instead, we view them collectively as symbiotic and necessary components to support the future of global IoT. Taking security as a given (i.e., a public blockchain simply cannot make major tradeoffs on security), we present our perspectives below on how each of our in-house innovations affects the tradeoffs mentioned earlier:
IoTeX’s long-term vision is to capture the full benefits of each of our key innovations, while minimizing the negative impacts to other components — this is an ambitious goal, which requires fulfilling many complex technology and infrastructure requirements to make this a reality. Although we are still early on our innovation journey, we are excited to release Strive, which shows the initial blueprints of our upfront design decisions coming together: privacy via implementation of elliptic curve cryptography library, scalability and decentralization via full implementation of Roll-DPoS, and interoperability via account-based record keeping to manage sub-chains. By reaching this milestone, we have created a strong foundation for our future work and are one step closer to achieving our goal of connecting the physical world, block by block!
Official Launch of the IoTeX Explorer 1.0
In addition to open sourcing our Strive code, today we are also introducing version 1.0 of the IoTeX Explorer, which you can see running live now on our website: iotexscan.io
The IoTeX Explorer is a front end visualization tool to detail key metrics related to the IoTeX Testnet, as well as to articulate how the Roll-DPoS consensus mechanism and delegate voting process operates. The current code base is run inside docker containers deployed on the digital ocean, where we simulate token transfers and voting across 21 candidates and 7 delegates per epoch, communicating over a P2P network. We are also able to add any number of full nodes and light nodes to the Testnet, but we focus on the candidates and delegates in this visualization tool. For our Testnet, we utilize a “transaction injector” to generate mock transfers of tokens between addresses and votes for the next set of delegates — in other words, the IoTeX Explorer visualizes the block, transfer, and voting history of IoTeX’s Testnet. You can see a detailed demo of the IoTeX Explorer in our Strive demo video here: https://youtu.be/KAw7_H71o7s
The IoTeX Explorer consists of three main sections:
1. Roll-DPoS Consensus Mechanism Display:
The current Strive network is composed of 21 “candidate” nodes, which are represented as white dots on the globe. Every epoch, a subset of these 21 candidates is chosen to be the block producing / verifying delegates for the specific epoch. At all times, 7 of these 21 candidates are highlighted as a colored dot, which represents the current set of “delegates” chosen to produce and verify blocks for this specific epoch. The blinking colored dot represents the specific delegate that is tasked with producing the current block, and the solid dots will verify the blocks. The color of the delegate dots changes for every epoch, representing a new group of delegates.
2. Block, Transaction, and Performance Metrics
This part of the Explorer shows six live metrics, which summarize different components of the IoTeX Testnet. The IoTeX Testnet utilizes a “transaction injector” to create mock transfers and votes, and is reset periodically so that we can run various targeted experiments to identify ways to fine tune our code and optimize performance. As such, the metrics are specific to the current run and are reset periodically as well.:
- Epochs: An epoch is a period where one set of delegates will produce and verify blocks on behalf of the whole network. The size of an epoch (i.e., number of blocks) will be auto-scalable based on the size of the IoTeX network.
- Blocks: The total number of blocks produced and verified in the current run.
- Transfer: Total number of token transfers between nodes.
- Votes: Total number of votes for various delegates.
- Finalized Transaction Rate (FTPS): Total number of actions (transfers + votes) injected into the network per second. The FTPS is toggleable and controlled by IoTeX tech team to better understand Testnet performance.
- Block Building History (BBH): duration (in seconds) of the current run
3. Blocks and Transactions List
This section lists the full set of blocks, transfers, and votes within the IoTeX Testnet. Users are able to click each specific block, transfer, or vote and see supporting details:
- For any block ID, you can check the block details, such as the transfers and votes recorded on this block.
- For any transfer hash, users can see detailed information related to a transfer such as sender, receiver, amount, block ID, and more.
- For any vote hash, users can see detailed information such as voter, votee, block ID, and more
There is also a search bar where you can search for a specific address, transaction, block, or vote. Over the next couple months, we will run comprehensive experiments on our Testnet to further improve the code base and optimize performance. We encourage the community to not only explore this front end visualization, but also the code in our Github that feeds the explorer.
Strive is Amazing — What’s Next?
IoTeX’s next code release, Testnet Beta, is planned to be released in late August 2018. The next phase of IoTeX development will focus on scalability and robustness of our code, and expected features include full support of scripting & Virtual Machine (VM), initial support of cross-chain communication between sub-chains, and a pluggable transportation framework with UDP & TCP support.
In addition to working on Testnet Beta, the IoTeX Technology and R&D teams will be releasing more academic and research papers on not only the theoretical aspects of our innovations, but also the applicable and conceptual aspects. We are also excited to announce some exciting things in relation to business development, partnerships, and community. We pride ourselves on forming meaningful partnerships with developers, small-to-medium size businesses, enterprises, the IoTeX community and the broader blockchain ecosystem, and we look forward to sharing more exciting news very soon.
Code Contributions — We Want Your Help!
The IoTeX-core project is open source and licensed under the Apache License 2.0 — we are thrilled to have the support of contributors outside of the core team! Contributions to help IoTeX reach its full potential, including style/bug fixes, feature recommendations, proposals for schemes/algorithms, and help with documentation, are all welcomed and greatly appreciated. For code contributions, please refer to our Contribution Guidelines for more information. To report issues, please file an issue on our Github page.