私链eosio.system合约部署
放弃六月们
发表于 2022-11-10 08:55:48
152
0
0
eos版本:v1.0.5 J9 v; L3 z+ B
操作系统:centos 7; N7 i% i: L" m0 d
环境:私有链7 ~# q" \' N. I( w- A
目的2 Z6 J3 C t7 w& p( C8 R& c! M. V
由于正式链的ram,net带宽,cpu带宽太宝贵,对于测试的同学建议先在私链上进行测试,避免浪费EOS币。
部署
部署是以私有链并且没有创建任何账号和合约为例,如果已经创建账号和部署智能合约,请对号入座跳着看。# t5 j$ W' b2 v7 h- h5 X0 ?
//重复1,2创建必备账号
//eosio.token0 U5 k0 I+ [$ ~+ K( u! N( g- ^
//eosio.system
//eosio.ram
//eosio.ramfee; i7 R* e4 R5 c1 V3 J
//eosio.stake
//默认在代码根目录下执行9 `5 ?6 g, r/ b4 T
//1.创建密钥对# e* W" F+ G* c- R
cleos create key
Private key: 5KKibeZ9KX2bR3MZQnTRVx5aGgpGqtsuitkr21FkpwRERuRk4Ym! E+ r: m) Z& o0 ~
Public key: EOS7d1YqzyP52FBkfmyu5pLVPpKjWZ4Ld3DZg8997eFLLZWLb7QUL9 A; Z- W' G. O+ O
//2.创建账号; D+ r/ a8 `, L" k( w. `% o
cleos create account eosio eosio.token ${publicKey} ${publicKey}
//部署eosio.token,发布代币9 c) u, P& H% R& y! g
cleos set contract eosio.token ../../contracts/eosio.token/
cleos push action eosio.token create '["eosio","1000000000.0000 EOS",0,0,0]' -p eosio.token
cleos push action eosio.token issue '["eosio","1000000000.0000 EOS","issue"]' -p eosio
//部署eosio.system,报错如下,要保证开头注明的四个账号已经创建! h% j+ f7 k, {; o9 `( R) n' r
cleos set contract eosio ../../contracts/eosio.system/ -p eosio* a8 O, v; V& M }' C+ m2 x3 M
Reading WAST/WASM from ../../contracts/eosio.system/eosio.system.wasm...! M' X/ F* _- Q3 }; ]' x& {
Using already assembled WASM...
Publishing contract...
Error 3080006: transaction took too long
//注意
./eosio_build.sh -s "EOS" 购买资源的币种,要使用默认的币种,不写则为SYS- h: h7 k) T E$ n% u
//创建交易账号. q4 c! R1 ]' }4 e) M% A* L& N% O
cleos system newaccount --stake-net "10.0000 SYS" --stake-cpu "10.0000 SYS" --buy-ram-kbytes 3 eosio eosiotest EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV 5 a& H( x( A A* x0 B
//查看账号信息,输出资源信息则为部署成功/ V! x5 a# Q, M% \2 H2 A6 o
cleos get account eosiotest) R- u# N( ~) j( c# x/ f
permissions:
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
memory: 1 c7 v/ b" z- A
quota: 2.973 KiB used: 2.926 KiB ; t) S( P8 v3 F6 ?- T
net bandwidth:
delegated: 10.0000 EOS (total staked delegated to account from others)5 M* G* f- x7 ?' A
used: 0 bytes' k) v( v2 H; X3 t
available: 8.145 TiB
limit: 8.145 TiB
cpu bandwidth:
delegated: 10.0000 EOS (total staked delegated to account from others)' T& M9 _& A8 q2 t2 o% M
used: 0 us - Z8 i- k X' a+ N& q" n, c
available: 473.5 hr
limit: 473.5 hr/ W8 B `2 u, P x- H$ x2 I, P9 s( {
4 b# S$ O5 _0 Y3 s
//给账号转账. J: q+ U' |* P3 _- x
cleos push action eosio.token transfer '["eosio","eosiotest","100.0000 SYS",""]' -p eosio2 l1 P9 J" K! p( I2 N- w( j
//再将eosiotest转账到eosio,验证资源是否减少
cleos push action eosio.token transfer '["eosiotest","eosio","100.0000 SYS",""]' -p eosio8 B6 y/ I+ h- ]6 f& D- J7 K
//再次查看账号信息,发现资源变少
cleos get account eosiotest
问题汇总0 c; ]# i, e" z" v
Q:部署合约报错:unable to find key
A:4.0以后默认系统币名字是SYS,所以需要发布的代币修改成SYS,或者修改eosio_build.sh脚本中默认名称,重新进行编译(参考下图)! c1 O1 \% M6 h) W0 p4 A
( d; b0 U! V6 m$ Y* S
Q:transaction took too long
A:nodeos程序启动时添加max-transaction-time或者修改config.ini对应属性,重新启动nodeos
Q:to account does not exist
A:在部署system合约之前,必须创建三个账号eosio.ram,eosio.ramfee,eosio.stake
成为第一个吐槽的人