来源|?ethresear.ch
作者|?VitalikButerin
译者按:本文需要读者对状态管理和stateexpiry机制作一定了解。
回顾:状态大小管理技术
为了防止以太坊的状态容量无止境地膨胀,我们需要用一些方法使旧状态“失活”,这样加入网络的节点就不再需要存储旧状态了。即使大多数的客户端都变成无状态,似乎也可以合理预见,最终这个系统会扩容到网络无法一直保证所有状态都可用的地步。有两个方法可以使旧状态失活:
1、直接删掉,然后可以把它移到另外的默克尔树,这样关心该状态对象的人可以获取相应的默克尔分支,在未来某个时候用它来激活该状态。
V神:区块链系统需要某种形式的信任假设:9月14日早间,V神在推特与网友讨论区块链领域的信任问题时表示,验证系统是否按照某人所说的方式运行,这应该被视为一种信任假设。我同意我所说的(此前V神发表过一篇信任模型文章)信任和kTrust是不同的概念,但我认为两者都是有效和重要的。许多人声称,他们的体制不需要信任,因为有经济激励。但是,如果想要一个强有力的保证,证明这个系统将会有效时,仍然需要假设,不会有更强有力的因素激励人们去打破这个系统。所以仍然需要某种形式的“信任”(假设)。而这比需要信任那些人的诚实和善意要弱得多。[2020/9/14]
2、不把对象移出树结构;相反,只在树的该位置标记“失活”,这样节点就不会存储它(且协议也不会要求它们这样做)。通过发送一个提供默克尔证明(即见证数据)的事务来访问该状态,失活的对象就可以重新被访问了。
V神:“减半导致BTC价格上涨”的理论不可证伪:以太坊创始人V神刚刚发推称,“减半导致比特币价格上涨”的理论是无法证伪的: BTC减半之前是高峰吗?不是,它因预期减半而上涨 ,包括减半期间、减半后价格上涨也是如此。V神还指出,比特币最后一个2万美元的峰值接近2016年和2020年减半之间的中点。[2020/6/15]
方法(1)对应于“经典的存储租金方案”,方法(2)对应于传统“无状态客户端”的最简单延伸——旧状态可以被遗忘的模型。这两种方法都允许关心特定状态对象的个人追踪默克尔分支,这样随后如果那些状态对象失活了它们可以用来激活这些对象。然而,这两种方法都是有明显问题的。
V神:“加入谷歌”是个笑话:近日,Vitalik Buterin在王峰十问回应了关于“离开以太坊、加入谷歌”的传闻。V神称,谷歌那件事是个笑话,很明显,这封电子邮件来自于一位谷歌招聘人员,他/她可能使用了谷歌的招聘算法,这个算法只要远程判断出你是一个出色的、能够胜任他们工作的程序员,就会自动发送招聘邮件。[2018/6/23]
当要在某个已失效合约的同一个地址上再创建合约时,方法(1)会出现一些极端情况。那就是,如果一个合约在地址A上创建了,然后已经失效了,那么在地址A上创建这个合约的事务会被重新执行,这样会在地址A上创建一个新对象,这会影响原始对象的激活。另一种情况是当在地址A上创建了一个对象,然后经历失活、被激活、被修改(例如,发送合约上的资金到另一个账户)、再失活、再用第一次失活所在的默克尔分支激活。这违背了保留规则,且可能被用于铸币;需要增加额外的默克尔证明来证明一个合约还没有被另一个特定状态激活,而该状态也尝试被激活。
V神:未持有数字货币令牌的人不是失败者:V神刚刚转发用户Jason Choi关于时代广场大屏幕出现“nocoiner”字样的推文,并发表评论称“我非常不喜欢‘nocoiner’这样的侮辱。没有持有数字货币令牌的人不是一点都不酷的失败者。他们是在使用非常合理的启发式教育法,不亲自参与他们不了解的行业。这有很多正当理由来对此保持警惕。”[2018/6/2]
方法(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+hash(address)而不是现在在用的merkle_path_key=hash(address)。这确保了“没用过的”地址空间是连续的。
除非地址的epoch前缀是小于或等于区块链已运行的年数,否则地址不能被使用
会增加一个CREATE3操作码,它会把epoch前缀作为一个参数,并在具有该epoch前缀的一个地址上创建一个合约。
推荐用户和合约总是使用具有尽可能新的epoch前缀来创建账户,甚至设为默认设置,因为肯定会有具有最新epoch前缀的全状态仍然是可以访问的。为了还能保有“反事实地址(counterfactualaddresses)”,用旧epoch前缀来创建合约还是可能的。但是,对于想要创建反事实地址的用户,如果长期不创建,他们就要负责为该账户存储旧状态的分支。
经过多年的运行,预计活跃状态会由两部分构成:(i)有最新epoch前缀的全部地址空间,(ii)与最近被活跃使用过的账户相对应的特定旧状态
请注意,这个方案正常情况下扩展到合约上;事实上,主动遵循这个方案是符合合约自身运作的。因为在这个方案里,地址中代表存储的部分以几个字节为前缀,它们所代表的数字N指的是这些数据是在N年与这些地址产生关联。这很适合用于存储像代币余额这样的数据。
金色周刊是金色财经推出的一档每周区块链行业总结栏目,内容涵盖一周重点新闻、行情与合约数据、矿业信息、项目动态、技术进展等行业动态。本文是项目周刊,带您一览本周主流项目以及明星项目的进展.
1900/1/1 0:00:00由于缺乏透明度,最受欢迎的稳定币Tether在加密货币社区中一直具有一定程度的不确定性并受到怀疑.
1900/1/1 0:00:002021年NFT市场正经历爆发式增长。数据能说明一切,2020年Q4NFT销售额仅9300万美元,而2021年Q1NFT的销售额达到20亿美元,增长超过20倍.
1900/1/1 0:00:00一直以来,区块链锁定的资金,本质上是只停留在区块链上运行的,这无非是单一资本间的相互游戏,并不能与现实经济产生联系。因此,基于传统估值模型下的定价,是不能作用在区块链项目中的.
1900/1/1 0:00:00BitKeep将联合若森数字共同推出《画江湖之不良人》系列NFT卡牌BitKeep将与若森数字官方达成战略合作关系,联合若森数字旗下知名动漫IP《画江湖之不良人》.
1900/1/1 0:00:00二季度,加密市场完成了风格切换,整体从加速上涨至短期高点转为横盘宽幅调整。根据CoinMarketCap的统计,加密货币总市值从季度初的约1.89万亿美元上涨至峰值约2.55万亿美元后就开始下降.
1900/1/1 0:00:00