事实上,到这里,本地的测试网以及可以进行账户创建和合约部属等操作了。但是,此时网络状况与主网差异相当大:
测试网中无Token:执行命令cleos get account eosio可以看到结果中并无显示Token余额创建的账户资源都是无限的,这与实际情况相差很大。
因为,我们要部署系统合约,使得本地测试环境与主网环境更加接近。
在部署eosio.system合约之前,必须先创建如下账户:
systemAccounts = [
'eosio.bpay',
'eosio.msig',
'eosio.names',
'eosio.ram',
'eosio.ramfee',
'eosio.saving',
'eosio.stake',
'eosio.token',
'eosio.upay',
]
执行如下命令来创建这些账户:
$ cleos create account eosio eosio.bpay EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.msig EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.names EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.ram EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.ramfee EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.saving EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.stake EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio
eosio.token EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
$ cleos create account eosio eosio.upay EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV;
接下来将代币合约部署到eosio.token账户中:
# 进入编译后的合约目录
$ cd ~/repos/eos/build/contracts
$ cleos set contract eosio.token ./eosio.token
创建并发行10亿个SYS代币(SYS相当于主网中的EOS):
$ cleos push action eosio.token create '["eosio","1000000000.0000 SYS"]' -p eosio.token@active
$ cleos push action eosio.token issue '["eosio","1000000000.0000 SYS"]' -p eosio@active
如果不理解这几行命令也不要紧,我们在接下来的文章里,会详细探讨eosio.token这个合约的代码。
发行了系统代币后,就可以部署eosio.system合约了:
$ cleos set contract eosio ./eosio.system
至此,系统合约部署完毕,我们可以创建自己的账户了。