回顾:状况巨细办理技术

为了避免以太坊的状况容量无止境地膨胀,咱们需求用一些办法使旧状况「失活」, 这样参加网络的节点就不再需求存储旧状况了。即便大多数的客户端都变成无状况,好像也能够合理预见,最终这个系统会扩容到网络无法一向保证所有状况都可用的境地。有两个办法能够使旧状况失活:

  • 直接删掉,然后能够把它移到别的的默克尔树,这样关心该状况目标的人能够获取相应的默克尔分支,在未来某个时分用它来激活该状况。

  • 不把目标移出树结构;相反,只在树的该方位标记「失活」,这样节点就不会存储它 (且协议也不会要求它们这样做)。经过发送一个提供默克尔证明 (即见证数据) 的业务来拜访该状况,失活的目标就能够重新被拜访了。

办法 (1) 对应于「经典的存储租金计划」,办法 (2) 对应于传统「无状况客户端」的最简单延伸——旧状况能够被忘记的模型。这两种办法都答应关心特定状况目标的个人追寻默克尔分支,这样随后假如那些状况目标失活了它们能够用来激活这些目标。然而,这两种办法都是有显着问题的。

当要在某个已失效合约的同一个地址上再创立合约时,办法 (1) 会出现一些极点状况。那就是,假如一个合约在地址 A 上创立了,然后现已失效了,那么在地址 A 上创立这个合约的业务会被重新履行,这样会在地址 A 上创立一个新目标,这会影响原始目标的激活。另一种状况是当在地址 A 上创立了一个目标,然后阅历失活、被激活、被修正 (例如,发送合约上的资金到另一个账户)、再失活、再用第一次失活所在的默克尔分支激活。这违背了保留规则,且可能被用于铸币;需求添加额定的默克尔证明来证明一个合约还没有被另一个特定状况激活,而该状况也测验被激活。

办法 (2) 遇到的是不同的问题。假定两个相邻的地址 (也就是两者间没有目标) A1 和 A2 都已失活。这样,不只 A1 和 A2 都不再能够拜访 (除非有人存储了默克尔分支),而且 A1 和 A2 之间的所有地址都不能够拜访了。也就是说,假如总共有 N 个地址,那么大约 1/N 的可用地址空间都不再可拜访了。当一半的地址都失活了,大约 1/4 的地址空间不再可拜访。随着时间推移,会越来越难找到空间生成新的地址。而且由于新地址越来越会集在剩余的「可拜访」空间上,每 N 年可拜访空间折半的这种影响会呈指数增加。

提议

我提议对办法 (2) 进行修正,能够解决以上的问题。正如很多办法 (2) 的提议完成计划所出现的,账户有「活跃」与「失活」两种状况,失活账户是那些超过一年未被拜访过的账户。要拜访失活账户,你需求提供见证数据;当失活账户被拜访了,该账户会主动解除失活状况 (触及任何账户都会重置它的一年失活期计算)。修正内容如下:

咱们给每个地址添加一个 32 个字节的 「epoch 前缀」 (会被解译为一个整数)。例如,epoch 前缀是 9 的地址是这样:0x00000009de0b295669a9fd93d5f28d9ec85e40f4cb697bae,以 00000009 作为前缀。

默克尔途径会直接依靠 epoch 的前缀而不是它的哈希值 (因此 merkle_path_key = address[:4] + hash(address[4:]) 而不是现在在用的 merkle_path_key = hash(address) 。这保证了「没用过的」地址空间是连续的。

除非地址的 epoch 前缀是小于或等于区块链已运转的年数,不然地址不能被运用

会添加一个 CREATE3 操作码,它会把 epoch 前缀作为一个参数,并在具有该 epoch 前缀的一个地址上创立一个合约。

引荐用户和合约总是运用具有尽可能新的 epoch 前缀来创立账户,甚至设为默认设置,由于必定会有具有最新 epoch 前缀的全状况仍然是能够拜访的。为了还能保有「反事实地址 (counterfactual addresses)」(即在合约代码被发布前,用户在链上 [例如经过发送 ETH 或 ERC20 代币] 或链下 [经过在一个通道里互动] 交互的地址),用旧 epoch 前缀来创立合约还是可能的。但是,关于想要创立反事实地址的用户,假如长期不创立,他们就要负责为该账户存储旧状况的分支。

经过多年的运转,预计活跃状况会由两部分构成:(i) 有最新 epoch 前缀的悉数地址空间,(ii) 与最近被活跃运用过的账户相对应的特定旧状况

请注意,这个计划正常状况下扩展到合约上;事实上,主动遵从这个计划是契合合约自身运作的。由于在这个计划里,地址中代表存储的部分以几个字节为前缀,它们所代表的数字 N 指的是这些数据是在 N 年与这些地址产生关联。这很合适用于存储像代币余额这样的数据。

来历链接:ethresear.ch

视野开拓

从这一论证风格看来,自私自利是第一位的概念而利他、合作则是导出概念,因而是第二位的。读这类学者的著作,绝对是一种智力训练。他们真的非常聪明,却把才智用错了地方,因为再好的论证也掩盖不了平庸的思想。凭其三寸不烂之,他们可以把跳进冰冷的河水营救陌生人解释成自私行为,因为你想得到表扬;还可以把母亲对孩子的奉献也解释成自私行为,因为你们是直系亲属,想更好地传递基因!捧臭脚者在一旁说,这才是真学术………-《蓝图》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注