EOSIO 主网新创建一个账户的 RAM 消耗到哪里了

EOSIO主网创建新账户需要购买一定RAM,这主要消耗在状态数据库中用于存储合约数据和账户信息。在部署系统合约后,额外的RAM用于创建`account`、`permissions`和`links`表。用户实际支付的RAM包括硬编码值,但部分被系统合约抵扣,因精度损失,最终所需RAM会稍有增加。
摘要由CSDN通过智能技术生成

首先简单了解下 EOSIO 区块链数据存储:

.
├── blocks
│   ├── blocks.index            // 区块索引文件
│   ├── blocks.log              // 所有不可逆区块
│   └── reversible              
│       └── shared_memory.bin   // 可逆区块目录,保存刚打包的待确权区块
├── snapshots
└── state
    └── shared_memory.bin   // 合约状态数据库
  • blocks : 保存区块数据
  • state: 状态数据库, 也就是合约的数据库

shared_memory.bin 是内存映射的。

为什么现在主网创建一个 EOSIO 账户需要购买大约 1600 bytes 左右的 ram

const static uint32_t   overhead_per_account_ram_bytes     = 2*1024; ///< overhead accounts for basic account storage and pre-pays features like account recovery
...
// https://github.com/EOSIO/eos/blob/master/libraries/chain/eosio_contract.cpp#L115
int64_t ram_delta = config::overhead_per_account_ram_bytes; // 硬编码的 2048 bytes,
ram_delta += 2*config::billable_size_v<permission_object>; // 2*288 bytes

ram_delta += owner_permission.auth.get_billable_size();  // 一般 50 bytes
ram_delta += active_permission.auth.get_billable_size(); // 一般 50 bytes
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值