EOS技术爱好者区块链研习社金马带你定投区块链

EOShenzhen Test Report #1

2018-05-22  本文已影响21人  Lochaiching

1. Introduce our Fullnode server

As EOShenzhen, we will choose physical machine instead of cloud machine which located in Internet Data Center of China Mobile in Shenzhen.
As the first node from China from CommunityTestnet, we are committed to evolve ourselves to provide stable and robust service for EOS ecosystem,.

This report is aim to unveil info and perform simple test for our fullNode machine, we will cover aritecture and block producer server info in subsequent report.

1.1 Network & bandwidth

Network Speed Test

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
测试报告01.jpeg

Our bandwidth upgradable to 1gps, you will see in the subsequent report.

How to check Internet Speed via Terminal?

1.2 Software Properties

Ubuntu 18.04 LTS: Linux version 4.8.0-22-generic (buildd@lgw01-11) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #24-Ubuntu SMP Sat Oct 8 09:15:00 UTC 2016

1.3 Hardware Properties

sudo lshw -class processor
$ sudo nproc
16
sudo cat /proc/meminfo

2. Instructions

2.1. genesis.json and config.ini

genesis.json
We use default genesis that generate by nodeos version: 2565193790 with initial_key belong to eosio and initial_timestamp is 2018-03-02T12:00:00.000

config.ini
we include the wallet_plugin, hence we donnot need to run an separate keosd program and we set max-transaction-time = 3000 to provide ample time for transaction and enable access-control-allow-origin = * for web access.

plugin = eosio::wallet_plugin
plugin = eosio::wallet_api_plugin
http-server-address = 0.0.0.0:8888
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = http://baby.eoshenzhen.io:9876

2.2 Set Contracts

EOShenzhen use the command from official wiki
Tutorial Getting Started With Contracts and Tutorial eosio token Contract .

alias cless='cleos -u http://baby.eoshenzhen.io:8888 --wallet-url http://baby.eoshenzhen.io:8888'
alias ulk='cless wallet unlock --password [PASSPHRASE]'
alias kae='killall nodeos'

Explain
-u: the http/https URL where nodeos is running
--wallet-url: the http/https URL where keosd is running
alias cless='cleos -u [URL]:--wallet-url [URL]'

Additional alias can be added into ~/.profile, which will help accelerate the operating speed

alias vbp='vim ~/.profile'
alias sbp='source ~/.profile'
cless create account eosio eosio.token EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

cless set contract eosio.token build/contracts/eosio.token -p eosio.token

cless create account eosio user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
cless create account eosio tester EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

cless push action eosio.token create '[ "eosio", "100000000000.0000 EOS", 0, 0, 0]' -p eosio.token
 cless push action eosio.token issue '[ "user", "100000000000.0000  EOS", "memo" ]' -p eosio

transfer 25 EOS from user to tester
cless push action eosio.token transfer '[ "user", "tester", "25.0000 EOS", "m" ]' -p user

3. Performance Test

3.1 Basic info

  1. To test the CPU, bandwidth and ram performance of the machines.
  2. Use the nodeos and contracts provided by DAWN-2018-05-16 to performance test
  3. producer: eosio
  4. 200M downlink and uplink bandwidth

After running nodeos single-instance, we can view the process in htop

[图片上传失败...(image-2e768a-1526945689416)]

3.2 transfers.sh

transfers.sh will provide 1000 tx from Account user to tester
START_TIME=$SECONDS
CLEOS=/usr/local/bin/cleos
COUNTER=0
while [  $COUNTER -lt 1000 ]; do
   $CLEOS -u http://baby.eoshenzhen.io:8888 --wallet-url http://baby.eoshenzhen.io:8888 push action eosio.token transfer '[ "user", "tester", "1.0000 EOS", "$COUNTER" ]' -p user -f
   let COUNTER=COUNTER+1
done
ELAPSED_TIME=$(($SECONDS - $START_TIME))
echo "$(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec"

run ./transfers.sh |& tee -a output.txt

Save Terminal Output to a File

Both the standard output and standard error streams will be copied to the file while still being visible in the terminal. If the file already exists, it gets overwritten.

We have test under three scenarios:

3.2.1. client use same server
3.2.2 Client use another full node(different public IP) as client

3.2.3 to 3.2.7 will performance test from remote client to simulate the situations

image
3.2.3. Remote Client Shenzhen, China
image 测试深圳使用.jpeg
3.2.4. Remote Client from Singapore
3.2.5 Remote Client from Hong Kong SAR, China
3.2.6 Remote Client from Fremont, California, USA

[图片上传失败...(image-e08b10-1526945689416)]

3.3 Conclusion

The fast and identical result for 3.2.1 and 3.2.2 highlights our capability to provide a stable internal network, that all full nodes are interconnected through a stable and robust (10Gps) switch, which will be unveil in subsequent report.

3.2.3 to 3.2.6 indicate that the speed for client to connect to the fullnode is probably highly correlated to the location of the client and server, which highlight our commitment to the community:

To provide solid and stable physical server for developers in region Shenzhen , Pearl River Delta and Greater China

4. Dawn-4.0.0 vs Dawn-2018-05-16

Message from Greg Lee from Community Testnet Telegram


The screenshot below are the errors while we are testing Dawn-4.0.0v,
Dawn-4.0.0 is released in May 12, the issue is fixed in May 16, which proves the block.one rapid iteration speed, stay awesome !

References:

The action contains issue: one issue and three transfers.
While the only action we signed was issue, the issue action performed an "inline transfer" and the "inline transfer" notified the sender and receiver accounts.
The output indicates all of the action handlers that were called, the order they were called in, and whether or not any output was generated by the action.

Technically, the eosio.token contract could have skipped the inline transfer and opted to just modify the balances directly. However, in this case, the eosio.token contract is following our token convention that requires that all account balances be derivable by the sum of the transfer actions that reference them. It also requires that the sender and receiver of funds be notified so they can automate handling deposits and withdrawals.

refer to structs create, issue, and transfer in eosio.token.abi file

{
     "name": "create",
     "base": "",
     "fields": [
        {"name":"issuer", "type":"account_name"},
        {"name":"maximum_supply", "type":"asset"},
        {"name":"can_freeze", "type":"uint8"},
        {"name":"can_recall", "type":"uint8"},
        {"name":"can_whitelist", "type":"uint8"}
     ]
  },{
      "name": "transfer",
      "base": "",
      "fields": [
        {"name":"from", "type":"account_name"},
        {"name":"to", "type":"account_name"},
        {"name":"quantity", "type":"asset"},
        {"name":"memo", "type":"string"}
      ]
    }, {
     "name": "issue",
     "base": "",
     "fields": [
        {"name":"to", "type":"account_name"},
        {"name":"quantity", "type":"asset"},
        {"name":"memo", "type":"string"}
     ]
  }
上一篇 下一篇

猜你喜欢

热点阅读