EOShenzhen Test Report #1

作者: Lochaiching | 来源:发表于2018-05-22 10:19 被阅读21次

    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"}
         ]
      }
    

    相关文章

      网友评论

        本文标题:EOShenzhen Test Report #1

        本文链接:https://www.haomeiwen.com/subject/lwqcjftx.html