译者注:EIP-4444提议把HISTORY_PRUNE_EPOCHS设为82125个epoch(即信标链上1年),使得在PoS以太坊里执行层客户端不再在p2p网络上提供超过一年的区块头、区块主体和收据的数据,客户端可以在本地修剪这些历史数据。此EIP的作者之一@lightclients在推特写了简介,本文为该推文的翻译。
以太坊客户端目前存储着275GB的历史数据,这些数据对于验证区块链是不必要的。这个数字正在以每年140GB的速度增长。EIP-4444提议客户端修剪超过1年的数据。那么,为什么我们不直接修剪数据呢?
要理解为什么数据还没被修剪,以及为什么这需要讨论,就需要理解历史数据今天是如何被使用的。有两个主要的使用类别:同步和用户通过JSON-RPC请求。
Andrew Kang在15分钟前将274万枚RDNT转入了币安:金色财经报道,据余烬监测,Andrew Kang在15分钟前将274万枚RDNT(79万美元)转入了币安。Andrew Kang在6月7日以0.285美元买进392万枚RDNT(111万美元);7月14日以0.285美元的成本价卖出110万枚RDNT(31万美元);15分钟前将剩余274万枚RDNT转入币安,若以现价0.29美元出售,Andrew Kang本次RDNT投资将实现1万美元的亏损。[2023/8/1 16:11:41]
在同步里有两种主要方法:
完全同步(FullSync):下载并执行从创世直到区块链顶端的每个区块
状态同步(StateSync):这里有很多方案,但主要是用工作量证明检查进行区块头同步,并下载最新区块的状态。
SBF:FTX用于借贷的抵押品价值从年初至今已减少510亿美元:金色财经报道,FTX前首席执行官SamBankman-Fried(SBF)向其前同事发布了一封道歉信,信中称,导致了FTX崩溃的一系列事件始于春季的市场崩盘,随后是信贷枯竭,最后是客户大量撤回资金。此外,FTX糟糕的保证金管理和风险控制最终导致了申请破产保护的结局。SBF称,今年春季时,FTX的抵押品价值600亿美元,债务为20亿美元。但在破产前,抵押品价值仅剩90亿美元,而负债则高达80亿美元。SBF还在信中称,仍认为有机会挽救FTX。(The Block)[2022/11/23 8:01:50]
在这两种情况下,客户端通过p2p网络请求历史数据,以延长它们对链的视域(view)。信任模型通常是信任创世状态然后验证其他所有东西——要么完全验证,要么通过工作量证明检查进行轻度验证。
FTX将上线Wrapped Axelar(WAXL)现货市场:据官方消息,FTX将于09月29日14:00(UTC)上线Wrapped Axelar(WAXL)现货市场,上线交易对WAXL/USD。WAXL充提开放时间为09月29日02:00(UTC)。
Axelar是个跨链通信网络,通过AXL通证的权益证明机制保证网络安全性。作为一个可互操作的网络,AXL通证是跨链资产,在多个区块链上以多种形式存在,包括名为WAXL的ERC-20兼容打包通证。Axelar网络基于Cosmos SDK构建。[2022/9/28 5:59:22]
权益证明改变了这点。因为它容易遭受远程攻击,我们必须依赖“弱主观性检查点(WeakSubjectivityCheckpoint)”。这实质上是我们对权威链上一个区块的信任程度等同于对PoW里创世区块的信任。
持有超过1个ETH的地址数量创历史新高:金色财经报道,数据显示,持有超过1个ETH的地址数量刚刚达到1,598,434个的历史新高。
此前2022年10月21日的高点为1,598,356个地址。[2022/10/23 16:35:53]
弱主观性检查点使得客户端可以跳过通过p2p网络请求历史数据的引导步骤。当然,在检查点后它们将仍然需要同步历史数据——因此检查点应该总是在修剪边界之前。
这听上去像是安全性上的倒退。以前,我们有一个2015年7月13日的哈希值做验证。现在,我们有的是变动着的弱主观性检查点。但事实上,我们一直都依赖弱主观性。
你最后一次验证客户端版本间的代码差异是什么时候?大多数人没有技术背景来做这件事。因此,每次你更新你的客户端,你都依赖你的客户端团队严格地实现以太坊协议。
幸运的是,有很多人盯着像go-ethereum这样的软件。只需要一个吹哨者就能揭发代码里的恶意提交。同样,只需要有一个吹哨者指出一个客户端推出一个恶意的弱主观性检查点。
事实上,验证一个客户端推出正确的弱主观性检查点比确保代码正确执行协议要容易得多。
因此,从安全性的角度来看,其实是没有倒退的。这也包括同步——历史数据所需的另一个主要用途类别是为用户请求提供服务。
用户可以请求两种类型的数据:
当前数据,例如存储槽的数值、账户余额、最新的区块高度等
历史数据,例如在区块N的存储槽数据、区块N的区块头、交易收据等
当前的数据将继续可以被访问,当实现EIP-4444后,历史数据能否被访问取决于它是多长时间以前的。
历史数据的主要使用者是dapp开发者。很多dapp添加历史数据到它们的数据库,通过它们的前端提供给用户。对于他们来说,能够遍历所有交易和日志是很重要的。
支持这个用例有多个方法——现在最受欢迎的方法是客户端发布多路复用器,支持一定范围区块的版本会执行该范围的区块。例如,geth版本A可能支持直到区块高度为10m的区块,而geth版本B则支持10m之后的区块。
多路复用器将用版本A执行区块高度为0到10m的区块,输出状态数据库并将其导入geth版本B,然后继续执行10m之后的区块。JSON-RPC请求会被导向有合适信息响应的客户端。
但是,如果历史区块在p2p网络上不再可得——那谁来提供这些数据?预计会有很多大型、受信任的机构提供这些数据的镜像。由于数据是静态的,所以很容易就其哈希值达成共识并进行验证。这是1-of-N的信任模型。
新标准将是不存储历史数据并运行一个客户端多路复用器。这意味着以太坊客户端的标准内存占用会减少275GB——但还有最后一个问题需要提及。
当前,当请求的数据不存在时,以太坊的JSON-RPC会给一个空响应。假设客户端没有在同步,这会以“这个数据不存在于权威链或最近的分叉”被接受。
一旦客户端开始修剪旧数据,这种不变性就会被打破。当一个用户请求一个特定交易收据时,客户端将不知道该收据是被修剪了还是从来没有存在过。目前,我们期望RPC将对这两种情况返回一个空响应。
我很想得到关于这种方法的反馈。JSON-RPC的使用者对此有什么看法?你们访问超过1年的历史数据的频率如何?另一种方法(尽管更重)是保持一个被修剪数据哈希值的索引,这样可以向用户返回更多的内容。
275GB这个数据是在gethdbinspect的输出里查到的。下面是截图:
正式的EIP-4444(顺便提一下,读作EIPfour4s)规范可以在这里找到:
https://t.co/vlfYfcIGpN?amp=1
来源:@lightclients
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。