cleos查询账户RAM总购量与实际购买不一致
cleos get account
通过cleos 查询账户RAM余额
cleos -u http://127.0.0.1:8888 get account zer41iyhahwp
...
memory:
quota: 9.366 KiB used: 3.078 KiB
但实际创建账户时,RAM购买量为8192
byte
cleos get table
通过查询用户资源表
cleos -u http://127.0.0.1:8888 get table bitconch zer41iyhahwp userres
$ cleos -u http://127.0.0.1:8888 get table eosio zer41iyhahwp userres
{
"rows": [{
"owner": "zer41iyhahwp",
"net_weight": "10.00000000 EOS",
"cpu_weight": "10.00000000 EOS",
"ram_bytes": 8191
}
],
"more": false
}
ram_bytes
的数据与创建时RAM数据基本(所差1byte是因为,购买RAM通过Bancor估价代币购买,会与实际少许误差)一致。那cleos查出的数据差距在哪?下面跟下系统合约源代码
系统合约源码
查看RAM购买后,设置资源的位置(跳转GitHub)
set_resource_limits( res_itr->owner, res_itr->ram_bytes + ram_gift_bytes, net, cpu );
发现设置资源的位置加上附加的ram_gift_bytes
查看ram_gift_bytes
具体数值(跳转github)
static constexpr int64_t ram_gift_bytes = 1400;
所以,查询账户RAM比实际购买多的部分为合约设置时赠送的部分(忽略运算误差)。
9.366 KiB = 8191 byte + 1400 byte