私链eosio.system合约部署
放弃六月们
发表于 2022-11-10 08:55:48
151
0
0
eos版本:v1.0.53 G+ l0 k0 b- K% H' |
操作系统:centos 7- z' i0 O- J3 s# J, E8 [& s
环境:私有链0 H# N# D9 z- M$ k
目的
由于正式链的ram,net带宽,cpu带宽太宝贵,对于测试的同学建议先在私链上进行测试,避免浪费EOS币。+ j6 C% W" g& e
部署5 |8 _4 c W8 ]1 h' g. v" u3 Z( g
部署是以私有链并且没有创建任何账号和合约为例,如果已经创建账号和部署智能合约,请对号入座跳着看。
. D; |! e; n( Z0 s* R
//重复1,2创建必备账号2 X- o4 U2 L( r& k' y
//eosio.token1 r* G {/ {& j- ]! h1 L. m6 D+ ~( X
//eosio.system- i. e! C7 I. {) I& S* E6 A2 b
//eosio.ram
//eosio.ramfee$ R6 q8 a5 s$ O
//eosio.stake
//默认在代码根目录下执行# M1 u5 ~! X H% l+ Q
//1.创建密钥对7 }( X* D9 \" E5 w& e
cleos create key
Private key: 5KKibeZ9KX2bR3MZQnTRVx5aGgpGqtsuitkr21FkpwRERuRk4Ym
Public key: EOS7d1YqzyP52FBkfmyu5pLVPpKjWZ4Ld3DZg8997eFLLZWLb7QUL
//2.创建账号7 [2 D2 `9 {2 d% y) N( v
cleos create account eosio eosio.token ${publicKey} ${publicKey}
//部署eosio.token,发布代币2 b( z( j: G6 m4 k. ^
cleos set contract eosio.token ../../contracts/eosio.token/
cleos push action eosio.token create '["eosio","1000000000.0000 EOS",0,0,0]' -p eosio.token& T* m. h& A* v- _! v( m/ G# C
cleos push action eosio.token issue '["eosio","1000000000.0000 EOS","issue"]' -p eosio
//部署eosio.system,报错如下,要保证开头注明的四个账号已经创建" P# J4 Y0 a& C! t
cleos set contract eosio ../../contracts/eosio.system/ -p eosio
Reading WAST/WASM from ../../contracts/eosio.system/eosio.system.wasm...
Using already assembled WASM...7 O1 J- u6 W2 D& m( c, @2 z
Publishing contract...9 n5 u& x( w( W. T/ `
Error 3080006: transaction took too long0 e/ E; G/ z' m7 l. b' p$ h# ~1 \
//注意
./eosio_build.sh -s "EOS" 购买资源的币种,要使用默认的币种,不写则为SYS& ^3 }6 s6 D, E L% f% P
//创建交易账号
cleos system newaccount --stake-net "10.0000 SYS" --stake-cpu "10.0000 SYS" --buy-ram-kbytes 3 eosio eosiotest EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV : |1 n6 X- h/ E; d& E
//查看账号信息,输出资源信息则为部署成功
cleos get account eosiotest/ K# x. X" G4 Q( {) h+ S
permissions:
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV9 _: L, M0 p/ V9 F
memory: 1 @) p! S7 S4 U0 y% y0 |
quota: 2.973 KiB used: 2.926 KiB
net bandwidth: 3 `. O; ^( M7 H U2 O: g" N* F
delegated: 10.0000 EOS (total staked delegated to account from others). n9 v3 v M- V, A" z% @
used: 0 bytes& \1 }. X( v/ o. q7 k3 C
available: 8.145 TiB 8 }( X% ?% G+ X1 t6 ~$ ~( t% b4 M& U
limit: 8.145 TiB ! I- F4 _& s* Z! I0 w- x
cpu bandwidth:
delegated: 10.0000 EOS (total staked delegated to account from others)
used: 0 us % R7 J# _, x7 x/ z9 U7 U# n
available: 473.5 hr 5 W j$ @9 b8 h. ~# @4 S, i+ u
limit: 473.5 hr
//给账号转账* f: B1 [' z* s h2 L
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
//再次查看账号信息,发现资源变少0 Q$ G4 v" e2 e$ t
cleos get account eosiotest
问题汇总9 P: b, p1 Y" e x' p1 {
Q:部署合约报错:unable to find key
A:4.0以后默认系统币名字是SYS,所以需要发布的代币修改成SYS,或者修改eosio_build.sh脚本中默认名称,重新进行编译(参考下图)
Q:transaction took too long
A:nodeos程序启动时添加max-transaction-time或者修改config.ini对应属性,重新启动nodeos8 K8 l5 J0 t- ^
Q:to account does not exist
A:在部署system合约之前,必须创建三个账号eosio.ram,eosio.ramfee,eosio.stake
成为第一个吐槽的人