EOSIO™ Strategic Vision: Scaling the EOSIO Platform (Part 1 of 4)
July 23rd, 2019
As the EOSIO™ platform continues to evolve, Block.one’s collaboration with the open source community building on EOSIO has become a critical component of the software’s adoption. Recently announced in the EOSIO Strategic Vision, we’ve proposed a foundation based on four core principles of focus: Scalability, Developers, Users, and Enterprises, each with fundamental features which set EOSIO apart. In this first article of a four part series to review each pillar of the Strategic Vision, we’ll take a closer look at Scalability and how we’re taking strides to maximize efficiency across EOSIO based blockchains.
When it comes to mass consumer adoption of blockchain applications, scalability remains one of the greatest focal points. Through continuous research and innovation, our team has strived to develop a robust, efficient, and highly capable software environment that can rapidly scale to meet needs determined by marketplace dynamics. In fact, Bart Wyatt, our Director of Blockchain Development, recently published a byline focused on Blockchain Scalability on Cointelegraph that discusses various interpretations of scalability and why the scale is the most critical component of blockchain’s adoption.
Block Production: Vertical Scaling
Running parallel instances of smart contract business logic isn’t always possible. This factor makes it important to maximize the single threaded performance of executing WASM code in smart contracts. EOSIO has been engineered with this tenet in mind and delivers stellar smart contract performance by leveraging a wide range of WASM engines including WABT, WAVM, and our most recent announcement of EOS VM, a blockchain specific WASM interpreter with associated JIT compilers that further accelerate WASM performance. We are continuing to explore solutions for WASM engines that can rise to the challenge of blockchain technology related needs. Read more about EOS VM in our recent developer preview release announcement.
As far as business logic is concerned, smart contracts are usually single threaded, so they generally process one command at a time. By identifying opportunities in dataflows for risk-free concurrent processing our team is exploring the use of multiple cores to accelerate processing speeds without forcing developers to change builds.
Improvements In Nodeos
Our team observed opportunities to build greater execution efficiency into the platform such as our recently announced EOSVM, a blockchain specific WASM engine, database access, intrinsics handling, and various other EOSIO platform and various other components. In order to maximize the scaling potential of nodeos, the team will be continually profiling each system in order to make the most of our ongoing optimization efforts.
Advanced Database Technologies
The database supporting the current iteration of nodeos has been fine tuned to augment throughput and simultaneously offer the ability to rollback deltas on demand. Future efforts will stay focused on optimizing and integrating similarly performant database solutions capable of concurrently managing multiple non-conflicting transactions and that enable developers greater data indexing flexibility.
Reducing Resource Reliance
Managing finite resources has been a consistent obstacle for blockchain developers with sights set upon mass adoption. Scaling usage of blockchain networks to the performance of traditional systems will require more efficient use of resources like CPU, RAM, and Bandwidth a network will be able to provide. Our team has been hard at work probing possibilities, like resource exchanges and software side solutions, that can reduce the resource load and enable shared resources for companies operating blockchain applications.
Block Production: Horizontal Scaling
Inter-Blockchain Communication Mechanisms
Interoperability across blockchains remains a core facet of the EOSIO Blockchain. By improving the communication across multiple blockchains with a formalized Inter-Blockchain Communication (IBC) protocol, higher transaction throughput rates can be achieved. Our teams are working towards implementing inter-chain mechanisms that provide applications enhanced scalability capacities. One of the methods we are exploring involves scaling by diversifying components across multiple chains that communicate together via a formalized IBC. Another scaling strategy we are considering involves replicating an application across multiple chains to manage user-request overflow. Yet another option we are looking into would be to enable two or more applications across blockchains to intercommunicate in order to handle process loads. We will continue to research and identify other opportunities where cross-chain compatibility enables greater throughput.
Parallel Smart-Contract Execution
Single threaded smart contracts require a constantly maintained global state which can lead to execution constraints and intensive resource utilization to execute contracts. To overcome this state maintenance related drawback, we are exploring advanced memory management techniques that will expand multithreading support to encompass transaction processing, without superfluous cross-chain communication. We believe it is possible to extend such techniques to scale across node assemblies running multi-threaded processes.
In order to provide seamless front-end experiences cross-chain, we are also examining the possibilities for developers to create applications with greater ease that are able to interact with multiple blockchains. Rather than requiring application developers to juggle a series integrations, we’re researching how application developer level abstractions can simplify the back-end integration of such applications.
Data Access Scalability
As the blockchain grows with each authenticated transaction, querying and reading history and state data proves to be a growing challenge. In order to tackle this challenge, we are working on a series of History Tools. WASM-QL implements a client-server architecture to design and execute queries in WASM. This implementation pattern allows contract authors to design and code queries using the same tooling they used to create their contracts and further the client-server architecture also minimizes the back-and-forth required between client and server. Once enabled, this system would make it possible to inspect historical states at any given block height. In addition, since replication in this system is relegated away from nodeos, towards low memory-intensive query processes, it is more conducive to scalability.
EOSIO Specification Repository
The community effort towards building stable, efficient, and scalable EOSIO blockchains remains ongoing and we will continue to provide support and resources. We are continuing to implement various facets of the EOSIO Strategic Vision and during this crucial stage the feedback we receive from researchers, application developers, and other members of the community make an impact. This effort is spearheaded by the Specification Repository, an EOSIO Labs TMinitiative to support greater synergy amongst stakeholders in our growing ecosystem. If interested in getting involved, please review the specifications drafted and provide feedback directly in GitHub as we work through the implementation of these features in EOSIO.
As always, Block.one’s commitment to incorporate community feedback into EOSIO remains unwavering. The input from each ecosystem participant provides us valuable insights that essentially inform the growth and help set the pace of advancement for the EOSIO platform. If you would like to offer feedback and work more closely with our team to improve EOSIO for developers, you can send our developer relations team an email at firstname.lastname@example.org.
Remember, you can also keep up-to-date with future announcements by subscribing to our mailing list on the new EOSIO website. We are excited to be regularly improving the usability of the software for EOSIO developers as we continue to lay a foundation for the mass adoption of blockchain technology.