EOShenzhen Test Report #1

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

  • Kernel Version
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

  • CPU
sudo lshw -class processor
  • number of processing units
$ sudo nproc
16
  • ram
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 .

  • create key (use key pair from wiki)

    cless wallet import 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
  • set ~/.profile or ~/.bash_profile
    vim ~/.profile
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'
  • create eosio.token account
cless create account eosio eosio.token EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
  • validate account

  • PUSH eosio.token using with account eosio.token
cless set contract eosio.token build/contracts/eosio.token -p eosio.token

  • Create account user and tester using the same key pair
cless create account eosio user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
cless create account eosio tester EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

  • Create 100 billion tokens using permission of eosio.token
cless push action eosio.token create '[ "eosio", "100000000000.0000 EOS", 0, 0, 0]' -p eosio.token
  • Issue all 100 billion token to account `user
 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
  • Mac Mini (late 2014)
    • 8GB Ram
  • Networking Speed:
    • Upload: 16.64 Mbit/s
    • Download: 7.46 Mbit/s
  • Result: 3 min 51 sec
image
测试深圳使用.jpeg
3.2.4. Remote Client from Singapore
  • Macbook Pro 2.5 GHz Intel Core i7
    • 16GB ram
  • Network Speed:
    • Upload 103.62Mbit/s
    • Download 127.35Mbit/s
  • Result: 15min 41 sec
3.2.5 Remote Client from Hong Kong SAR, China
  • Aliyun, Ubuntu 16.04
    • 4 GB Ram
    • 2 core CPU
  • Network Speed
    • Upload 6.41 Mbit/s
    • Download: 85.85 Mbit/s
  • Result: 5 min 32 sec
3.2.6 Remote Client from Fremont, California, USA
  • Linode: Nanode 1G, Ubuntu 16.04

    • 1 GB Ram

    • 1 CPU Core CPU

  • Network Speed:

    • Upload 92 Mbit/s
    • Download 127.35 Mbit/s
  • Result: 57min 44 sec

[图片上传失败...(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"}
     ]
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容