月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 瑞波币 > 正文

TRI:引介 | 如何开发出好用的轻客户端(三)_TribeOne

作者:

时间:1900/1/1 0:00:00

科普 | 如何开发出好用的轻客户端,Part-1

科普 | 如何开发出好用的轻客户端,Part-2

大多数钱包软件都依赖于 Infura 等中心化提供商。如果我们想要别出心裁一些,就需要开发一个可以在低资源设备上运行的新型轻客户端。

在本文中,我们将介绍以太坊状态是什么,以及如何让轻客户端轻而易举地获得它。

当我们提到 “状态” 时,我们指的是所有账户信息(如 ETH 余额)以及所有存储在智能合约中的数据。目前,状态包括:

1.32 亿个账户

大约 10 GB 的账户数据

大约 30 GB 的合约 storage 数据

大约 60 GB 的 Trie 节点经常性数据

我们先来看一下客户端目前是如何访问状态的。

以太坊节点需要访问完整的状态才能处理新挖出的区块。我们可以通过执行从创世块开始到链首块的每个区块来从头计算出状态。通常情况下,我们不会采用这个方法,因为计算成本太高。

Binance澳大利亚:用户可以继续提取澳元:金色财经报道,Binance澳大利亚发推称:已与当地支付合作伙伴确认,用户可以继续提取澳元,将根据我们了解的更多信息及时更新任何进一步的变化。用户仍然可以通过借记卡和信用卡进行交易。金色财经此前报道,Binance澳大利亚在其社交平台表示,受第三方支付服务提供商影响,澳元PayID存款被暂停,银行转账提款也将受到影响。[2023/5/18 15:11:02]

客户端倾向于直接从其它完全同步的客户端那里获取完整的状态副本。虽然不同的客户端执行该操作的具体方式不同,但无论是哪种客户端,在首次上线或离线一段时间后再次上线的情况下,通常都要花费一段时间同步至最新区块。

同步可能需要花费很多时间。如果你使用自己的节点与区块链交互,这会是一大缺陷。要让客户端一直保持同步状态,你不仅需要花时间等待客户端同步,还需要消耗计算机的计算和存储资源。

我们的解决方案是专门针对资源受限的设备而设计的,可以一举解决上述两个问题。我们的轻客户端在运行时只需消耗最少的 CPU/RAM/HDD/带宽资源,而且可以保证永远在线。

UniSat Marketplace停机维护两小时:5月14日消息,据官方消息,BRC-20 交易市场 UniSat Marketplace 于北京时间 5 月 14 日 14 时 30 分至 16 时 30 分停机维护两小时,以执行必要的升级和修复。[2023/5/14 15:01:56]

当然了,不同的设备之间存在差异,甚至有可能出现无法承受基础负载的情况。为了应对这一情况,我们正在努力免去完全同步的需求。在我们设计的模型下,客户端只需要准确获得链首块的信息即可。

我们的最终目标是构建一个在首次安装或离线一段时间后再次上线能够立即使用的客户端。这个客户端只需能访问正确的数据即可。

在如今的 DevP2P 以太坊协议中,有一个名为?GetNodeData?的消息。它可以用来检索以太坊状态的任意部分。我们已经在 Trinity 中使用该网络消息来开发 “Beam” 同步模式并证明了其可行性。这是我们进行的基础研究之一,旨在证明这种新型轻客户端是可以实现的。

天桥资本创始人:BTC应被归类为商品,不受SEC的监管:金色财经报道,SkyBridge Capital 创始人 Anthony Scaramucci 表示,他并没有失去对比特币的热情,比以往任何时候对BTC更加乐观。Scaramucci还批评美国证券交易委员会主席Gary Gensler) 负责的部门管理混乱。Scaramucci 称,我们北部的邻居加拿大有两三个比特币ETF。而我们有 Gary Gensler 和 Elizabeth Warren。BTC应该被归类为商品,不受美国证券交易委员会的监管。[2023/4/17 14:08:56]

遗憾的是,当前的 DevP2P 以太坊网络并不合适用于轻客户端用例,因为它需要每个节点都能存储超过 40 GB 的状态数据,并提供状态的任意部分。无法响应这些状态数据请求的节点不太可能维持健康的对等连接。

当前网络的设计是同步完整状态。GetNodeData?消息适合我们的按需状态检索实验只是一个巧合。为了让客户端能够同步完整的状态,高效的访问模式是按顺序遍历数据,获得连续的大数据块。然而,在钱包用例以及我们的新型轻节点用例中,访问状态的需要需要很大程度上是随机的。

BonqDAO和AllianceBlock在攻击事件中损失8800万美元,因BonqDAO智能合约存在漏洞:2月2日消息,北京时间2月2日凌晨2点左右,由于BonqDAO智能合约中的一个漏洞,加密协议BonqDAO和AllianceBlock在攻击事件中损失8800万美元。黑客从BonqDAO的金库(Troves)中移除了大约1.14亿枚 walbt(AllianceBlock的封装原生代币)和9800万枚beur代币。该金库由用户控制,用于铸造与欧元挂钩的支付代币beur。该漏洞利用的技术原因仍然未知。到目前为止,黑客已售出大约120万美元的代币,但由于流动性不足,无法将全部金额转换为稳定币或ETH。

AllianceBlock在推特上表示,该事件与BonqDAO金库无关,其没有违反智能合约。两个团队都致力于消除流动性以减轻黑客将被盗代币转换为其他资产的风险,并已停止所有交易所交易。AllianceBlock还暂停了AllianceBlock Bridge上的桥接,直到问题得到解决。下一步是对攻击前的用户进行快照,然后从快照那一刻起为所有受影响的用户制定解决方案。这包括创建新的ALBT代币并空投到快照中的地址。

今晨6时左右,BonqDAO发布公告称:“Bonq协议遭到预言机黑客攻击,利用者提高了ALBT价格并铸造了大量BEUR。然后在Uniswap上将BEUR换成其他代币。然后,价格下降到几乎为零,这引发了ALBT金库的清算。其他金库未受影响。Bonq协议已暂停。我们正在研究一种解决方案,允许用户提取所有剩余抵押品,而无需偿还BEUR,该方案将在欧洲中部时间明天上午发布。”(The Block)[2023/2/2 11:42:06]

钱包访问状态的主要方式是通过以下 JSON-RPC 方法:

A股收盘:深证区块链50指数下跌2.48%:金色财经消息,A股收盘,上证指数报3228.06点,收盘下跌1.64%,深证成指报12411.01点,收盘下跌1.52%,深证区块链50指数报2832.25点,收盘下跌2.48%。区块链板块收盘下跌2.33%,数字货币板块收盘下跌2.6%。[2022/7/15 2:15:31]

eth_getBalance?用来检查账户余额

eth_call?用来查询合约数据(如代币余额)

eth_getTransactionCount?和?eth_estimateGas?用来构建交易

eth_getBalance?和?eth_getTransactionCount?仅从主要账户 Trie 中读取值。因此,可以通过调用该方法获得Trie 上现有的 1 亿多个账户中任意一个地址的情况。

eth_call?和?eth_estimateGas?都涉及实际的 EVM 执行。EVM 执行可以从 1 亿多个账户中的任意一个及其底层合约存储 Trie 中读取数据。

我们发现,钱包只需读取少量数据,而且读取的需要是随机的。这在根本上与同步完整状态不同,因此这两个用例不太可能通过同一个解决方案来解决。

新的网络需要解决当前网络存在的一些缺陷。

这个网络上的节点要能为存储完整状态贡献少量存储空间。我们想让网络中的每个节点存储一小部分状态,而非完全复制所有状态。有了足够多的节点,整个网络就可以轻而易举地以极高的复制因子存储所有状态。

由于每个节点只需存储小部分状态,我们再也不能盲目地向网络中的任意节点请求数据。因此,网络需要一个节点发现机制,以便节点获取所需数据。

不同于可以构建成只能添加型文件的区块链历史记录,以太坊状态是持续变化的。每个交易都会导致账户余额和合约存储发生变化,这些更新需要在网络中广播。

重要的是,客户端要能高效地从网络中读取数据。调用?eth_estimateGas?将根据最新的状态根预测执行交易,来确定交易需要消耗的 gas。如果是一个只涉及两个账号的简单转账交易,所需的数据量相对较小。然而,如果是与智能合约交互并且需要用到合约存储的复杂交易,客户端需要从数据库读取的数据量则大得多。

假设一次网络往返需要 100 ms,那么一笔需要 100 个状态部分的交易需要花费大约 10 秒时间来估算 gas 使用量。如果延迟太久,一些操作可能需要花费过多时间才能完成,这会大幅降低网络的可用性。

账户 Trie 在设计上是平衡的,但合约存储不是。这就导致合约存储很难处理。

人们正在积极研究按需状态可得性。目前,我们还不清楚该研究的未来方向,但是我们目前主要聚焦于两个不同的方法。

我们可以采用的最简单的解决方案之一就是,采用与?GetNodeData?相同的运作方式,但是仅要求每个节点存储距离自己最近的数据,而非所有数据。Trie 上的每个节点都有一个哈希值,我们可以使用这些哈希值将 Trie 数据与DHT 键空间(keyspace)关联起来。你可能还记得,Kademlia DHT 网络有一个新特性:遍历键空间只需?O(log(N))。

这个方法的缺陷在于效率和速度。存储由单个节点哈希哈希作为键的 Trie 数据需要存储大量中介 Trie 节点,这会导致网络需要存储的数据总量翻倍。

这个方法也会让数据检索变得低效。通过该结构查找数据时,你必须从状态根开始遍历 Trie 节点。对于账户Trie 来说,这平均需要 7 次查询,才能获得实际的账户数据。

这个方法确实具有很大的优势。它彻底避开了合约存储失衡问题,因为各个 Trie 节点的哈希值是随机的,因此数据会自动呈随机分布。再进一步来看,如果网络大到足以存储完整的 6TB 存档历史,这个网络最终将变成一个归档节点。

这个方法的另一个主要优势是,可以免去对证明的需求。我们直接构建 Trie 和所有中间节点,因此无需相关的默克尔证明。

目前,我们正在努力确定这个方法是否能够达到性能要求。

另一个方法是将 Trie 的叶子节点组成共享同一条基础路径的连续的块。各个节点会存储 Kademlia DHT 网络中离自己最近的 Trie 路径 “周围” 的所有叶子节点。对于高度平衡的账户 Trie 来说,这个方法非常有吸引力。

通过 Trie 路径处理数据,我们无需遍历 Trie,访问叶子数据的复杂度将下降到?O(1)。如果你还记得的话,GetNodeData?风格的原生方法平均需要 7 次网络往返,才能访问存储在 Trie 叶子节点中的数据。然而,本节所介绍的方法在性能上的优势非常重要,而且是实现网络可用性必不可少的。

这个方法的优势也是有代价的。确保数据是最新的会极大提高复杂性。有很多方法可以做到这点,但是每个方法都有权衡取舍。虽然数据可以就地更新,但是这需要每个节点都进行昂贵的计算。或者,每次挖出一个新的区块后,更新后的证明都会广播至全网节点。这些方法都在计算和带宽之间进行了权衡取舍。但无论是计算还是带宽,这两个在我们眼中都是稀缺资源。

标签:TRIETHANCNCETribeOne以太坊硬币ETHDSANC价格tunasfinance

瑞波币热门资讯
区块链:金色观察|正式提交IPO招股说明书 嘉楠耘智这次也被上市公司蹭热度?_比特币

10月29日,嘉楠耘智已正式向美国SEC提交IPO招股说明书,但嘉楠耘智最近却动作频频与跨界传统企业进行合作.

1900/1/1 0:00:00
BSP:DoraID:通用去中心化身份和Staking机制_Ms Dory

DoraID旨在提供一套能够在区块链上自治的去中心化身份认证体系,为链上大量的需要身份认证、抗女巫攻击的去中心化应用提供基础服务支持.

1900/1/1 0:00:00
区块链:金色深度丨港泰合推的数字货币和央行数字货币一样吗?_cointigertop

金色财经 区块链12月7日讯 香港金融管理局和泰国中央银行正在探索区块链支持的数字货币,旨在双边贸易中促进速度更快的支付交易.

1900/1/1 0:00:00
OEC:金色说明书 | WePiggy OEC 测试网公测已开启参与领取 OKT 空投_PIG

DeFi流动性挖矿火爆一时,吸引了大量投资者参与。为了方便投资者及时了解DeFi挖矿项目的相关信息和挖矿流程,金色财经推出了“金色说明书”系列挖矿教程.

1900/1/1 0:00:00
DEV:DeversiFi 是什么?_liveforever

DeversiFi(前Ethfinex)是一个使用第二层网络(Validium)实现隐私交易和可扩展性的去中心化交易所.

1900/1/1 0:00:00
GAS:以太坊 DeFi 的 Gas 消耗是否还有改进空间?_以太坊价格今日行情比特币

如今 DeFi 的价值被发现了,人们的交易活跃度大大提高,Gas 价格也水涨船高。每个项目方都有义务,以最少的读写操作完成业务,为以太坊生态省出宝贵的区块空间.

1900/1/1 0:00:00