私链eosio.system合约部署
放弃六月们
发表于 2022-11-10 08:55:48
106
0
0
eos版本:v1.0.5/ w' b8 A1 M7 \5 L
操作系统:centos 7
环境:私有链0 a. J* U) d, H6 g/ f' d ^/ `
目的
由于正式链的ram,net带宽,cpu带宽太宝贵,对于测试的同学建议先在私链上进行测试,避免浪费EOS币。
部署
部署是以私有链并且没有创建任何账号和合约为例,如果已经创建账号和部署智能合约,请对号入座跳着看。7 ]# C" o/ B; m5 p: l, ]: s
//重复1,2创建必备账号
//eosio.token
//eosio.system
//eosio.ram4 `( F* h5 a, `: ?; [
//eosio.ramfee
//eosio.stake9 u. _$ N' C" t% g( f6 P4 H
//默认在代码根目录下执行. V, J+ G7 K( s8 `0 G
//1.创建密钥对- s& s7 e! l4 X# Y
cleos create key/ d3 b' \: O# x3 n! w
Private key: 5KKibeZ9KX2bR3MZQnTRVx5aGgpGqtsuitkr21FkpwRERuRk4Ym
Public key: EOS7d1YqzyP52FBkfmyu5pLVPpKjWZ4Ld3DZg8997eFLLZWLb7QUL, a5 Z. \# `" B4 t' j x* [
//2.创建账号$ r! K: N- E) e8 f
cleos create account eosio eosio.token ${publicKey} ${publicKey}. r. ?: X! a3 @1 y9 q0 i
//部署eosio.token,发布代币# E5 ?0 |) a: z$ \7 P) L
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,报错如下,要保证开头注明的四个账号已经创建; [% ^8 c ~6 p3 h8 ~# }
cleos set contract eosio ../../contracts/eosio.system/ -p eosio. X) \* e6 f# _" D; U3 Q4 W$ y
Reading WAST/WASM from ../../contracts/eosio.system/eosio.system.wasm...1 F, R' x& r9 Z! a6 s; w
Using already assembled WASM...% ~, p- B& S6 X. l& r! q
Publishing contract...% U2 O4 I( l+ [" c
Error 3080006: transaction took too long* [6 d/ X0 R1 E2 D M
//注意
./eosio_build.sh -s "EOS" 购买资源的币种,要使用默认的币种,不写则为SYS6 t, D, w. Y% Q8 F4 Y
//创建交易账号
cleos system newaccount --stake-net "10.0000 SYS" --stake-cpu "10.0000 SYS" --buy-ram-kbytes 3 eosio eosiotest EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
//查看账号信息,输出资源信息则为部署成功$ p/ }$ W; i: ?( C, n
cleos get account eosiotest+ a8 T. w0 k/ o5 v# O5 E) y. x
permissions: D0 q4 A5 o% N" A" }
owner 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV4 ?0 }$ A6 E# P W( U3 ^1 w+ v
active 1: 1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV9 ^$ J* b4 U$ z' q
memory:
quota: 2.973 KiB used: 2.926 KiB ) G+ f: { s# C$ J6 z8 B, a- P
net bandwidth:
delegated: 10.0000 EOS (total staked delegated to account from others)
used: 0 bytes
available: 8.145 TiB 6 i3 a8 D4 E" e5 T1 x. d4 s
limit: 8.145 TiB
cpu bandwidth:& t! [5 l6 ?, ~& L a+ a
delegated: 10.0000 EOS (total staked delegated to account from others)
used: 0 us 9 O5 m3 C1 V3 R
available: 473.5 hr i' m$ A8 d, ]
limit: 473.5 hr% x, J$ h. }5 n
//给账号转账) b) F& | d( F( Z x1 n
cleos push action eosio.token transfer '["eosio","eosiotest","100.0000 SYS",""]' -p eosio
//再将eosiotest转账到eosio,验证资源是否减少. `* f/ i9 e, \7 T6 D
cleos push action eosio.token transfer '["eosiotest","eosio","100.0000 SYS",""]' -p eosio7 Z- C) C3 y) L6 j3 Y& E9 l. m$ Z
//再次查看账号信息,发现资源变少
cleos get account eosiotest# y) ]& D2 x3 U, w r% e
问题汇总
Q:部署合约报错:unable to find key
A:4.0以后默认系统币名字是SYS,所以需要发布的代币修改成SYS,或者修改eosio_build.sh脚本中默认名称,重新进行编译(参考下图)- n& [0 {( Q$ V: j' i# r0 j
Q:transaction took too long
A:nodeos程序启动时添加max-transaction-time或者修改config.ini对应属性,重新启动nodeos. c/ ~/ v7 z9 k. T
Q:to account does not exist+ k1 G# N0 q- X7 m U5 B
A:在部署system合约之前,必须创建三个账号eosio.ram,eosio.ramfee,eosio.stake
成为第一个吐槽的人