EOSIO™ Strategic Vision
As a contributor to the growth of the EOSIO™ software, Block.one is committed to working with the community to develop a platform that will strengthen and grow the ecosystem. The following are foundational pillars through which we aim to make EOSIO™ the fastest, most scalable, and easiest to use blockchain in the world.
This outline of our vision for EOSIO™ represents directional areas where Block.one strives to continually explore the advancement of the software in close collaboration with the community over the next few years. Areas of interest in this document should not be treated as products with launch dates but instead should be seen as broad areas where we are committed to making continual improvements. As the needs of the community and software platform continue to grow we expect to iterate and prioritize these enhancements to continue making EOSIO™ the most performant blockchain software in the market.
Scalability: more apps, more users
EOSIO™ strives to be one of the most performant blockchains in the world with industry-leading transaction speeds and block confirmation times. We will continue to explore vertical and horizontal scaling solutions to enhance performance.
Block Production:Vertical Scaling
Build state-of-the-art WASM engines to improve smart contract performance
Not all smart contract business logic is easily parallelizable and so it is important to maximise the single threaded performance of executing the WASM code in smart contracts. EOSIOTM has been architected to leverage a variety of WASM engines to deliver phenomenal smart contract execution performance. In addition to WABT, WAVM, etc. we are also exploring support for other state of the art engines, and building our own WASM interpreters with associated JIT compilers to further accelerate WASM performance.
Explore improvement of throughput on multicore machines via multithreading feature enhancements
Smart Contracts are primarily single threaded in business logic execution. We are exploring utilizing multiple cores to speed up processing of transactions without requiring developers to rearchitect their smart contract designs. By analyzing the flow of information as the blockchain is constructed and validated, we have identified sections of the critical path for performance that can safely be processed concurrently. Using this analysis we will continually improve the core software’s ability to leverage modern multicore hardware.
Continual profiling of nodeos to identify targeted areas of improvement
Nodeos has many distinct buckets where execution can be improved: WASM execution, database access, intrinsics handling, other native code, etc. Here we aim to continually profile nodeos to identify areas that can provide the biggest benefit for our efforts in trying to optimize execution in each of those areas.
Explore advanced database technologies to improve flexibility and throughput
Nodeos uses a highly performant database today to maximize throughput and provides the ability to rollback deltas on demand. Here we are exploring advanced database technologies which are not only performant and support deltas but also provide the ability to concurrently handle multiple non-conflicting transactions, provide support for arbitrary length primary keys to enable developers more flexible ways of indexing their data, etc.
Explore blockchain technologies that can provide more cost effective access to scarce resources like RAM
Resource costs are a persistent roadblock to mass adoption and growth of EOSIO blockchains. We will continue to explore innovations, such as REX, that lower the effective cost of operating a blockchain application at scale including options for relieving pressure on critical resources by developing attractive alternatives for specialized use cases.
Explore a variety of Inter-blockchain Communication (IBC) mechanisms (oracle-based, light-client based, etc.) to enable side- and sister-chain based scaling
EOSIO Blockchain was architected to support Inter-blockchain communication to enable practically limitless transaction throughput rates. Here we are exploring several mechanisms to:
- Enable applications to scale by spreading their components to different chains that work together as a whole through IBC
- Enable applications to scale by replicating across many chains that can each handle a subset of user requests
- Enable two or more applications on different chains to intercommunicate
Explore smart contract parallel execution
- Single threaded smart contract execution is constrained by the need to maintain global state. Here we aim to explore memory management techniques to enable multi-threading support for transaction processing without the associated Inter-blockchain communication overhead.
- These memory management techniques can be further extended to scale across clusters of machines running multithreaded processes
Explore convenient layered abstractions for developers to build cross-chain decentralized applications
Enabling developers to architect applications that live on more than one chain but present a unified interface to end-users will require application developers to integrate state across chains, run queries across the tables in the chains, etc. Here we are exploring application developer level abstractions of these concepts to simplify developer experience.
Data Access Scalability
Provide a scalable solution to access data on the blockchain
Querying and reading history and state data from a blockchain continues to be challenging to scale. Here we are designing and building a performant query mechanism implemented in WASM that can enable contract developers to define and expose performant queries for their respective applications. This enables complex queries to be executed server-side, minimizing the back and forth that is currently necessary between client and server. This also enables easier scaling as it requires replicating lightweight query processes instead of replicating memory intensive nodeos processes. Further, this system may also enable inspecting historical state at any given block height.
Developers: better tooling, faster app development
A pillar of the success for EOSIO™ has been the adoption of the platform for application development. Improving the developer experience through new tools and libraries for developers building applications on EOSIO™ based blockchains is an area of continued focus.
Create GUI interfaces to make developer experience smoother
Getting started with developing applications for EOSIO requires familiarity with several command line tools. Here we are developing a graphical user interface that developers can use to launch nodeos, utilize the block explorer to inspect blocks and transactions, utilize the GUI based table explorer to inspect data saved in tables etc. This tool could also allow multiple developers to collaborate around one instance of nodeos making for a better development experience.
Advance the Universal Authenticator Library to make it easy for applications to support a myriad of authenticators used to sign transactions
Today wallets and apps provide their own custom mechanisms to authenticate and sign transactions. End users often have a confusing user experience. The Universal Authenticator Library (UAL) allows app developers to integrate with a variety of authenticators (wallets, app explorers, key managers, etc.) by coding to a single, universal API. It also offers developers an optional, but opinionated, UI layer so that application users get a consistent look and feel independent of the authenticator they are using or the site they are on. Once integrated, apps are able to provide their users with an experience akin to social login or single sign on with very little effort. And as more authenticators are developed, supporting them is as simple as adding a few lines of code.
Develop robust EOSIO™ SDKs for Java and Swift to enable the development of crisp native mobile experiences
Today many EOSIO blockchain applications create a web application that is reused as a responsive web app on mobile devices. The EOSIO Java and Swift libraries allow application developers to create native mobile apps with crisp user interfaces and fast response times.
Build smart contract debuggers and additional tools to make contract development easier
Today smart contract development and debugging requires the use of print statements, however, developers are used to using single-step debugging and inline inspection of variables. Here we are exploring building the tools that enable developers to put breakpoints in their smart contract code and step through their functions while exploring state.
Create an EOSIO™ Testnet integrated with the Developer Portal to enable better onboarding for new developers and easier testing cycles for existing application developers
Today developers test their contracts on their local machine. Here we are building a testing infrastructure that is integrated with our developer documentation and can guide the user through the process of testing on a testnet.
Completely revamp existing developer documentation and migrate to a more scalable platform that better supports EOSIO's growing global ecosystem
We are improving tooling to keep documentation in sync with code changes. Further multi-lingual support for core documentation is being explored. With these changes we anticipate making the lives of non-english speaking developers easier.
Explore tooling to provide increased granularity for smart contract data searches
Here we are exploring updating the state history plugin to track state diffs at a finer level than blocks. For example, tracking state diffs at the level of transactions or even actions. Currently, this is only possible on a per-block basis. This enables developers to review the behavior of smart contracts by inspecting the state changes effected by each action. In addition, this enables developers to build tools that aggregate data needed by their application that is outside of the smart contract state without error prone replication of smart contract logic.
Explore functionality to enable one contract to read another's state through a well defined interface
Contracts today access state data from another contract by directly reading the corresponding table of the other contract. This is fragile because it requires the accessor contract to incorporate the table structure into their code at compile time. It limits the provider contract from making necessary changes to table structures and data. Here we are exploring building infrastructure that will enable contracts to provide read-only functions to access their state which other contracts can synchronously call. This enables contract to change how their data is stored while continuing to satisfy the same accessor interface.
Users: Greater security, less friction
Ease of use for end users will ultimately drive adoption for blockchain applications. Going forward we are committed to advancing the state of the art on how authenticators, applications, and the blockchain interact to provide a safe and convenient user experience.
Enhance the Ricardian Template Toolkit, Application Manifests and Assert contract to help applications provide a consistent and secure experience to users of blockchain applications
A critical component of user security is preventing phishing attacks or bait and switch attacks which trick users into agreeing to something that isn’t actually going to happen as a result of their agreement. Here we are developing the ability to present tamper proof rendering of images, text, attachments, etc. that explains the intended effect of the transaction that the user is signing. This can provide a more secure user experience because this acts as a safeguard against malicious applications leveraging well known contracts to trick users into approving undesired actions.
Support WebAuthn and browser-based signing for blockchain applications
Today blockchain users have a fairly involved process for signing transactions. Here we are exploring WebAuthn, a new W3C compliant standard supported by all leading browsers, to enable phishing resistant browser based signature for blockchain transactions. WebAuthn offers users strong authentication enabled by security keys, built-in fingerprint sensors, etc. and can significantly simplify the user experience.
Allow applications to cover the resource costs for their users (e.g. allowing explicit control over who is billed for CPU/NET etc.)
Today users are expected to own or lease enough tokens to pay for the CPU and NET resources needed to execute transactions. This feature changes the CPU and Network usage billing behavior of EOSIO blockchains to only charge the first authorizer of the transaction. This one change enables entrepreneuring application developers to build alternative models for paying the CPU and Network resource costs that a transaction imposes on the blockchain network. For example, an application can be designed to pay the CPU and Network costs of their users but only for transactions by the user that solely interact with the application’s services.
Explore creating decentralized file systems to enable applications to host files accessible by any web browser
A decentralized file storage system could enable applications to publish their user interfaces and any other required data on the blockchain.
Enterprise: Greater flexibility, better compliance
As EOSIO™ blockchain adoption by enterprise level applications continues, we remain committed to delivering protocol upgrades that will enhance the flexibility of consensus protocols and the security, and integrity of the data stored on EOSIO™ blockchains.
Explore high-performance consensus algorithms that can provide faster-finality for enterprise use cases
Time to finality is a critical feature for many applications to ensure that a given block (transaction) will not be forked out. Here we are exploring several high performance consensus algorithms to find the ones with the right characteristics for enterprise needs like fast finality, appropriate fault tolerance characteristics, etc.
Explore how blockchain applications can meet various privacy, copyright, and other regulations (e.g. DMCA, GDPR, etc.) and the needs of enterprise applications
Explore enabling private regions within a blockchain that is accessible only to a subset of blockchain participants to satisfy regulatory needs. In addition we are exploring enabling applications to record data on the blockchain in a manner that allows it to be selectively removed without compromising the integrity of the blockchain e.g. to meet the needs of DMCA.
Explore how businesses can leverage blockchain to create their own tokens without having to deploy a token contract
Enable simple interfaces to reduce the technical knowledge required for a business to quickly deploy and manage their own token
Continue to address the security needs of enterprises including expanding support for hardware keys, contract based sub-account structures to facilitate account recovery, etc.
Today blockchain operators can only use one key at a time to sign blocks. Here we explore options to enable block producers to use multi-sig and hardware keys to better secure their network. We are also exploring key and permission infrastructure to enable enterprises to better protect their users’ accounts from being compromised.