观点|以太坊状态规模管理诸提议
从状态树上移除vs.给状态树安排一个“退休”部分
另一个区分不同状态过期提议的技术角度是“一树流”和“二树流”。也就是说,我们到底是像现在这样,只有一棵状态树,只不过把某些状态标记为过期;还是直接把失活的状态从主状态树上移除,转移到另一棵专门的树上?
一树流
-激活节点以白色标记,失活节点以灰色标记-
注意,即使是树上的中间节点,也会被标记为激活或者失火;标记工作可以在状态树上的每个节点处完成。
二树流
Peter Schiff:灰度大规模广告投放活动未能推动其以太坊信托增长:黄金支持者和比特币批判家Peter Schiff对加密货币资产管理公司Grayscale Investments进行了抨击,称该公司未能通过“大规模电视广告投放”推动其以太坊信托基金(ETHE)的份额增长。Schiff认为,ETHE看似糟糕的表现给比特币信托基金(GBTC)带来了麻烦。正如Schiff指出的那样,ETHE确实在过去几个月中遭受了重创,从6月份的高点下跌了近78%,当时投资者愿意支付超过100%的溢价来获得ETH的敞口。在长达一年的锁定期结束后,该信托的许多份额开始在二级场外交易市场上出售,由此引发了快速崩盘。周二,该产品收于49.2美元,为3月份加密市场崩盘以来的最低水平。(U.Today)[2020/9/9]
-白色的树包含激活状态;灰色的树存储失活状态-
一树流的好处是,最起码,其工作方式看起来会跟当前的状态树相似,失活和复活的流程也比较简单:复活流程只需刷新树上相关节点的“过期日期”参数,而失活则是自动化的。但它的缺点在于:它需要一种能够在节点中以此种方式存储过渡信息的树结构,而且不能很好地扩展到Verkle树。此外,它还需要额外的默克尔证明元件,不仅要能够下沉到叶子节点,还要能够停在中间节点处。
动态 | 数据:以太坊链上转移的价值低于2018年第四季度的水平:Coinmetrics最近指出,以太坊的NVTV比率(网络价值/代币价值比率)接近其历史最低水平。这意味着网络的增长与市场价值成比例。ERC-20和ERC-721代币的增长主要推动了这一增长。然而,虽然交易数量增加,以太坊链上(以美元计价)转移的价值低于2018年第四季度的水平,当时ETH价格跌至80美元左右。该图表显示自10月份以来有了相当大的下降。
此外,ERC-20代币目前包括所有主要稳定币(Tether、USDC、TUSD)、交易所代币(BNB、Huobi Token、Okex Coin、Leo),包括像BAT这样的实用型代币。
最近,Samson Mow计算了平衡比特币供应所需的每日流动性。根据估计,比特币的供应每天需要大约1300万至1600万美元才能维持稳定的价格。同样,按照目前的价格,ETH需要大约150-170万美元来维持目前的价格水平。然而以太坊链上交易的价值实际上较低;不太可能被投入所需的这些金额。但是,ETH地址的数量一直在持续增长。尽管此数据可能会产生误导。但是,它无疑增加了以太坊的网络效应。(CoinGape)[2019/11/28]
二树流的好处是:当前的、形式纯粹的状态累加器就能支持这类方案,而无需为每个节点增加元数据。缺点是,它需要对整个协议做一些更深层次的变更,而且需要一个显式的流程来灭活状态。另外,它也没有为复活冲突两难提供内置的解决方案,所以需要在两种办法中作出选择。
动态 | 以太坊品牌宣传去中心化自治组织 Marketing DAO 正式启动:以太坊品牌宣传去中心化自治组织 Marketing DAO 宣布成立,该组织分叉于 MolochDAO,旨在以一种以太坊式的品牌增长方式对以太坊的品牌进行宣传,DAO 作为一种高效的人才聚合方式,可聚合各种成员组成小组以专注于资助和执行项目。该组织的初始阶段任务包括:以模因的方式将品牌拓展至更广的受众范围,通过调研受众特征和消息渠道为以后的活动奠定基础,以及在全球范围的活动中曝光。该组织向所有人开放,可通过出资(最低 10 ETH)、加入工作组成为会员(适合具有特定的营销、传播或设计专业知识的人)和支持(保持关注 Marketing DAO 的更新)的方式加入。[2019/11/7]
注意,在二树流中,存储失活状态的数据结构不是非树不可。事实上,完全有可能出现这样一种设计:需要复活一个状态对象时,只需提供一个指向该对象失活时候收据的默克尔树,再附上一些密码学证据,证明此前该对象未被复活过,即可。
复活冲突
然后我们就到了状态过期方案的一个关键难题上:“复活冲突”。复活冲突的概念如下。假设某个账户由地址A生成;这个账户过期了;然后,地址A又创建了一个新的账户;最后,地址A再尝试复活那个最开始的账户。这时候会出现什么情况?
动态 | 比特币未确认交易量10029笔 以太坊未确认交易量32022笔:监测数据显示,截至目前当前比特币未确认交易量为10029笔,当前以太坊未确认交易量为32022笔。比特币全网算力为54.13 EH/s,24小时交易速率3.89txs/s。当前挖矿难度为7.46T,预计下次挖矿难度将上涨4.54%至7.80T。[2019/6/8]
这里有几种可能的解决方案:
显式的“账户合并”流程:类似于规定“除了两个账户的ETH余额相累加以外,以旧账户的状态为准”或者“除了累加ETH之外,以新账户的状态为准”;甚至于,可以由旧账户的合约代码来规定特殊的合并流程
通过消除同一地址重复部署的功能来确保复活冲突不会发生:也就是调整CREATE2的功能,比如在最终哈希成地址的数据原像中包含当前时间,因此即使未来使用同样的数据来生成,也无法得到同样的地址
向状态对象增加一个“存根”,以防止在同一位置生成新账户
要求生成新账户时都必须附带该账户此前未过期的证明:某种意义上等价于存根方案,只不过这种办法是把存根放在状态的一个单独部分中,所以任何想要创建合约账户的用户都必须跟踪这部分状态
动态 | 以太坊平均每月有99名核心协议开发者 活跃度最高:据Cointelegraph消息,加密资产管理公司Electric Capital的报告指出,以太坊平均每个月有216名开发人员贡献代码,而比特币每月有超过50名开发人员。在核心开发协议上,以太坊平均每月有99名开发者排在首位,比特币每月有47名核心协议开发者,排在第二位。另外EOS、TRX、ADA等主流公链每月核心协议的开发者也超过了25名。[2019/3/10]
主要的担忧有:会给应用增加很多复杂性,他们需要加入合并的逻辑;这样做了之后,除非在链上“注册”一个地址,否则用户就没法再轻易获得可以与之交互、可以积累资产的地址了。未注册的地址是很重要的:任何第一次收到ETH的用户都是在使用一个尚未注册的地址。这第的担忧的根源是:未注册的地址实际上有了时间限制,如果用户生成了一个地址、收到了资金,但在接下来一年里忘了发送交易,那他的资金就会被锁住。
注意,EOA也不能幸免。虽然看起来能够,因为EOA的合并流程比较简单这样的方案。不过,这里也有两个问题。首先,账户抽象的目标是用合约来替代EOA,而账户抽象化的合约的合并流程可能并不简单。其次,会受过期和复活事件影响的不仅有EOA本身,还有该EOA所参与的应用中的相关存储键,所以还是需要复杂的合并逻辑。
因此,从我的角度来看,破坏性最小的是某种形式的存根方案。不过,存根方案里存在一个信息理论问题,会导致一些奇怪的结果。为了防止新的状态对象在N个已经过期的状态对象位置处创建,一个覆盖了这N个地址的集合必须是状态的一部分。如果这个集合是信息最小化的,那么这个集合的大小会是O(N),因此其状态规模也是O(N);那么,激活状态的规模就将与失活状态的规模成比例,所以实际上我们并没有解决这个问题。
Treerot
解决这个问题的唯一办法就是覆盖超过那N个账户的信息;实际上,我们将不得不让整棵树都变得不可访问)。
而这里还有一个问题:这产生了一种形式的“树发霉”,随着时间推移,对于新帐户的创建来说,状态树的所有部分都是不可访问的,至少对那些没有跟踪该区域过期状态的用户来说是这样的。
而树发霉导致的次生问题也必须解决。举个例子:如果一个合约要创建子合约,它必须能够在要么未发霉,要么用户具有见证数据的状态区域创建合约。树发霉问题的一个解决方案见此处:持续地开放状态的新区域以供账户创建。另一种思路是每个用户都选择状态的某些区域,跟踪该区域的变化以便能创建见证消息,并且只在该区域创建帐户。
树发霉的另一个问题是,它需要一个显式的数据结构来存储和检查范围。如果一棵树有能够放在节点中、指明该节点以下的哪些部分已经过期的数据,那是最好的,但一个键值对存储要做到这一点还是相当有难度的。
回头再看强无状态性
在状态过期方案中使用树结构所产生的许多问题,都可以被追溯到这样一个事实:我们需要对哪些状态是活跃的、哪些状态是失活的,达成共识。在二树流模式中,这一点更加明显;但即使是在一树流模式中,状态树上也需要有显式的标记,以便近期使用快速同步下载了状态的以太坊节点能够确定一笔尝试访问某个账户、但又没有提供见证消息的交易,应该成功还是失败。那我们能不能做到不需要明确这个区别呢?
如果我们实现了完全的无状态性,然后能帮助交易发送者和区块生产者可靠地获得见证消息生成所需的状态,不就解决这个问题了吗?那什么办法能帮助交易发送者和区块生产者做到这些呢?
一种自然而然的办法是:网络中的节点都仅保存状态树的一部分,例如,在过去一年中访问到的那部分。只需在客户端设定中加入一个自愿的设定即可。如果我们想要更可靠一些,我们可以通过引入一种proofofcustody方案,强制至少矿工存储一些数据。
有一点需要注意:如果共识层不能感知哪些状态是活跃的、哪些状态是失活的,那访问近期状态和老旧状态的Gas开销就是一样的。这会导致两个结果:
访问近期状态的Gas开销也需要进一步提高
包含了见证消息的区块大小上限可能非常之大,如果一个区块里满是访问老旧状态的事务的话
如果我们想避免这些不利因素,就需要在共识中跟踪哪些状态对象是活跃状态,这又会让我们回到接近于状态过期方案的属性。这再一次地说明了,“无状态性vs.状态过期”是一条光谱,是一个复杂的权衡空间,而不是一个非此即彼的选择。
Rollup也需要,也可以,使用同样的解决方案
以太坊的一种重要的中期可扩展性解决方案是rollups。不过,rollup本身并非不再需要担忧状态数据规模问题;实际上,rollup系统的状态规模问题,与以太坊链本身的,性质完全相同。
幸运的是,如果我们能推出一种解决方案,则至少EVMrollup能够使用同样的解决方案,来解决其内部状态的规模问题。因此,状态规模管理方案,与rollup和分片等可扩展性方案是互补的。
结论
状态规模是一个日益恶化的问题,而状态规模的解决方案也能为大幅提高区块Gas上限铺平道路。我们应该对某种形式的状态过期方案达成共识并加以实现。不过,不同的解决方案之间存在重大技术权衡,尤其如果我们还想要保持当前设计的一些重要属性的话。
一些我们可能需要牺牲的属性包括:
用户可以离线生成账户并以该地址接收资金、并且在使该地址在链上显明之前可以静默任意时长的属性
地址保持20字节的长度
状态可以被视为“纯粹的”键值对存储的属性,以及无需在状态树上每个节点内存储元数据的属性
现有的应用需要程度不等的重写,以保证用户无需存储全部失活状态就能生成见证数据
Gas消耗量;或者创建新合约、写入新存储槽的难度
我们如果已经准备好作出牺牲,有些方案可以很快开始着手实现。另一方面,也许假以时日,我们能修补或者更好地汇总这些观念,减少问题,尤其是使它们在技术上更容易实现。我们应该更深入地理解我们更愿意/更不愿意接受哪些方面的牺牲,并继续积极研究改进提案。
原文链接:
https://hackmd.io/@HWeNw8hNRimMm2m2GH56Cw/state_size_management
作者:?VitalikButerin
翻译:?阿剑
标签:以太坊ETH比特币ROLL以太坊价格今日行情美元兑人民币eth钱包地址如何获得比特币一个多少人民币roll币能出坐骑吗
贝莱德金融管理公司首席投资官RickRieder暗示,该公司已经将其投资组合的一部分投资于加密货币.
1900/1/1 0:00:00来源:券商中国比特币屡创新高,涨势仍未出现减弱迹象。截至2月18日14时,比特币价格涨至51986美元,24小时内最高达52618美元。过去一年中,比特币的价格暴涨了五倍.
1900/1/1 0:00:00OKLink链上周报:DeFi延续火热以太坊矿工收益超过比特币OKLink2分钟前586比特币市场 本周比特币走出了前周的低迷态势.
1900/1/1 0:00:00根据周一发布的一份声明,基于波卡的DeFi项目Equilibrium正在与CurveFinance合作,将后者的自动化做市商平台Curve引入波卡生态系统.
1900/1/1 0:00:00借春节假期的机会对周报的数据进行了进一步完善和升级,本期周报发布时间有所滞后,这次例行更新的价值主要体现在对于新增数据的一个简单介绍之上,未来周报会对新增的数据做持续更新和解读.
1900/1/1 0:00:00这些购买行为表明,机构投资者在牛市中对加密业务的兴趣远不止比特币,甚至不止是以太币。传统金融正在深入加密货币业务,并且比你想象的还要深.
1900/1/1 0:00:00