以太坊状态模型的最大问题是:平均状态增长与最坏情况状态增长之间的巨大差异。 本文系Vitalik在以太坊研究者论坛里提出的一个最新讨论,该讨论是继以太坊研究科学家BarnabéMonnot提出的关于EIP1559切实实施的思路进行的再次结合。 以下为原文翻译,团队对部分词汇进行了批注及少许删改。 作者:Vitalik Burerin 编译:白计划团队 特别感谢 @barnabe 在早期提出了类似的想法。 正如我在此前的《关于资源定价的立场文件》中详细讨论的那样,以太坊中的Gas实际上是支付三种不同的资源: 1.带宽(必须下载的事务数据) 2.计算(验证和执行交易的时间) 3.存储(历史记录,但更重要的是状态陈述,例如帐户余额,随机数,约代码,合约存储) 白计划批注:《关于资源定价的立场文件》是一份区块链资源定价的草案,其中Vitalik通过数学演算推论了相应的定价方式。 该草案内容包含:价格与数量、社会成本曲线、首次和二次拍卖、可调整收费计划、存储维护费,以及包含为什么固定费用并未得到充分利用? 带宽和计算是短暂的成本,存储不像这两个成本,它会超出短暂的限制。 在一个块的时间内,一个节点可以进行多少次计算或下载数据是有限度的,一旦该块通过,下载和验证所需的量就达到了极限。块的大部分都消失了(将来只有少数同步节点需要对其进行处理)。 而存储是持续的成本。如果一个单独的块状态增加了100MB,该块当下可以处理好,但是一系列的块将使以太坊无法使用。状态增长的“爆发”影响可以忽略不计,但长期影响是最严重的,一旦建立的一个超大状态就永远给网络增添了负担。 不过,随着状态变为无状态(白计划注:即无状态以太坊方案),(超大)状态的长期影响会大大减少:状态不会给网络造成永久负担,它只会负担大约一年的时间,在那一年中,只有一小部分节点需要实际存储那个(超大)状态。但这种长期(一年)成本仍然是真实存在的,并且需要将其定价。 平均大小与最坏情况的存储大小 在当前(状态)协议(普遍认为是不可持续的)和状态到期的改进协议中,对状态建模的不足之一是平均状态增长与最坏情况状态增长之间的巨大差异。 考虑当前的协议。如今,该状态的总大小约为5.5亿个对象,约32GB(不包括trie开销)。如果我们剔除上一年所有not touched的状态,那总量很容易下降一半以上。 现在,最坏的情况是什么? 合同代码的创建按每字节200Gas的费用收费,因此,如果将一个区块分成3个事务,每个事务创建一个合同,我们可以为12334800Gas+3*55000Gas来制作3个20558字节的合同,以增加合同创建的开销。 (责任编辑:admin) |