A blockchain is a new kind of infrastructure software. From a developer’s perspective you can create an immutable history of transactions on a blockchain. Once those transactions are stored on a blockchain, it is guaranteed that those transactions will not be deleted, modified, or forged without a trace of the action.
A smart contract is a piece of code that can execute on a blockchain and keep the state of contract execution as a part of the immutable history of that blockchain instance. Therefore, developers can rely on that blockchain as a trusted computation environment in which inputs, execution, and the results of a smart contract are independent and free of outside influence. This addition opens up all kinds of new possibilities for developers.
EOSIO is software that introduces a blockchain architecture designed to enable vertical and horizontal scaling of decentralized applications (the “EOSIO Software”) and can be used to launch private and public blockchain networks. This is achieved through an operating system-like construct upon which applications can be built. The software provides accounts, authentication, databases, asynchronous communication, and the scheduling of applications across multiple CPU cores and/or clusters. The resulting technology is a blockchain architecture that has the potential to scale to millions of transactions per second, eliminates user fees, and allows for quick and easy deployment of decentralized applications.
EOSIO uses C++ as the smart contract programming language. Given C++ is a popular programming language among developers around the world, any developer who is familiar with C++ is not required to learn a new programming language to pick up EOSIO’s APIs, which will be covered in this onboarding series. Once familiarity with EOSIO’s APIs has been achieved, a developer will be able to program EOSIO smart contracts using canonical C++ code constructs.
On top of EOSIO core layer, a WebAssembly (WASM) virtual machine executes smart contract code. The WASM standard is also used by other internet infrastructure software developed by Google, Microsoft, Apple, and others. The design choice of using WASM enables EOSIO to re-use optimized and battle-tested compilers and toolchains which are being maintained and improved by a broader community. In addition, adopting WASM standard also makes it easier for compiler developers to port other programming languages onto EOSIO.
EOSIO is designed for achieving high transaction throughputs. Using the consensus mechanism of Delegated Proof of Stake (DPOS), an EOSIO blockchain network does not need to wait for all nodes to complete a transaction to achieve finality. This enables much higher transaction throughput when compared to other consensus mechanisms.
To facilitate good user experience, EOSIO is designed to have low latency for transaction confirmation so that applications built by developers can compete with non-blockchain, centralized, alternatives.
Applications built on EOSIO can adopt a freemium model in which users are not required to pay for the cost of infrastructure. A user does not have to pay a fee to transact. EOSIO blockchains are unique in that the infrastructure resource is regulated by a staking mechanism. Infrastructure resource is based on token staked in ratio to the total available resource and is fixed once tokens have been staked. This means that the infrastructure resource is not affected by the price movement of a token of a particular EOSIO based blockchain network after the token has been staked.
EOSIO has a comprehensive permission system for creating custom permission schemata for various use cases. For instance, you can create custom permission and use it to protect one particular feature of a smart contract. You can also split the authorities necessary to invoke a smart contract function across multiple accounts with different authority weights. This comprehensive permission system allows developers to build a permissioned application on top of a flexible infrastructure without having to reinvent the wheel.
Applications deployed on EOSIO based blockchains are upgradeable. This means developers can deploy code fix, add features, and/or change application logic, as long as sufficient authority is provided. As a developer, you can iterate your application without the risk of being locked-in to a mistake or bug permanently. It is also possible, however, to deploy smart contracts that cannot be modified on EOSIO based blockchains. These decisions are at the discretion of developers rather than restricted by the protocol.
With DPOS as the consensus mechanism, EOSIO consumes much less energy to validate transactions and secure a blockchain compared to other consensus algorithms
The resource allocation and governance mechanism of any EOSIO based blockchain are programmable via smart contracts. Developers only need to modify the system smart contracts to change resource allocation and governance rules of an EOSIO blockchain. On-chain governance becomes much simpler when using system smart contracts, as the base layer code does not have to be modified for change to take place on the blockchain.
A typical interaction with the EOSIO blockchain.
EOSIO.CDT is a toolchain for WebAssembly (WASM) and set of tools to facilitate contract writing for the EOSIO platform. In addition to being a general purpose WebAssembly toolchain, EOSIO specific optimizations are available to support building EOSIO smart contracts. This new toolchain is built around Clang 7, which means that EOSIO.CDT has the most current optimizations and analyses from LLVM. However, as the WASM target is still considered experimental, some optimizations are not available or incomplete.
Nodeos is the core EOSIO node daemon. Plugins can be used to configure nodeos to execute with various features. Nodeos handles all peer-to-peer networking, contract code scheduling, and the blockchain data persistence layer. For development environments, nodeos can also be used to set up a single node blockchain network.
Keosd is a key manager for EOSIO accounts that comes with EOSIO.
Cleos is a command-line tool which let developers interact nodeos as well as deploy, test EOSIO smart contracts.
A typical user's interaction with an EOSIO dApp.
Demux is a reference implementation of a backend infrastructure pattern which can be used to route blockchain events from an EOSIO based blockchain to queryable datastores, or also, to trigger side effects.