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.

hero_strategic_vision

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 intend to make 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. Scroll down for an overview and continue reading about Scalability in our latest article on the EOSIO Strategic Vision.

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. EOSIO 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.  

Horizontal Scaling

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. Scroll down for an overview and continue reading about Developers in our latest article on the EOSIO Strategic Vision.

Create Graphical User Interfaces (GUI) to make the 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 intend to advance the state of the art on how authenticators, applications, and the blockchain interact to provide a safe and convenient user experience. Scroll down for an overview and continue reading about Users in our latest article on the EOSIO Strategic Vision.

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. Scroll down for an overview and continue reading about Enterprise in our latest article on the EOSIO Strategic Vision.

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.