TRI:状态可得性:GetNodeData DHT 方案

我的团队正在验证一个?“状态可得性”问题的解决方案是否可行。

方案概述

我们的方向大致如下:

网络是一个分布式哈希表。

账户和合约存数据存储在它们各自的trie节点中。

网络中的节点拥有所有区块头数据。

每个区块中新的trie数据都以证明的形式发送到网络中。

我们将这个方案称为GetNodeData方案,因为它与快速同步方案获取状态的方式差不多。

trie节点vs叶节点证明存储

我们选择将数据存储在各个trie节点中,因为这样比较简单。

近970万个FTX客户名称仍处于“被编辑”状态:金色财经报道,FTX 本周在破产法庭提交了一份长达115 页的庞大债权人矩阵清单,但律师表示,文件中并非每个实体都是已确认的 FTX 债权人,数以百万计的客户名称依然处于密封状态。据悉,此案中近 970 万个 FTX 客户名称仍处于“被编辑”状态(其中甚至包含 FTX 的一些顶级债权人)。今年一月初,裁定此案的法官约翰·多尔西 (John Dorsey) 决定将这些客户名状态再保留三个月,预计将在 3 月某个时候的法庭听证会上重新考虑是否披露债权人名字的问题。 鉴于 FTX 破产的展开,通常会收集到的信息正在被调查和发现,随着 John Ray 和他的团队继续推进这一进程,预计在接下来的几个月中可以了解更多信息( the block )[2023/1/29 11:34:23]

另一种方法是仅存储叶子节点的值和附带的证明。这个方法比较复杂,因为证明需要不断更新。更新证明可以在本地完成,但是需要进行EVM计算并广播完整的区块见证消息。EVM计算成本很高,而完整的区块见证消息很大。

俄国防部:由于乌方无意延长“静默状态” 俄武装力量已恢复进攻:3月6日电,俄罗斯国防部当地时间5日傍晚发布消息称,由于乌克兰方面无意对民族主义分子施加影响以及延长“静默状态”,俄武装力量从乌克兰时间18时起恢复进攻。(财联社)[2022/3/6 13:39:58]

通过将数据存储在各个trie节点中,网络节点只需存储这些trie数据,并验证新数据的默克尔证明即可。

迄今为止的发现

预期延迟

基于DiscV5DHT的经验,我们预期网络查询时间约为100毫秒。

每笔交易的Trie节点

V神:从1.0到2.0是从一个共识引擎系统到另一个的状态转换:基于以太坊的去中心化社交应用Status官方在推特称,像“从以太坊1.0迁移到以太坊2.0”这样的说法是行不通的。以太坊创始人V神则评论称,也许关键在于“迁移”是一个不好的词,因为它意味着它们是两个独立的系统。然而在现实中,它是一种从一个共识引擎系统转移到另一个的状态转换。[2020/11/14 20:48:01]

NickGheorghita一直在研究常见交易类型所涉及的trie节点的数量。在样本数量较少的情况下,他得到的初步结果是:

简单价值转移:~30个trie节点

Trace Mayer:减半之后BTC流通将调整至新均衡状态:早期加密货币倡导者、播客节目The Bitcoin Knowledge Podcast主持人Trace Mayer近期详细阐述了比特币如何帮助人们应对法币无法使用的情况。他表示,比特币赋予了人们持有自己的私钥、运行自己的私人节点,以及基本上控制自己的货币的权力:“金钱很重要,而人类思维与它互动的方式,会激起很多强烈的情感,比如恐惧。比特币是一种非常强大的工具,可以让你控制住部分自己的生活。”Mayer还称:“人们不关心比特币的价格。他们关心的是交易费用的价格。当比特币在减半之后,可销售供应量后减少时,我认为就会开始出现通货紧缩,因为这会渗透到市场中,重新调整到比特币流通的新均衡状态。”(AMBCrypto)[2020/3/1]

ERC20转账/批准:~50个trie节点

如果延迟为100毫秒,则执行eth_estimateGas和eth_call需要的时间上限分别为3秒和5秒。我们还可以通过一些基础的优化来降低延迟。

我们正在进行更深入的实验,来测量大型主网交易区块的延迟情况。

垃圾回收和冷状态

BrianCloutier已经对冷状态访问模式进行了一些调查。

关于冷状态的定义,请参见这张术语表。

的那部分状态。)

Brian的发现是,大多数区块都会触及之前100万个区块都没有触及的状态。

这就涉及到垃圾回收。

如果网络有足够的空间存储完整的归档状态,我们就不需要垃圾回收。

如果网络没有足够的空间来存储完整的归档状态,则该网络必须执行某个机制来防止冷状态丢失。

待解决问题

重复数据删除和垃圾收集

存储trie相同的两个合约拥有同样的trie节点。

同样地,余额、nonce、代码和状态相同的两个账户的账户数据也存储在同样的叶节点上。如果我们使用节点哈希作为键来存储节点,必须通过引用计数来实现垃圾收集,否则就无法知道从一个trie中移除的节点有没有在另一个trie中使用。

一种解决方法是,将节点在trie中的位置及其节点哈希作为键。这样可以使用排除证明来删除节点,但是会因为需要存储重复数据而造成额外的成本。

一个待解决问题是,这会在多大程度上提高存储需求。

归档vs垃圾收集

我们需要想清楚如何实现垃圾回收,或者说,确认网络是否可以成为归档节点。

解决垃圾回收问题的方案:

移除重复数据删除机制,并使用(trie_path,node_hash)作为键来查找数据。

监控网络并主动重新添加冷状态。

弄清楚垃圾回收的子集是否可以仅发生在账户trie中的中间trie节点上。

确保网络能够像归档节点那样运行。

数据入站

我们需要将新创建的trie数据推送到网络中。网络中的节点预期会存储所有区块头的最新快照,从而将证明与最新状态根锚定。

待解决问题有:

新的trie数据的完整区块证明有多大?

区块证明中每个节点各自的证明有多大?

原文链接:

https://ethresear.ch/t/state-availability-getnodedata-dht-approach-dev-update/8657

作者:??PiperMerriam

翻译&校对:?闵敏&?阿剑

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:0ms0-3:34ms