私链eosio.system合约部署
放弃六月们
发表于 2022-11-10 08:55:48
107
0
0
eos版本:v1.0.53 x: K {+ X' ~) e; q2 Q y
操作系统:centos 7- J$ ~- x# R- u! O8 @
环境:私有链3 j' W; p, w( Q
目的
由于正式链的ram,net带宽,cpu带宽太宝贵,对于测试的同学建议先在私链上进行测试,避免浪费EOS币。; k. E$ H }7 T% i. B# b6 |
部署8 M+ {. ]1 x* N
部署是以私有链并且没有创建任何账号和合约为例,如果已经创建账号和部署智能合约,请对号入座跳着看。9 U: z5 G' a* z+ X, P4 L
, L; U3 q3 L0 ~) J- w
//重复1,2创建必备账号+ p- @4 c+ ^0 j0 Y
//eosio.token* P: }, b+ V. y) m' ]5 F
//eosio.system% @3 i( m1 J; l$ [' f4 _) T# B
//eosio.ram
//eosio.ramfee
//eosio.stake
//默认在代码根目录下执行
//1.创建密钥对
cleos create key
Private key: 5KKibeZ9KX2bR3MZQnTRVx5aGgpGqtsuitkr21FkpwRERuRk4Ym _4 M5 m% y* r$ d9 L2 c
Public key: EOS7d1YqzyP52FBkfmyu5pLVPpKjWZ4Ld3DZg8997eFLLZWLb7QUL
//2.创建账号7 a0 t. l2 F( @! C+ J4 l
cleos create account eosio eosio.token ${publicKey} ${publicKey}2 k+ P, x6 v( b" f3 m
//部署eosio.token,发布代币
cleos set contract eosio.token ../../contracts/eosio.token/5 p9 v& @1 h6 ?( t& J3 H1 t4 Y
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,报错如下,要保证开头注明的四个账号已经创建
cleos set contract eosio ../../contracts/eosio.system/ -p eosio
Reading WAST/WASM from ../../contracts/eosio.system/eosio.system.wasm...
Using already assembled WASM...
Publishing contract...
Error 3080006: transaction took too long
//注意
./eosio_build.sh -s "EOS" 购买资源的币种,要使用默认的币种,不写则为SYS
//创建交易账号
cleos system newaccount --stake-net "10.0000 SYS" --stake-cpu "10.0000 SYS" --buy-ram-kbytes 3 eosio eosiotest EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
//查看账号信息,输出资源信息则为部署成功/ r1 F! r5 n; [$ M/ R( h9 p; U
cleos get account eosiotest; m) K5 Y2 K( a0 q$ H' G
permissions: " S2 _ a2 Y1 p4 Z$ y' O
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
memory: 0 p" x7 ]! u( j/ W. _9 b* C- T. k
quota: 2.973 KiB used: 2.926 KiB
net bandwidth: & U+ |9 W0 d+ P/ `# ?6 ~& z( r
delegated: 10.0000 EOS (total staked delegated to account from others)
used: 0 bytes; z7 B9 V( O; ~0 p2 E. p3 \
available: 8.145 TiB . v( x' L5 s# w/ M
limit: 8.145 TiB 3 R0 L! _9 r" Q, G
cpu bandwidth:$ u4 y9 A/ S8 M' f6 x
delegated: 10.0000 EOS (total staked delegated to account from others)
used: 0 us A+ @: @* h0 n) k7 ]
available: 473.5 hr - W. A4 ~/ T+ j5 r F5 |: q
limit: 473.5 hr( g9 k% O) y& g$ q6 l
6 D' V% r1 K. [& |
//给账号转账
cleos push action eosio.token transfer '["eosio","eosiotest","100.0000 SYS",""]' -p eosio3 K! a. S* a; f3 ]
//再将eosiotest转账到eosio,验证资源是否减少; Z* I: s: q' L3 ?6 V7 k
cleos push action eosio.token transfer '["eosiotest","eosio","100.0000 SYS",""]' -p eosio
//再次查看账号信息,发现资源变少
cleos get account eosiotest
问题汇总
Q:部署合约报错:unable to find key
A:4.0以后默认系统币名字是SYS,所以需要发布的代币修改成SYS,或者修改eosio_build.sh脚本中默认名称,重新进行编译(参考下图)0 _. E: V$ O0 ^% t! x) Y& k
Q:transaction took too long7 P# i9 d5 W5 O3 l" B3 n& }% ^
A:nodeos程序启动时添加max-transaction-time或者修改config.ini对应属性,重新启动nodeos
Q:to account does not exist
A:在部署system合约之前,必须创建三个账号eosio.ram,eosio.ramfee,eosio.stake
成为第一个吐槽的人