私链eosio.system合约部署
放弃六月们
发表于 2022-11-10 08:55:48
153
0
0
eos版本:v1.0.50 f" d( s0 U f
操作系统:centos 79 |' G% F( [. l% I
环境:私有链. d6 Y& T! P& Q {
目的
由于正式链的ram,net带宽,cpu带宽太宝贵,对于测试的同学建议先在私链上进行测试,避免浪费EOS币。8 ~# i& i3 [. `9 \8 ~3 V: T
部署
部署是以私有链并且没有创建任何账号和合约为例,如果已经创建账号和部署智能合约,请对号入座跳着看。2 d& A! d0 F4 Q. }
8 }( A+ _, o4 h" c$ e: v
//重复1,2创建必备账号9 d4 _( R0 C! x. N T) r0 d* Y
//eosio.token5 V5 r) p* C3 C& m0 V
//eosio.system8 h \6 S' z4 D7 S/ ]- q# c& t$ c
//eosio.ram
//eosio.ramfee
//eosio.stake! _( F( `$ V+ E1 m8 g6 O% F4 n
//默认在代码根目录下执行
//1.创建密钥对/ d ^4 ^; n' K# @
cleos create key/ ?) Q5 ?7 o7 F# S. w; d6 |+ F
Private key: 5KKibeZ9KX2bR3MZQnTRVx5aGgpGqtsuitkr21FkpwRERuRk4Ym
Public key: EOS7d1YqzyP52FBkfmyu5pLVPpKjWZ4Ld3DZg8997eFLLZWLb7QUL
//2.创建账号
cleos create account eosio eosio.token ${publicKey} ${publicKey}
//部署eosio.token,发布代币
cleos set contract eosio.token ../../contracts/eosio.token/
cleos push action eosio.token create '["eosio","1000000000.0000 EOS",0,0,0]' -p eosio.token8 Y5 ~0 g8 @ X3 h# y$ S8 ^
cleos push action eosio.token issue '["eosio","1000000000.0000 EOS","issue"]' -p eosio, O2 g1 ?3 q) g3 E$ I
//部署eosio.system,报错如下,要保证开头注明的四个账号已经创建
cleos set contract eosio ../../contracts/eosio.system/ -p eosio1 J9 q9 H* ]' u6 n/ x% U
Reading WAST/WASM from ../../contracts/eosio.system/eosio.system.wasm.../ {* a# g! m6 N0 B% P
Using already assembled WASM...+ S! R* i U- h$ b! v u( ?
Publishing contract...
Error 3080006: transaction took too long0 \4 C( E" Q1 @0 \
//注意8 o6 ]9 R. E7 F4 f4 }
./eosio_build.sh -s "EOS" 购买资源的币种,要使用默认的币种,不写则为SYS
//创建交易账号 [0 r/ A/ |! I9 U" C+ a
cleos system newaccount --stake-net "10.0000 SYS" --stake-cpu "10.0000 SYS" --buy-ram-kbytes 3 eosio eosiotest EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV % _# J# m8 n1 ~- N( [, A
//查看账号信息,输出资源信息则为部署成功2 v+ |3 e% ]+ T) C* h
cleos get account eosiotest
permissions:
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV0 [7 N9 a$ \& d. J$ u$ t- D( e
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV6 C3 P( G) P1 V& ` b- ~/ L) E
memory:
quota: 2.973 KiB used: 2.926 KiB / K9 s) x$ h8 e$ m$ I
net bandwidth:
delegated: 10.0000 EOS (total staked delegated to account from others)/ E N* Y; o7 F" N/ R; _ ~( B; J
used: 0 bytes1 L7 W9 A4 R4 b
available: 8.145 TiB 1 O l- _. P2 O# `( L. W
limit: 8.145 TiB : t+ h0 q4 A3 d. B) Z
cpu bandwidth:- r; r: X0 x T- d3 C& d! m! l
delegated: 10.0000 EOS (total staked delegated to account from others)
used: 0 us 6 N' w$ B# e5 B z
available: 473.5 hr - w& Q4 b, L0 c% a7 g. M
limit: 473.5 hr1 ?6 k1 M3 Y/ f A/ n
//给账号转账
cleos push action eosio.token transfer '["eosio","eosiotest","100.0000 SYS",""]' -p eosio
//再将eosiotest转账到eosio,验证资源是否减少
cleos push action eosio.token transfer '["eosiotest","eosio","100.0000 SYS",""]' -p eosio
//再次查看账号信息,发现资源变少
cleos get account eosiotest" M" Q6 b2 D/ A; Q9 o7 m) S! i! i
问题汇总- t" _' U7 m+ @3 \$ `
Q:部署合约报错:unable to find key
A:4.0以后默认系统币名字是SYS,所以需要发布的代币修改成SYS,或者修改eosio_build.sh脚本中默认名称,重新进行编译(参考下图)' ?, @ J _9 s: F$ d
Q:transaction took too long
A:nodeos程序启动时添加max-transaction-time或者修改config.ini对应属性,重新启动nodeos' T0 O7 v/ [+ Y4 J" h
Q:to account does not exist
A:在部署system合约之前,必须创建三个账号eosio.ram,eosio.ramfee,eosio.stake
成为第一个吐槽的人