EOS 的网络带宽和计算资源是通过抵押代币的方式获得,如果不需要了可以解除抵押收回原先的代币。
投票的权重和抵押代币所获得的带宽和计算资源相关,抵押了越多,投票的权重越大。同时投票的权重会随着时间的推移减少,这个设定鼓励用户持续更新自己的投票。
1.启动节点,创建钱包
$./cleos wallet create PW5KHHECv4bJxXsLocmsSnkdMvMBood5Tnd3KYmWEySfnvY1bqe9b
$./cleos wallet unlock --password PW5KHHECv4bJxXsLocmsSnkdMvMBood5Tnd3KYmWEySfnvY1bqe9b
2.部署eosio合约
系统部署合约之前都需要部署一个bios合约
$./cleos set contract eosio ../../contracts/eosio.bios -p eosio
3.导入私钥,创建eosio.token账户,部署合约
$./cleos wallet import 5JkgLHjSHmT8pWD5vKfH6vjW5jRtekx37rqZpbwF2Au251xqT41
$./cleos create account eosio eosio.token EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42 EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42
注:代码部分可以滑动
部署eosio.token合约
$./cleos set contract eosio.token ../../contracts/eosio.token/ -p eosio.token
4.创建账户,获得代币
$./cleos create account eosio bp1 EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42 EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42
给bp1发布eos币
$./cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply": "100000000000.0000 EOS", "can_freeze": 0, "can_recall": 0, "can_whitelist": 0}' -p eosio.token
$./cleos push action eosio.token issue '{"to":"bp1","quantity":"100000000.0000 EOS","memo":"issue"}' -p eosio
$./cleos set contract eosio ../../contracts/eosio.system -p eosio
5.创建voter
如果创建账户报下面的错误
Error 3080001: account using more than allotted RAM usage
Error Details:
account voter has insufficient ram bytes; needs 2996 has 0
可以用newaccount 创建账户
$./cleos system newaccount eosio voter EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42 EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42 --stake-net '50.00 EOS' --stake-cpu '50.00 EOS'
创建账户之后最好通过命令查看一下当前账户中的资源是否充足
$./cleos get table eosio voter userres
如果资源不足可以通过buyram命令买资源
$./cleos system buyram voter voter '1000 EOS'
或者
$./cleos system buyram eosio voter '1000 EOS'
6.给voter发布eos币
$./cleos push action eosio.token issue '{"to":"voter","quantity":"10000000000.0000 EOS","memo":"issue"}' -p eosio
7.注册bp
$./cleos system regproducer bp1 EOS8cMSi7eiGXC8oWcNfYFf83BRToBoKS4Dp46ERA6Hkb1cCwMn42
8.锁定代币,换取票数
投票之前必须先换取票数
$./cleos system delegatebw voter voter '25000000.0000 EOS' '25000000.0000 EOS' --transfer
9.投票
$./cleos system voteproducer prods voter bp1
查询余额
$./cleos get currency balance eosio.token voter
注:代码部分可以滑动
10.解锁eos
解锁的时候要注意:数量不能大于之前锁定的数量
$./cleos system undelegatebw voter voter '5000000.0000 EOS' '5000000.0000 EOS'
閱讀更多 區塊鏈研究實驗室 的文章