We are thrilled to announce our first code release: StoneVan. Now, StoneVan is officially live and open to everyone!
StoneVan is just the start, offering basic features such as transaction and block handling, gossip protocol over a P2P network, a pluggable consensus framework leveraging our innovative R-DPoS scheme, and initial RPC support. Over the next few months, we will iterate on and add more features to StoneVan; the next exciting enhancements will be full R-DPoS with voting support, cross-chain communication, checkpointing, in-house crypto library integration, script, Virtual Machine, and wallet.
IoTeX’s technical staff currently consists of the research team and engineering team. Our dedicated research team is exploring core technologies for IoTeX blockchains — in the short-term, the design and improvement of consensus scheme R-DPoS and fast-commit cross-chain communication are top priorities, while lightweight on-chain privacy and IoT smart contracts are key research topics in the medium-term. Our top-notch engineering team is responsible for architecting and developing the IoTeX blockchains by leveraging perspectives from the research team and utilizing decades of cryptography and distributed systems experience collectively. At a high-level, they write the code, build the systems, perform comprehensive unit- and end-to-end tests, and benchmark on large scale. Both teams are currently small but growing, and we are actively hiring and onboarding talented researchers and engineers.
The development of IoTeX blockchains will be split into two phases: testnet and mainnet. Both phases will have four major releases: Preview, Alpha, Beta and Stable. As the first code release for testnet, StoneVan is a Preview release and will be followed by an Alpha release in a few months. A few months back, our engineering team made the bold and conscious decision to take the hard route and build the IoTeX blockchains from scratch instead of forking other blockchain projects. The rationale behind this decision is that we believe a blockchain for IoT should be fundamentally different in terms of design and implementation. We also believe that by building our own blockchains, we will avoid any potential technical or performance pitfalls from shortcomings in the existing blockchain code. Our engineering team has worked diligently and intelligently for the past few months and we are so excited to share with you our first milestone on our journey to connect the physical world block by block.
Since cryptography is the DNA of IoTeX, we have decided to name each release version after a permutation of the name of a world-class cryptographer. This testnet preview is named after Professor Scott Vanstone(1947–2014), a renowned mathematician and cryptographer at the University of Waterloo and the founder of the cybersecurity company Certicom.
Prof. Scott Vanstone is a pioneer of commercializing elliptic curve cryptography (ECC) in practice. He introduced ECC to several standards organizations, such as ISO/IEC, ANSI, and IEEE, and played an active role in the development of the first ECC standards — ANSI X9.62 and IEEE P1363–2000. In the early 1990’s, he started evangelizing the benefits of ECC to numerous commercial entities, resulting in the adoption of ECC technology by large corporations such as Motorola, Pitney Bowes, and Research in Motion. In addition to playing an instrumental role in commercializing ECC, Prof. Scott Vanstone has made tremendous contributions to the cryptography community by developing innovative ECC algorithms, protocols, and cryptanalysis techniques, which have established a solid foundation for deploying elliptic curve cryptosystems to protect sensitive information in the era of ubiquitous computing, IoT, and cryptocurrency.
IoTeX’s Chief Cryptography Officer, Dr. Xinxin Fan, has had the privilege of working with Prof. Scott Vanstone closely at the University of Waterloo in the field of ECC. This testnet preview is dedicated to the memory of Prof. Scott Vanstone for his lifetime achievements in cryptography.
This initial release has all of the basic features of a blockchain. We categorize key features into four groups: TBC (Transactions, Block & Chain), Network, Consensus, and Testing & Integration, which are shown below:
TBC (Transactions, Block & Chain)
- Bech32-encoded address
- Serialization and deserialization of messages on the wire
- Merkle tree
- Transactions, blocks, and chain
- Transaction pool
- Fast and reliable blockchain storage
- Block sync from network peers
- Basic framework for script and VM
- P2P network over secured transportation layer
- Broadcast and unicast semantics
- Seeding through network configuration
- Rate-limit requests per connection
- Peer discovery
- Large-scale simulation and load test
- Framework for pluggable consensus
- Standalone and NOOP schemes
- Basic implementation of R-DPoS scheme
- Initial RPC support
- Tools for injecting transactions/blocks
Testing & Integration
- Unit test coverage > 50%
- Integration tests
- Staging development to 50 nodes (for internal use only)
We selected golang to develop the IoTeX blockchain, as it is one of the best programming languages which effectively balances rapid development, easy maintenance, and code performance, as well as many other technical advantages. In addition, we use Glide to manage golang dependencies and BoltDB, a fast and reliable database for key/value storage, to persist transaction and block data. According to golang’s convention, each module is implemented as a package and modules interact with each other, as shown in the figure below (please note that the following diagram may go out-of-date quickly as iotex-core code evolves rapidly). Modules are designed to be as decoupled as possible from other modules to allow for thorough testing.
Detailed instructions for running the StoneVan code are provided in this README file. Alternatively, we created a short demo video here if you want to follow along and run iotex-core by yourself.
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 forschemes/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.
Currently, iotex-core is in the initial stage with limited features supported; however, it is subject to rapid change in the coming weeks and months. Please contact us if you intend to run it in production.
The next code release, testnet alpha, is planned to be released in late June 2018. This release is still unnamed, so please help us by suggesting a great codename for it! In testnet alpha, we aim to provide three key components:
- Our in-house implementation of ECC (elliptic curve cryptography), based on a secure elliptic curve that is both lightweight and versatile
- Random beacon and full R-DPoS with voting support, we will release a yellow paper in the coming weeks to disclose more technical details and showcase its advantages compared to other PoS schemes
- Lightweight stealth address, an innovative scheme we designed in-house; the academic paper is currently under peer review and will hopefully be published soon