At IOST, we have been hard at work for the past year laying the foundation for an ultra-high TPS blockchain infrastructure capable of meeting the security and scalability needs of a decentralized economy. Our mission is to be the underlying architecture for the future of online service providers. On the eve of IOST’s testnet launch, we created an article to explain the 4 key principles of blockchain development that have guided IOST engineers throughout our research and development process.
- Developer tools are an integral part of growing a flourishing developer community
- Clean, readable code and organized documentation simplifies the development process and self-creates an efficient ecosystem
- Both a blockchain and a blockchain development framework are critical to the vitality of a full-featured blockchain system
- The integral values of blockchain technology should be transparent, impartial, immutable and decentralized
1. Developers Tools
Our mission is to increase developer efficiency and simplify the process of shipping infrastructure and products. More often than not, the process of deployment can be a nightmare, and we understand this frustration. We therefore focused on building a suite of fast and reliable blockchain test/automation tools that allow developers to optimize their time spend. We are excited to introduce the result of this process — Rainer.
Rainer: Intelligent Automated Blockchain Testing at Scale
In order to ship code updates to the IOST blockchain — which will be used by our dev community and end users — extensive testing is required to ensure stability and performance. At scale, this process requires checking hundreds of interactions across numerous types of smart contracts and systems for both code integrity and speed. Previously in blockchain development, this has largely been a manual test design process, during which engineers have devoted copious amounts of time and resources to designing test cases.
We’ve identified a better solution and have developed an intelligent software testing tool called Rainer to efficiently automate test cases. As Rainerprocesses and checks code, it builds a comprehensive model of the system it’s testing and harvests testing strategies for subsequent reuse and continuous integration with the help of Ansible and Docker. Our work with Rainerdemonstrates that it is possible to automate much of the necessary time-consuming processes in blockchain development, consequently accelerating the deployment of new blockchain features. Engineers can now test-and-deploy on all nodes with a single click.
Rainer automatically tests, deploys, error-handles, and reports thousands of test cases conducted daily on the IOST testnet. In addition to accelerating the testing process, Rainer has delivered an extremely low false-positive rate. Our engineers have found that more than half of Rainer reports are actionable and result in fixes. In the first few months since its deployment, the technology has allowed engineers to fix issues within hours, and sometimes within minutes of the code being written. Rainer has already had a positive impact on our developer community, aiding the development of new enhancements without compromising stability or performance.
IOST will release Rainer as an open source project in the future. We expect to implement new features of and share Rainer over the next several months.
2. Structure Design With Engineering Excellence
During development, it’s important to consider how to best leverage different functional features to create clean, efficient code. In practice, our engineering team stress the clarity of logic, dependencies and folder structures in their development.
In traditional blockchain solutions, one blockchain layer handles transaction interfacing, while another layer handles low-level data manipulation. The way we have developed this system is by first separating both layers and subsequently grouping all interfacing functionality in one file, while placing all low-level operations into a separate file.
Network events — where parts of the node stop working for a period of time — are often caused by nasty, unexpected bits of coupling. As an example, changing a configuration in a routing layer can cause timeouts in data storage, leading to an overload of certain nodes. You could stare at the source code for routing layer all day and never guess that it was coupled to the node. Coupling is expensive, but some coupling is inevitable, so we tried to be responsive in designing by eliminating any coupling triggered by frequent or likely changes and preserving trivial couplings.
3. Blockchain Development Framework
We believe developers are at their best when developing is an enjoyable and creative experience. The IOST blockchain framework takes the pain out of development by simplifying arduous common tasks used in the majority of blockchain projects. Our framework is very powerful and is designed to be accessible. It provides the modules and tools needed for large decentralized application scenarios. Through a combination of simplicity and innovation, we provide developers everything they need to build full-featured blockchain systems.
Some examples of the benefits that the IOST framework has to offer include:
- Framework with a small bandwidth footprint
- Simple and efficient network routing layer
- Smart contract playground for developers to run smart contracts locally
- Cross API calls for smart contracts
- Robust blockchain monitoring module
- Intelligent and scalable automated blockchain testing
4. Respecting the Values Essential for Blockchain
When looking at the competitive landscape, our team was disappointed to find a long list of projects compromising far too heavily on the qualities that make blockchain special. From day one, blockchain has been presented as a decentralized platform devoid of fraud, censorship, and third-party interference. Sadly, many blockchain projects have deviated from the original vision and fail to uphold true decentralization and immutability. Some examples include Ethereum rushing a “soft fork” comprised of minor changes in the Ethereum blockchain code for the sole purpose of censoring transactions, and EOS forming a centralized judging committee that has the ability to decide what is right and wrong, which completely override the promised immutability of blockchain.
IOST adheres to the quintessential egalitarian values of blockchain technology. We believe in the original intent of building and maintaining a censorship-resistant, trustless and immutable development platform. We aim to achieve universal adoption and utilize decentralization and blockchain technology to cut out middlemen and maximize network value for all parties. Our team is committed to keeping the IOST blockchain open, neutral and immutable.
Anyone is able to participate in every layer of our system. From using our blockchain, to creating a client implementing our open protocol, to contributing to our network. Our rules and our code are open for everyone to see and understand, and no preconditions should or will limit participation.
Anyone participating in blockchain-enabled cooperation does so on an equal footing with all other participants. IOST aims to fundamentally disrupt previous methods of business by creating a self-operated trust network that maximizes network value for all parties. We are a direct challenge to the systems that came before us and aim to create a model which cannot be skewed to favor the few at the expense of the many.
There shall be no changes to the IOST code that violate the properties of immutability, fungibility, or sanctity of the ledger. Transactions or ledger history cannot for any reason be reversed or modified. We are building a truth machine preserving one universally accepted version of history. It’s not possible to change history, and no resources will be wasted on that effort.
It’s been over a year since we started developing the IOST blockchain. On this journey, we have learned so much and are excited to bring the initial product of our hard work to the public. We look forward to sharing more of our insights in future posts and as always will remain true to our 4 key principles.
The IOST testnet will be released on 06/29/2018. I will be giving a thorough walk-through of the IOST testnet in my next post and we will also be launching a game entitled “Lucky Bet” that allows community members to play on the functioning testnet. We look forward to your feedback and hope to which will help us make IOST blockchain better.
Chief Technology Officer
Originally published on Medium.