EOS開發(七)使用cleos通過連線第三方節點,在主網/測試網建立賬戶和發幣代幣...

weixin_34019929發表於2018-09-10

1.前言

在上一篇文章中,我們已經通過連線第三方節點的方式加入到了主網或者測試網路。這篇文章主要是關於在主網/測試網建立賬號,釋出代幣,以及關於一些轉賬手續費的講解。

2.測試網路

2.1 準備工作

生成兩組公私鑰對,建立賬戶的時候需要:

yuyangdeMacBook-Pro:cleos yuyang$ cleos create key --to-console
Private key: 5Kbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public key: EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC
yuyangdeMacBook-Pro:cleos yuyang$ cleos create key --to-console
Private key: 5Hrxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public key: EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E

2.2 建立賬戶

之前,我們是通過http://jungle.cryptolions.ioCreate account選項建立的賬戶testnetyy111。這裡我們使用cleos,通過testnetyy111來建立一個新的賬戶。

在主網和測試網路中,建立賬號不像之前本地私鏈那樣可以隨意建立,而是需要為新賬戶購買和抵押一定的資源,使得新賬號可以進行一定的操作,例如轉賬等。需要購買的資源是RAM,需要抵押的資源是NETCPU。建立賬號時,使用以下引數指定要購買和抵押的資源數量:

  • --stake-net:抵押的網路頻寬資源,單位為EOS

  • --stake-cpu:抵押的CPU頻寬資源,單位為EOS

  • --buy-ram-kbytes:購買的記憶體資源,單位為KB

  • --buy-ram:購買的記憶體資源,單位為EOS

建立賬戶:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "http://jungle.cryptolions.io:18888" create account --stake-net '100 EOS' --stake-cpu '100 EOS' --buy-ram-kbytes 1000 testnetyy111 testneths111 EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E
ERROR: ExtrasError: [--stake-net --stake-cpu --buy-ram-kbytes testneths111 EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E]
Create an account, buy ram, stake for bandwidth for the account
Usage: cleos create account [OPTIONS] creator name OwnerKey [ActiveKey]

Positionals:
  creator TEXT                The name of the account creating the new account (required)
  name TEXT                   The name of the new account (required)
  OwnerKey TEXT               The owner public key for the new account (required)
  ActiveKey TEXT              The active public key for the new account

Options:
  -h,--help                   Print this help message and exit
  -x,--expiration             set the time in seconds before a transaction expires, defaults to 30s
  -f,--force-unique           force the transaction to be unique. this will consume extra bandwidth and remove any protections against accidently issuing the same transaction multiple times
  -s,--skip-sign              Specify if unlocked wallet keys should be used to sign transaction
  -j,--json                   print result as json
  -d,--dont-broadcast         don't broadcast transaction to the network (just print to stdout)
  --return-packed             used in conjunction with --dont-broadcast to get the packed transaction
  -r,--ref-block TEXT         set the reference block num or block id used for TAPOS (Transaction as Proof-of-Stake)
  -p,--permission TEXT ...    An account and permission level to authorize, as in 'account@permission'
  --max-cpu-usage-ms UINT     set an upper limit on the milliseconds of cpu usage budget, for the execution of the transaction (defaults to 0 which means no limit)
  --max-net-usage UINT        set an upper limit on the net usage budget, in bytes, for the transaction (defaults to 0 which means no limit)

發現報錯了。通過檢視cleos的文件https://developers.eos.io/eosio-cleos/reference#cleos-create-account,發現在生產環境中,建立賬號需要使用cleos system newaccount(https://developers.eos.io/eosio-cleos/reference#cleos-system-newaccount)命令替代。

再來:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "http://jungle.cryptolions.io:18888" system newaccount --stake-net '100 EOS' --stake-cpu '100 EOS' --buy-ram-kbytes 1000 testnetyy111 testneths111 EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E
executed transaction: 28cbc19117ec5c09edd90da7e25b1e742c5a954f7d0a1b2c88be91eceb4b5880  336 bytes  9736 us
#         eosio <= eosio::newaccount            {"creator":"testnetyy111","name":"testneths111","owner":{"threshold":1,"keys":[{"key":"EOS7RkP6aevKj...
#         eosio <= eosio::buyrambytes           {"payer":"testnetyy111","receiver":"testneths111","bytes":1024000}
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"58.0495 EOS","memo":"buy ram"}
#  testnetyy111 <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"58.0495 EOS","memo":"buy ram"}
#     eosio.ram <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"58.0495 EOS","memo":"buy ram"}
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.2918 EOS","memo":"ram fee"}
#  testnetyy111 <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.2918 EOS","memo":"ram fee"}
#  eosio.ramfee <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.2918 EOS","memo":"ram fee"}
#         eosio <= eosio::delegatebw            {"from":"testnetyy111","receiver":"testneths111","stake_net_quantity":"100.0000 EOS","stake_cpu_quan...
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.stake","quantity":"200.0000 EOS","memo":"stake bandwidth"}
#  testnetyy111 <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.stake","quantity":"200.0000 EOS","memo":"stake bandwidth"}
#   eosio.stake <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.stake","quantity":"200.0000 EOS","memo":"stake bandwidth"}
2018-09-05T06:09:44.828 thread-0   main.cpp:455                  print_result   warning: transaction executed locally, but may not be confirmed by the network yet

成功!我們查詢下新賬戶testneths111的情況:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get account testneths111
permissions: 
     owner     1:    1 EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC
        active     1:    1 EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E
memory: 
     quota:     994.9 KiB    used:     2.926 KiB  

net bandwidth: 
     delegated:     100.0000 EOS           (total staked delegated to account from others)
     used:                 0 bytes
     available:        18.32 MiB  
     limit:            18.32 MiB  

cpu bandwidth:
     delegated:     100.0000 EOS           (total staked delegated to account from others)
     used:                 0 us   
     available:        3.661 sec  
     limit:            3.661 sec  

我們剛才建立了新賬戶testneths111,併為其購買了1000kbRAMNETCPU各抵押了100個eos。

再查查testnetyy111的賬戶情況:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get account testnetyy111
permissions: 
     owner     1:    1 EOS6cnhSLTn4eSUEqS4nC8frYTsVsjeH2M3hos1TUeCgme2Yim5Q5
        active     1:    1 EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc
memory: 
     quota:     170.8 KiB    used:     3.646 KiB  

net bandwidth: 
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:               337 bytes
     available:        18.32 MiB  
     limit:            18.32 MiB  

cpu bandwidth:
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:             9.041 ms   
     available:        3.652 sec  
     limit:            3.661 sec  

EOS balances: 
     liquid:         9741.6587 EOS
     staked:          200.0000 EOS
     unstaking:         0.0000 EOS
     total:          9941.6587 EOS

producers:     <not voted>

之前這個賬號有10000eos的可用餘額,現在剩餘9741.6587eos的可用餘額,剛才建立賬號花費了大約258.3413eos,我們來看看花費明細:

  • 各抵押了100eos的NETCPU,總共200eos

  • 購買了1000kb的RAM,花費58.0495eos。可以從建立賬號時的返回日記檢視:

#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"58.0495 EOS","memo":"buy ram"}
  • 購買RAM時,系統收取了0.2918eos的RAM交易手續費。可以從建立賬號時的返回日記檢視:
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.2918 EOS","memo":"ram fee"}

合計:

200 + 58.0495 + 0.2918 = 258.3413

正好吻合

staked和delegated

這裡注意看下這兩個賬號的資訊。testnetyy111的網路資源和CPU資源都為staked 100 eos,而delegated 0 eostestneths111的網路資源和CPU資源都為delegated 100 eos,而沒有staked選項。

這表示的是,testnetyy111的網路資源和CPU資源都是此賬號自己抵押的,如果申請贖回,那這200 eos將會退給testnetyy111

testneths111的網路資源和CPU資源都是由testnetyy111抵押的。testneths111無法申請贖回,只能由testnetyy111申請贖回,並且這200 eos將會退給testnetyy111而不是testneths111

2.3 EOS轉賬

給新賬戶轉點EOS:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 transfer testnetyy111 testneths111 "100 EOS" "hi there"
executed transaction: a2a4d081bf5af18c3f74a3fecb0dd9c65db1490aaeeee00433c9a9a2b83868bc  136 bytes  1540 us
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"testneths111","quantity":"100.0000 EOS","memo":"hi there"}
#  testnetyy111 <= eosio.token::transfer        {"from":"testnetyy111","to":"testneths111","quantity":"100.0000 EOS","memo":"hi there"}
#  testneths111 <= eosio.token::transfer        {"from":"testnetyy111","to":"testneths111","quantity":"100.0000 EOS","memo":"hi there"}
warning: transaction executed locally, but may not be confirmed by the network yet    ] 

檢視testneths111賬戶資訊:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get account testneths111
permissions: 
     owner     1:    1 EOS7RkP6aevKjN1CiKSqo44Gi1HhPYBczGFgSduBXBD7uHUFhg2qC
        active     1:    1 EOS7sGb8DfutGgpuMmnDhG1d2stVETfpkrHQ6HhVRJJaPXRqLay2E
memory: 
     quota:     994.9 KiB    used:     2.926 KiB  

net bandwidth: 
     delegated:     100.0000 EOS           (total staked delegated to account from others)
     used:                 0 bytes
     available:        18.32 MiB  
     limit:            18.32 MiB  

cpu bandwidth:
     delegated:     100.0000 EOS           (total staked delegated to account from others)
     used:                 0 us   
     available:        3.661 sec  
     limit:            3.661 sec  

EOS balances: 
     liquid:          100.0000 EOS
     staked:            0.0000 EOS
     unstaking:         0.0000 EOS
     total:           100.0000 EOS

已經有100eos的餘額了

也可以使用下面的方法獲取餘額:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get currency balance eosio.token testnetyy111
9641.6587 EOS
10000.0000 JUNGLE
yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get currency balance eosio.token testneths111
100.0000 EOS

JUNGLE是由於testnetyy111賬戶是通過Jungle Testnet網頁建立的,所以預設還給了10000JUNGLE代幣

2.4 轉賬手續費

我們再來檢視下testnetyy111賬戶的情況:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get account testnetyy111
permissions: 
     owner     1:    1 EOS6cnhSLTn4eSUEqS4nC8frYTsVsjeH2M3hos1TUeCgme2Yim5Q5
        active     1:    1 EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc
memory: 
     quota:     170.8 KiB    used:     3.881 KiB  

net bandwidth: 
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:               455 bytes
     available:        18.32 MiB  
     limit:            18.32 MiB  

cpu bandwidth:
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:             10.13 ms   
     available:        3.651 sec  
     limit:            3.661 sec  

EOS balances: 
     liquid:         9641.6587 EOS
     staked:          200.0000 EOS
     unstaking:         0.0000 EOS
     total:          9841.6587 EOS

producers:     <not voted>

對比下轉賬前RAM、NET、CPU的使用情況:

  • RAM:轉賬前3.646 KiB used,轉賬後3.881 KiB used

  • NET:轉賬前337 bytes used,轉賬後455 bytes used

  • CPU:轉賬前9.041 ms used,轉賬後10.13 ms used

可以看到,轉賬後testnetyy111各項資源的使用都增加了。轉賬需要消耗使用EOS抵押的網路和CPU資源,並且需要將testneths111持有了EOS的資訊記錄到記憶體上。雖然網路和CPU資源會由系統定期自動釋放,也就是恢復,並且可以贖回成EOS,但是記憶體是使用EOS購買的,雖然可以賣出,但是系統不會定期釋放。所以第一次向沒有EOS代幣的testneths111賬戶轉賬多少會有一些(因為使用了記憶體的)手續費。

為什麼說只有第一次轉賬EOS沒有手續費呢?因為經過後續實驗,如果testnetyy111再給testneths111轉賬EOS,testnetyy111的記憶體消耗並不會增加。原因是,首先,之前記憶體上已經記錄了testneths111持有EOS的資訊,轉賬不會再次記錄。其次,雖然轉賬方testnetyy111的網路和CPU消耗再次增加,但是由於兩者的恢復機制,消耗的網路和CPU會再次恢復。所以此時實現了真正意義上的轉賬無手續費。

我們繼續試驗。將testneths111的私鑰匯入testnet.wallet錢包,然後將所有EOS轉回給testnetyy111。然後再次檢視testnetyy111的賬戶,這時可以發現,testnetyy111的記憶體使用降低了。原因是testneths111不再持有EOS,所以系統刪除了testneths111持有EOS的這條記錄,並將之前的記錄此資訊的記憶體退回給了testnetyy111

2.5 建立、發行、轉賬代幣

之前的文章已經詳細講解過代幣的建立、發行和轉賬了,這裡不再詳細說明了

testnetyy111賬戶部署代幣合約:

uyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 set contract testnetyy111 ../../../build/contracts/eosio.token -p testnetyy111@active
Reading WASM from ../../../build/contracts/eosio.token/eosio.token.wasm...
Publishing contract...
Error 3080001: Account using more than allotted RAM usage
Error Details:
account testnetyy111 has insufficient ram; needs 194060 bytes has 174927 bytes

檢視報錯資訊,發現部署代幣合約需要194kb的記憶體,當前只有174kb。我們為testnetyy111再購買些記憶體:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 system buyram testnetyy111 testnetyy111 "100 EOS"
executed transaction: 695beb8644042b44b10dcf2028964996c864f9804d7df5182f32ddda92ff8fd4  128 bytes  5017 us
#         eosio <= eosio::buyram                {"payer":"testnetyy111","receiver":"testnetyy111","quant":"100.0000 EOS"}
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"99.5000 EOS","memo":"buy ram"}
#  testnetyy111 <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"99.5000 EOS","memo":"buy ram"}
#     eosio.ram <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ram","quantity":"99.5000 EOS","memo":"buy ram"}
#   eosio.token <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.5000 EOS","memo":"ram fee"}
#  testnetyy111 <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.5000 EOS","memo":"ram fee"}
#  eosio.ramfee <= eosio.token::transfer        {"from":"testnetyy111","to":"eosio.ramfee","quantity":"0.5000 EOS","memo":"ram fee"}
warning: transaction executed locally, but may not be confirmed by the network yet    ] 

買了100eos的記憶體,實際只買到了99.5eos的記憶體,因為被系統扣了%0.5的交易手續費。看下現在有多少記憶體了:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get account testnetyy111
permissions: 
     owner     1:    1 EOS6cnhSLTn4eSUEqS4nC8frYTsVsjeH2M3hos1TUeCgme2Yim5Q5
        active     1:    1 EOS6Z7mUQeFC2cQTT3xMyZh2wsLQoHih1bTMgRhr3dbichprTi7Rc
memory: 
     quota:     1.831 MiB    used:     3.881 KiB  

net bandwidth: 
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:               549 bytes
     available:        18.32 MiB  
     limit:            18.32 MiB  

cpu bandwidth:
     staked:        100.0000 EOS           (total stake delegated from account to self)
     delegated:       0.0000 EOS           (total staked delegated to account from others)
     used:             12.96 ms   
     available:        3.648 sec  
     limit:            3.661 sec  

EOS balances: 
     liquid:         9541.6587 EOS
     staked:          200.0000 EOS
     unstaking:         0.0000 EOS
     total:          9741.6587 EOS

producers:     <not voted>

足夠了。我們重新部署代幣合約:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 set contract testnetyy111 ../../../build/contracts/eosio.token -p testnetyy111@active
Reading WASM from ../../../build/contracts/eosio.token/eosio.token.wasm...
Publishing contract...
executed transaction: 7cff6eac58075d3bc12c0479b8bf420f36b7ec2c136a832a007efa48cea57591  8112 bytes  3438 us
#         eosio <= eosio::setcode               {"account":"testnetyy111","vmtype":0,"vmversion":0,"code":"0061736d01000000017e1560037f7e7f0060057f7...
#         eosio <= eosio::setabi                {"account":"testnetyy111","abi":"0e656f73696f3a3a6162692f312e30010c6163636f756e745f6e616d65046e616d6...
warning: transaction executed locally, but may not be confirmed by the network yet    ] 

檢視一下testnetyy111的賬戶情況,剛才部署代幣合約使用了大約186kb的記憶體。

完整的建立代幣的命令:

cleos -u http://jungle.cryptolions.io:18888 push action testnetyy111 create '{"issuer":"testnetyy111", "maximum_supply": "100000000.0000 RAY", "can_freeze": 0, "can_recall": 0, "can_whitelist": 0}' -p testnetyy111@active

can_freezecan_recallcan_whitelist為布林值,表示這個代幣是否可以被髮行人凍結,收回,或者白名單。

我們可以也使用更簡略的命令建立代幣:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 push action testnetyy111 create '[ "testnetyy111", "100000000.0000 RAY", 0, 0, 0]' -p testnetyy111
executed transaction: dfc45b660f42beca5bb0a6dbe081d1d37b4931d004a59bac0801304db6a84ffb  120 bytes  765 us
#  testnetyy111 <= testnetyy111::create         {"issuer":"testnetyy111","maximum_supply":"100000000.0000 RAY"}
warning: transaction executed locally, but may not be confirmed by the network yet    ] 

我們指定的發行人為testnetyy111。現在將全部代幣都發行給testnetyy111

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 push action testnetyy111 issue '[ "testnetyy111", "100000000.0000 RAY", "issue" ]' -p testnetyy111
executed transaction: b0c71715e9dc3284513d6fc29e4c2fc130ff2a54eb621cc472cdc037c63a1124  128 bytes  1303 us
#  testnetyy111 <= testnetyy111::issue          {"to":"testnetyy111","quantity":"100000000.0000 RAY","memo":"issue"}
warning: transaction executed locally, but may not be confirmed by the network yet    ]

檢視下餘額:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get currency balance testnetyy111 testnetyy111
100000000.0000 RAY

現在testnetyy111賬戶中已經有100000000.0000 RAY,我們轉點代幣給testneths111

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 push action testnetyy111 transfer '[ "testnetyy111", "testneths111", "100.0000 RAY", "transfer to hs" ]' -p testnetyy111
executed transaction: cc2dd7d3a52f753cf139c4076cfecaa61e4cb853fc91ec9490e26cdaa4052513  144 bytes  1489 us
#  testnetyy111 <= testnetyy111::transfer       {"from":"testnetyy111","to":"testneths111","quantity":"100.0000 RAY","memo":"transfer to hs"}
#  testneths111 <= testnetyy111::transfer       {"from":"testnetyy111","to":"testneths111","quantity":"100.0000 RAY","memo":"transfer to hs"}
warning: transaction executed locally, but may not be confirmed by the network yet    ]

檢視下雙方的代幣餘額:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get currency balance testnetyy111 testnetyy111
99999900.0000 RAY
yuyangdeMacBook-Pro:cleos yuyang$ cleos -u http://jungle.cryptolions.io:18888 get currency balance testnetyy111 testneths111
100.0000 RAY

沒毛病

3. 主網

3.1 準備工作

主網的流程和測試網路基本一樣

建立一個錢包,管理主網的私鑰

建立一個名為mainnet.wallet的錢包

yuyangdeMacBook-Pro:cleos yuyang$ cleos wallet create -n mainnet --to-console
Creating wallet: mainnet
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

將我之前在主網申請的賬戶yuyangray222的私鑰匯入錢包

yuyangdeMacBook-Pro:cleos yuyang$ cleos wallet import --private-key 5JLxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n mainnet
imported private key for: EOS69mwiYuMhfWtwLVXxaXfao7YXF2Kh39nZurdDw6RF1ntQy6DnW

生成兩個私鑰,建立賬戶的時候需要:

yuyangdeMacBook-Pro:cleos yuyang$ cleos create key --to-console
Private key: 5Jwhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public key: EOS66griGzoa99n2mjGacBKEndMFAACrmJi7zn1xJ6jieDv4K1SB9
yuyangdeMacBook-Pro:cleos yuyang$ cleos create key --to-console
Private key: 5JdJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Public key: EOS6x1ZXjAJLrHy67hCdM13ue2t4BCvNp55qMcqtvyfPULFQAAtRG

3.2 建立賬戶

先確認下是否連線的是主網:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "https://api.eosnewyork.io" get info
{
  "server_version": "e87d245d",
  "chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906",
  "head_block_num": 14959813,
  "last_irreversible_block_num": 14959477,
  "last_irreversible_block_id": "00e443756eed3ed6a238b63cf87897b069ec84ffb82adceffc3ae0a9469e0b16",
  "head_block_id": "00e444c5fec4a19e4b524c4d84140edb18106b5562cd22d7d7b34fdc90fc1e15",
  "head_block_time": "2018-09-06T03:24:17.500",
  "head_block_producer": "libertyblock",
  "virtual_block_cpu_limit": 200000000,
  "virtual_block_net_limit": 1048576000,
  "block_cpu_limit": 197819,
  "block_net_limit": 1048432,
  "server_version_string": "v1.2.3-dirty"
}

使用yuyangray222建立一個新賬戶huashangtech

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "https://api.eosnewyork.io" system newaccount --stake-net '1 EOS' --stake-cpu '1 EOS' --buy-ram-kbytes 20 yuyangray222 huashangtech EOS66griGzoa99n2mjGacBKEndMFAACrmJi7zn1xJ6jieDv4K1SB9 EOS6x1ZXjAJLrHy67hCdM13ue2t4BCvNp55qMcqtvyfPULFQAAtRG
executed transaction: e10f0e02c963c7b49e939c82ca34917b5607e8925e685d6b48bed27ea372e0a7  336 bytes  5765 us
#         eosio <= eosio::newaccount            {"creator":"yuyangray222","name":"huashangtech","owner":{"threshold":1,"keys":[{"key":"EOS66griGzoa9...
#         eosio <= eosio::buyrambytes           {"payer":"yuyangray222","receiver":"huashangtech","bytes":20480}
#   eosio.token <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.ram","quantity":"2.2453 EOS","memo":"buy ram"}
#  yuyangray222 <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.ram","quantity":"2.2453 EOS","memo":"buy ram"}
#     eosio.ram <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.ram","quantity":"2.2453 EOS","memo":"buy ram"}
#   eosio.token <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.ramfee","quantity":"0.0113 EOS","memo":"ram fee"}
#  yuyangray222 <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.ramfee","quantity":"0.0113 EOS","memo":"ram fee"}
#  eosio.ramfee <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.ramfee","quantity":"0.0113 EOS","memo":"ram fee"}
#         eosio <= eosio::delegatebw            {"from":"yuyangray222","receiver":"huashangtech","stake_net_quantity":"1.0000 EOS","stake_cpu_quanti...
#   eosio.token <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.stake","quantity":"2.0000 EOS","memo":"stake bandwidth"}
#  yuyangray222 <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.stake","quantity":"2.0000 EOS","memo":"stake bandwidth"}
#   eosio.stake <= eosio.token::transfer        {"from":"yuyangray222","to":"eosio.stake","quantity":"2.0000 EOS","memo":"stake bandwidth"}
warning: transaction executed locally, but may not be confirmed by the network yet    ] 

抵押了1eosNET1eosCPU,購買了20K的記憶體

檢視新賬戶huashangtech資訊:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "https://api.eosnewyork.io" get account huashangtech
permissions: 
     owner     1:    1 EOS66griGzoa99n2mjGacBKEndMFAACrmJi7zn1xJ6jieDv4K1SB9
        active     1:    1 EOS6x1ZXjAJLrHy67hCdM13ue2t4BCvNp55qMcqtvyfPULFQAAtRG
memory: 
     quota:     21.27 KiB    used:     2.926 KiB  

net bandwidth: 
     delegated:       1.0000 EOS           (total staked delegated to account from others)
     used:                 0 bytes
     available:        668.9 KiB  
     limit:            668.9 KiB  

cpu bandwidth:
     delegated:       1.0000 EOS           (total staked delegated to account from others)
     used:                 0 us   
     available:        126.1 ms   
     limit:            126.1 ms   

3.3 EOS轉賬

yuyangray222轉一個EOS給huashangtech

cleos -u "https://api.eosnewyork.io" transfer yuyangray222 huashangtech "1 EOS" "hi huashangtech"
yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "https://api.eosnewyork.io" transfer yuyangray222 huashangtech "1 EOS" "hi huashangtech"
executed transaction: d8fd505b3bbce4416ee390587f758a804218d1057657f189013a62107d6f64a4  144 bytes  1206 us
#   eosio.token <= eosio.token::transfer        {"from":"yuyangray222","to":"huashangtech","quantity":"1.0000 EOS","memo":"hi huashangtech"}
#  yuyangray222 <= eosio.token::transfer        {"from":"yuyangray222","to":"huashangtech","quantity":"1.0000 EOS","memo":"hi huashangtech"}
#  huashangtech <= eosio.token::transfer        {"from":"yuyangray222","to":"huashangtech","quantity":"1.0000 EOS","memo":"hi huashangtech"}
warning: transaction executed locally, but may not be confirmed by the network yet    ] 

再次檢視huashangtech賬戶資訊:

yuyangdeMacBook-Pro:cleos yuyang$ cleos -u "https://api.eosnewyork.io" get account huashangtech
permissions: 
     owner     1:    1 EOS66griGzoa99n2mjGacBKEndMFAACrmJi7zn1xJ6jieDv4K1SB9
        active     1:    1 EOS6x1ZXjAJLrHy67hCdM13ue2t4BCvNp55qMcqtvyfPULFQAAtRG
memory: 
     quota:     21.27 KiB    used:     2.926 KiB  

net bandwidth: 
     delegated:       1.0000 EOS           (total staked delegated to account from others)
     used:                 0 bytes
     available:        668.9 KiB  
     limit:            668.9 KiB  

cpu bandwidth:
     delegated:       1.0000 EOS           (total staked delegated to account from others)
     used:                 0 us   
     available:        126.1 ms   
     limit:            126.1 ms   

EOS balances: 
     liquid:            1.0000 EOS
     staked:            0.0000 EOS
     unstaking:         0.0000 EOS
     total:             1.0000 EOS

餘額已有1EOS

3.4 建立、發行、轉賬代幣

由於在主網部署代幣合約至少需要賬戶內有200k的記憶體,以現在記憶體的價格,大概需要23個EOS以上,後面有機會再補充,不過流程都和在測試網上基本一致。

相關文章