EOS.IO Dawn v2.0 - Pre-Release
Pre-release
EOS.IO Dawn 2.0 is the second pre-release of the EOS.IO SDK (Software Development Kit).
The Dawn series of EOS.IO software releases represent early alpha- and beta-quality software suitable for use by those looking to get a head start on the EOS.IO ecosystem. These releases are focused on providing developer APIs and a productive developer environment.
Table of Contents
- Who This Release is For
- Features Included in this Release
- Differences Between Public and Private Testnets
- Known Open Issues
- Disclaimer
Who This Release is For
Whether you are an experienced C++ developer interested in blockchain or a seasoned blockchain expert, you are welcome to experiment with this second pre-release. Familiarity with Linux/C++ is highly recommended. Experience with smart contracts is not a prerequisite -- you'll get that here.
If you are unfamiliar with both Linux and C++, please wait for a more end-user friendly release. The current release is for experienced developers.
Minimum Configuration
Currently EOS.IO has been tested on Ubuntu 16.10 and Mac OS Sierra. EOS.IO nodes run well on a minimum hardware requirement of Core i7 CPU, 16GB RAM. Some users have reported success with 8GB RAM, but this configuration is not supported at this time.
Features Included in this Release
Note that, as of this release, we are evolving away from the previously released Roadmap. We expect to publish a revised roadmap in Q4, 2017.
General Features
- Configurable block time (previously hard coded at 3 seconds)
- P2P code hardened with improved node sync
- Developer API with standardized coding style
- Wallet to set up and maintain accounts that use the API
- Contract Security and Authorization
- Simple Rate and Database Limiting
- Github repository with tutorials, code, documentation and sample Smart Contracts
- Single-threaded, so expect between 500 to 1000 Transactions Per Second (TPS) on private testnets and standalone deployments
Features Unique to the Public Testnet
- Two (2) second block time
- Simulates the eventual EOS Production environment that will be available mid-2018
- 21 block-producing nodes, 1 per host
- Genesis block for registered EOS token holders
- Developers who do not have tokens in the Genesis block can request them via our Faucet facility. Contact Developer Support via Telegram for further instructions.
- For the 04-Dec-2017 Public Testnet launch, performance is throttled down to 30 transactions per second. This is because there are known attack vectors for which we have unimplemented solutions. For example, compilation of new contracts for the first time can take up to 34ms, which if exploited could cause the network to fragment at transaction rates over 30 TPS. When the solution is implemented this restriction is expected to be lifted for at least some operations.
Programs
- A standalone node eosd that produces blocks and adds them to the blockchain
- A client eosc that provides a command line interface
- eos-walletd provides a client-side local wallet server
- A launcher that configures and optionally starts a local or distributed multi-node testnet
Scripts
- build.sh to install dependencies and build eos
- eoscpp for smart contract developers to build contracts
Example Contracts
- Native contracts,
- native currency
- staking
- producer voting
- code updating
- permission updating
- Example contracts
- dice
- exchange
- simpledb
- social
Documentation
- Virtual machine API
- deferred / inline messaging
- user-local storage for contracts
- 3 built in database types
- Basic developer documentation (at https://eosio.github.io/eos/)
- installation and setup
- build and deployment
- tutorials for blockchain commands
- Doxygen based API reference
Utilities and Other Features
Genesis Block Generator
- We have a tool in pre-release that allows for generation of a custom genesis.json file, i.e. a Genesis Block, that includes our Genesis Snapshot of ERC20 tokens already registered. This tool is not yet supported and you use it at your own risk. Access it at https://eosio.github.io/genesis/
Features Not Included in this Release
Not included in this release are:
- Advanced resource usage and rate limiting
- Inter-blockchain communication
- Hacked account recovery
- These native contracts:
- producer proxy voting
- EOS.IO Storage
- feature upgrade voting (hard forks)
- stake delegation (renting and leasing tokens)
Differences Between Public and Private Testnets
No producer voting in Public Testnet
The public testnet has had producer voting disabled. You can enable this on your private testnet with minor code changes -- look at the tags prior to 01-Dec-2017 for the non-disabled code.
Throttling of Public Testnet
As noted above, at time of release the public testnet is being rate-limited to 30 transactions per second. Private testnets will not be limited in this fashion. This is a configuration setting and code downloaded from GitHub will be unthrottled.
Known Open Issues
Multi-Signature Wallet #867
Multi-sig wallets will not behave correctly in some cases
MongoDB
At the time of release, mongodb was not up yet on the Testnet; this may change very quickly so check in with developer support via the EOS Developer channel on Telegram
Connection to Testnet via eosd
#864
eosc
can connect, but eosd
cannot connect to the Testnet yet
max-clients setting #865
Max-clients parameter is for external eosd
connections and is currently limited to 25; it must be a larger number to support significant numbers of external eosd
s connecting to the Testnet
Genesis file generator #861
- The genesis file generator at https://eosio.github.io/genesis/ omits " EOS" in the liquid balance of new accounts it adds.
- The "initial_timestamp" is set for a time in the future rather than the current time.
- The "initial_parameters" should have numeric values that are UNQUOTED but they are in fact double-quoted.
Launcher creates empty config.ini #842
In some circumstances the launcher generates a config.ini that is empty.
Other open issues
A list of open issues can be found here:
Benchmarking
We have tools that have enabled us to benchmark the code at over 10,000 TPS per second under certain controlled conditions, but it remains too early for anyone to reliably reproduce benchmarks and/or interpret the results for a number of reasons:
- you must operate a multi-node network and push transactions to multiple different nodes
- block production algorithm does not currently time-bound generation which means benchmarks do not properly capture "backlog" or generation bottlenecks
- the HTTP interface is currently a bottleneck in submitting transactions to the network
- the signature verification is not yet multi-threaded
This release is designed to help developers build their applications. It does not provide a robust performance benchmarking toolkit.
Those wishing to attempt their own benchmarking, or who wish to generate traffic on their private testnets for other reasons, may choose to look at the code underlying the eosc benchmark transfer
command, which serves as an example. It was developed internally to simulate user traffic.
Disclaimer
block.one is a software company and is producing the EOS.IO software as free, open source software. This software may enable those who deploy it to launch a blockchain or decentralized applications with the features described above. block.one will not be launching a public blockchain based on the EOS.IO software. It will be the sole responsibility of third parties and the community and those who wish to become block producers to implement the features and/or provide the services described above as they see fit. block.one does not guarantee that anyone will implement such features or provide such services or that the EOS.IO software will be adopted and deployed in any way.
All statements in this document, other than statements of historical facts, including any statements regarding block.one’s business strategy, plans, prospects, developments and objectives are forward looking statements. These statements are only predictions and reflect block.one’s current beliefs and expectations with respect to future events and are based on assumptions and are subject to risk, uncertainties and change at any time. We operate in a rapidly changing environment. New risks emerge from time to time. Given these risks and uncertainties, you are cautioned not to rely on these forward-looking statements. Actual results, performance or events may differ materially from those contained in the forward-looking statements. Some of the factors that could cause actual results, performance or events to differ materially from the forward-looking statements contained herein include, without limitation: market volatility; continued availability of capital, financing and personnel; product acceptance; the commercial success of any new products or technologies; competition; government regulation and laws; and general economic, market or business conditions. Any forward-looking statement made by block.one speaks only as of the date on which it is made and block.one is under no obligation to, and expressly disclaims any obligation to, update or alter its forward-looking statements, whether as a result of new information, subsequent events or otherwise.