Public Testnet Launch: IOST Everest v0.5


Dear IOST community,

IOST’s mission is to become the underlying architecture for the future of online service providers globally. We are laying the foundation for a high TPS blockchain infrastructure, one that meets the security and scalability needs of a decentralized economy.

As a global project that aims to support large scale, practical use-cases for blockchain technology, it is important that we test our product under real world conditions.

As such, we are proud to announce IOST testnet v0.5 ‘Everest’ to the public and extremely excited to continue the journey towards our full mainnet release by the end of the 2018.

Everest brings the IOST blockchain functionally online. There’s still much to be done and we encourage you to play with all of Everest’s features and help contribute to the development of the IOST blockchain. Happy Hacking!

Sincerely,
Terrance Wang — Chief Technology Officer, IOST

Features of Everest v0.5:

  • IOST consensus mechanism: Proof of Believability (PoB) up and running
  • A Faucet that provides testnet tokens to users
  • A Wallet to store and send tokens
  • Ability to run IOST testnet nodes
  • A Blockchain Explorer to display transactions and blocks
  • Build private IOST test networks
  • Smart contracts system featuring key-value pair storage, inter-contract API calls and multiple signatures
  • API oriented smart contracts to quickly write and deploy code
  • A smart contract ‘Playground’ to test smart contracts locally
  • A ‘Lucky Bet’ game running on testnet
  • Real-time monitoring metrics and sending of alerts
  • Deployed on real network environment, running on multiple nodes deployed worldwide in Tokyo, London, Singapore, Mumbai, Frankfurt, Seoul and Montreal

TPS: Throughput Testing Outcome

Our private suite of experiments used virtual machine clusters of around 1700 and 900 slave nodes in Amazon’s Elastic Compute Cloud (EC2) with each single machine equipped with 1.73Ghz Xeon LC-3518, 32 GB memory, 256 KiB L2 Cache. The EC2 instances emulate semi-synthetic and real-world environments with deployment across 9 data centers in Asia, Europe and America.

We deployed our testnet node instances with the PoB consensus engine on up to 6 shards and achieved an average throughput between 7000-8000 transactions per second.

Proof of Believability (PoB) up and running

Our proprietary consensus algorithm, Proof-of-Believability is up and running in a real environment. The source code is available to view in the consensus folder of the IOST GitHub project.

The PoB consensus uses a node’s contribution and stake balance to gain block creation chances by becoming a validator. The algorithm factors in both transactions verified and token balance to determine the contribution to the network.

A challenge faced by traditional PoS consensus mechanisms is the tendency towards centralization. In order to mitigate this risk, after validating a block, the PoB system will automatically clear any remaining Servi token balance.

Servi tokens are implemented this way and with the following desired properties: non-tradable, self-destructive and self-issuing. Each transaction verification counts as 1 Servi and each staked IOST counts as 1, the combination of the 2 is used to efficiently select validators.

Upcoming releases and our plan for next stage

  • We will have 2 or more major updated releases of the IOST testnet before the launch of our mainnet
  • More extensive testing and general infrastructure developments
  • Additional functionality and security checks for smart contracts
  • IOST Virtual Machine optimization
  • PoB running under increasingly diverse environments
  • Increased stability of node life-cycle
  • Integration of Layer 1 and Layer 2 scaling solutions with our research progress
  • More documentation guidelines for developers

How you can try the test network as a non-developer

We have a simple game ready to play on the test network at launch to play with the network and win some real IOST. Anyone can play this game by requesting testnet IOST here and then heading over to the “Lucky Bet” page.

Game Rules

  1. Participants can choose to bet between 1–5 Test IOST on a number of their choice from 0 to 9.
  2. After 100 participants have placed their bets, the network will generate a winning number.
  3. The winning number is determined by the last digit of the block height at the time.
Smart contract for LuckyBet
  1. The total prize pool will be distributed among the winners based on their respective bets. Total prize pool is 95% of all the bets placed, with the remaining 5% used for Gas.

Real IOST will be awarded every day for the first 3 days based on leaderboard. First, second and third place will receive 10,000 IOST, 5000 IOST and 2000 IOST respectively. 4th to 10th place will each receive 500 IOST. There will also be 100 lucky winners and each of them will receive 100 IOST.

*There is a 0.01 testnet IOST fee per bet and 5% gas fee from total prize pool, this is for testnet purposes only and will not be a feature of Mainnet

How to give feedback and report bugs

As the IOST blockchain is still in its early stages, our team would love to see developers test our network. We will release specifics for a bug bounty in the near future. In order to provide feedback and report any bugs for the Everest testnet, please email us at team@iost.io or join our community channels on Twitter, Reddit, Telegram and Discord.

We encourage you to get involved and play with our testnet. As always, let us know your thoughts and we look forward to continuing to improve the IOST blockchain.

Happy hacking!

Developer Guide:

  1. Requesting tokens via the Faucet
  2. Blockchain Explorer
  3. Installing and running a Wallet
  4. Running a testnet node
  5. Building a private network
  6. Advanced Smart Contract Features
  7. Using the Smart contract test Playground
  8. API Oriented Smart Contracts
  9. How to report bugs or raise an issue with the Testnet

Requesting tokens via the Faucet

The IOST faucet provides Test IOST to users. Test IOST allows users to run smart contracts on the IOST testnet. Users can utilize the faucet to refill on Test IOST without requiring assistance from the developers. You can access the testnet faucet at here.

There is functionality to automatically generate a new address for users. Alternatively, users can also request tokens for their existing account. The address is where you want to receive the funds and each time you can request 10 Test IOST after security verification. The faucet has limits on the rate of request from any address.

*Important: Please do not try to use real IOST on the testnet.

Blockchain Explorer

The IOST testnet blockchain explorer can be found at https://explorer.iost.io.

It displays information about activities on the blockchain and shows transaction history and block details. The IOST testnet fully supports smart contract deployment, which means you can find smart contract source code on the explorer.

Wallet

The testnet wallet is the client component used to issue transactions on the testnet. It can be utilized for the storage and transfer of Test IOST.

This component enables users to keep their private keys on their own machines and not on any part of the testnet. The wallet makes users issue transactions with parameters that are specific to the VM.

*Important: Please note that this is not a fully functional wallet. The wallet has a command line interface for issuing transactions. Please ensure that you use the faucet to obtain Test IOST, and do not try to use real cryptocurrency when running your smart contracts.

To install and run wallet:

  • Get the IOST repository
  • On the command line run:
> ./build/iwallet
  • Type -h to get a list of available commands

Running an IOST testnet node

IOST testnet nodes are simple to run for all developers. First make sure your Golang version is 1.10.1 or newer and your Redis version is 4.0.10 or newer (we recommend the Redis stable version). Once your system is updated, you can obtain the testnet repository from “github.com/iost-official/prototype”. Finally to run a testnet node, simply start redis and iserver.

> redis-server
> ./build/iserver — config iserver/iserver.yml

Building a private network

IOST enables you to build a private blockchain network. After setting up network and docker config, you can build a docker image of IOST release. Then you can run the register server, note that you have to set mode to “private” for a private network:

> docker run -d -p 30304:30304 — name iost_register \
-v $PROJECT/test/data/register:/workdir/data \
$DOCKER_IMAGE ./register — mode private

After the register server is up and running, you can start your desired number of IOST servers using docker. This enables you to send transactions between nodes in your own private blockchain network.

Smart Contract Advanced Features

IOST testnet smart contract advanced features include:

  • On blockchain storage of key-value pairs, vector types like Lua table supported
  • Deposit to or withdraw from contract account
  • Inter-contract API calls
  • Multi signatures
  • Multi-language support for Inter-contract calls
  • Smart contract playground for testing

Smart contract Playground

We aim to increase developer efficiency to make it easier for developers to ship infrastructure and products quickly. To accomplish this, we have focused on building a suite of tools along with automation infrastructure that are reliable and fast, ensuring that developers can spend time on the things that matter. IOST Smart contract Playground is one of our developer tools. You can use it to play and test smart contracts locally.

The usage is fairly simple:

playground [-v init_values.yml] [source_code_1][source_code_2]…

flag -v specified .yaml files which imply init variant, source codes will be compiled and run by order. You can explore more features by using playground -h.

API Oriented Smart Contract

The IOST smart contract is an API oriented smart contract. API declarations enable validation and runtime checks, argument passing and authenticating, and instrumentation easily. A sample IOST smart contract looks like:

 — — main
— your own comments
— @gas_limit 11
— @gas_price 0.0001
— @param_cnt 0
— @return_cnt 1
function main()
Put(“hello”, “world”)
return “success”
end — f

Smart contracts currently support private and public mode. Public contracts can be called by everyone, and private contracts can only be called by publishers in inter-contract calls. Further privilege controls will be added in future releases.

How to report bugs or raise an issue with the Testnet

You can use github to directly report any bugs, issues or feedback with our testnet. You can also submit directly via email at team@iost.io.

Like what you read? Give IOS Foundation a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.