比特币价格·比特币行情
Ctrl+D收藏简单区块链

科普 | 如何开发出好用的轻客户端(二)

作者:

时间:2021/2/3 19:55:36

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

现在是 2021 年,以太坊区块链已经运行 5 年多了。但目前还没有不使用中心化提供者就能与以太坊协议交互的可靠的轻量级方式。各种研究表明,只要你能够访问必要的数据,就可以构建这一功能。在本文中,我们将介绍什么是区块链历史记录,以及需要解决哪些问题才能让轻量级客户端轻松获得这些历史记录。

“区块链历史记录” 指的是所有区块头、区块体和收据的历史记录。在当前所有以太坊客户端用来通信的以太坊协议中,节点可以使用以下消息对来互相请求区块链历史记录:

GetBlockHeaders > BlockHeaders

GetBlockBodies > BlockBodies

GetReceipts > Receipts

点击此处,查看以太坊协议的完整规范。

区块链历史记录是一个相对简单的数据集。你可以把它当成是一个只能添加的文件。矿工每挖出一个新的区块,这个区块的区块头、交易、叔块和收据都会被添加到文件中。

以太坊协议已经为这部分需要而优化过,所以一个新加入网络的节点可以高效地检索区块链的所有历史记录。一旦客户端实现完全同步,除了响应 JSON-RPC 请求之外无需使用这些数据。客户端自己也不会频繁用到这些数据,因为它们会通过 gossip 消息获取新的区块和区块头。作为区块执行的一部分,收据会在本地生成。尽管如此,协议还是强迫客户端要保留完整的历史记录。

因此,我们需要的数据在以太坊节点所组成的网络中其实都有,只不过网络的架构没有考虑过我们的用例。在以太坊协议上构建轻量级客户端需要解决三大问题:

A:我们需要对正统链有一个简明的了解

B:我们需要使用索引,便于按区块号查找区块,并按哈希值查找交易

C:我们需要减少单个节点存储的总数据量

要找到区块链最新区块,最免信任的方式是从头开始构建一条完整的区块头链(由区块头组成的链条)。为此,我们需要获取大约 1100 万个区块头,并为其提供大约 6GB 的存储空间。

如果没有完整的区块头链,客户端就无法辨别区块头是属于正统链还是叔块的。对于手机和树莓派等低资源设备来说,6GB 的存储成本过于高昂。如果用户要先获得 1100 万个区块头才能发出第一个请求的话,那就违反了客户端无需同步的要求。

幸好我们可以借鉴信标链的机制来解决这一问题。我们只需在以太坊协议上添加一个 “双倍批量默克尔 log 累加器(double-batched merkle log accumulator)”,就可以构建一个简单易懂的机制来提供某个区块头是否包含在正统链上的证明。客户端只需准确掌握最新区块头的信息,并通过累加器生成的简单默克尔证明来证明历史区块头包含在正统链上。

同步问题是一个可以在客户端层面解决的用户体验问题。有两种解决方案:1. 设置区块头“检查点”;2. 信任观察到的链首块,并执行实际的工作来获取该链首块,然后对其进行异步验证。我们可以将这些作为功能标志(feature flag)提供给用户,让用户在安全性和便捷性方面自行权衡取舍。

有一些 RPC 端点很难直接构建在现有网络架构上。客户端目前可以通过在区块链历史记录上创建索引来服务这些端点。存在问题的端点主要有:

eth_getBlockByNumber

eth_getTransactionByHash

eth_getBlockByNumber端点的难点在于叔块。任意区块高度都有可能出现无限个有效区块,但是只有其中一个区块在正统链上。因此,客户端在拼凑正统链时也会构建自己的索引来将 block_number 映射到 block_hash 上。当客户端通过 JSON-RPC 请求某个区块号的区块时,该索引会将这一请求转化为请求某个哈希值的区块。

eth_getTransactionByHash也存在同样的问题。如果我们将叔块纳入考虑,一笔交易可能存在于多个不同的区块中。但是,单就正统链而言,一笔交易只存在于一个区块内。客户端在处理正统链时会创建一个索引来将 transaction_hash 映射到 (block_hash, transaction_index) 上。当客户端收到对某笔交易的数据请求时,该索引会将这一请求转化为允许查找该交易以及包含该交易的正统区块。交易和区块都必须包含在 JSON-RPC 响应内。

因此,我们需要一个机制来显示这些索引。

区块头累加器为我们提供了一种机制,可以让索引数据成为正统链的一部分。

以太坊协议自设计之始,就将 DevP2P 以太坊网络中的节点设想为能够响应任何关于查找区块链历史记录的请求 —— 无论是最新的区块、很老的区块还是介于二者之间的区块。以太坊网络没有机制可以让节点仅存储区块链历史记录的子集。从根本上来说,整个网络都依赖于所有节点都存储所有数据这一假设。网络本身无法强制节点存储所有数据,但是客户端会与无法响应其请求数据的对等节点断开连接。这在一定程度上保障了安全性,因为无法响应请求的客户端不太可能会维护健康的对等连接。

因此,首先需要解决的问题是,创建一种机制让单个节点可以仅存储区块链历史记录的子集,同时让网络为节点提供一种机制,以便节点快速找到拥有它们所需数据的节点。

事实证明,这是 Kademlia DHT 网络的新兴属性。该网络拓扑自身的系统就可以在任意大的密钥集中进行 O(log(N)) 查找。假设我们要查找区块哈希和交易哈希之类的数据。我们可以通过 DHT 查找它们,使用对应区块头对其进行验证,并使用区块头累加器来证明它们在正统链上。

“Alexandria” 是Kademlia DHT 网络的暂定名称。该网络旨在按需提供区块链历史记录的访问权限。该网络本身构建在 Discovery v5 协议上(信标链和以太坊网络也是基于该协议构建的)。这就意味着,绝大部分(乃至所有)语言编写的客户端都会有可用的实现。

虽然我们没有严格要求修改核心协议来添加区块头累加器,但是这样做确实可以大幅改善这一情况。即使没有Alexandria,使用累加器也会让核心协议如虎添翼。

我们还需要解决可扩展性问题。将区块号映射到的正统区块哈希值的正统区块头索引相对较小,仅包含一个条目(每个区块头对应一个条目)。然而,交易索引很大,包含近十亿个条目(每发送一笔交易都会有一个条目)。相比之下,广泛使用的 BitTorrent DHT 包含大约 2600 万个不同的种子。以太坊主网需要在我们的 DHT 上存储大约 50 倍的数据。

构建 Alexandria DHT 并为其制定规范是一个持续性的研究主题,目前已经有了一个还在不断完善中的大致规范和概念证明客户端。我们还在继续进行开发,之后会公布新的进展。

(未完)

(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)

原文链接:

https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients-part-2/

作者:Piper Merriam

翻译&校对: 闵敏 &阿剑

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

GetBlockHeaders > BlockHeaders

GetBlockBodies > BlockBodies

GetReceipts > Receipts

翻译&校对: 闵敏 &阿剑

动态 | 报告:区块链等热点词促使童书科普百科类成交额同比增速最高:近日,京东图书与艾瑞咨询联合发布了《2019中国图书市场报告》。报告指出,AI、5G、区块链、机器人、VR、智能家居、AR这些热点词,不断点燃科技热潮,科技在改变大众生活的同时,也吸引了越来越多家长的关注,从小培养孩子对科技的兴趣和热爱。因此童书中科普百科类成交额同比增速最高,占比将近40%。[2020/1/8]

现场 | 火币中国推出数字经济及区块链产业科普新书:金色财经现场报道,12月6日,由海南省工业和信息化厅主办,南南合作金融中心协办,海南生态软件园、火币中国承办的“海南自贸港数字经济和区块链国际合作论坛”在海口举行,这是全球首次区块链部长级论坛。 \n在本次论坛上,火币中国举行了“数字经济及区块链产业科普系列新书发布”仪式,希望通过教材、专业教育、培训等多种方式,帮助从业者、高校、研究机构深入了解区块链,从而建立起区块链全局性知识模型,真正推动区块链应用落地。火币中国CEO袁煜明介绍,将联合机械工业出版社面向普通高等教育推出《区块链导论》、《区块链系统设计与应用》和《区块链新商业模式分析》系列教材,这是国内最早推动的区块链教材之一;火币中国还积极参与数字经济的研究,由中信出版社出版的新书《读懂Libra》已经上市;由火币中国负责编写的区块链技术科普读物《区块链技术进阶指南》将于12月面世;首本行业内最全的区块链应用案例集《区块链产业应用100例》在本次论坛进行了首次刊印。[2019/12/6]

金色财经独家分析 监管机构、媒体、业界提示风险 区块链科普道阻且长:新华社今日发文表示,近来“区块链”类案件频发,不法分子以“投资虚拟货币周期短、收益高、风险低”为借口,取用户信任并诱使其转账进行投资。无独有偶,同日消息,腾讯手机管家安全专家也提醒此类风险,并从技术上提出防建议。在美国,监管机构警示加密货币欺诈现象普遍承诺高收益而不披露潜在风险。金色财经独家分析,不法分子假借新技术之名进行,一方面是抓住民众趋利的心理,一方面反映出区块链科普的欠缺。区块链是新兴科技和底层技术并有改变社会生产关系的潜力,应该进行系统性的科普教育,当前,部分大学已经开始设置了区块链课程,但对于普通民众仍然有科普的需求,人们应该了解到系统和正确的知识,不仅要了解区块链的好,也要明确局限和弊端,以在高收益的诱惑下,保持清醒客观。[2018/4/11]

标签:

区块链热门资讯
金色说明书 | 全球二十大潜在空投项目之 Tornado Cash

错过 Uniswap 的空投而懊悔不已?又没有赶上 1inch 的列车而拍断大腿?DeFi 门户 DeFiBox.com 与金色财经联合推出“全球二十大潜在空投项目”系列内容,为大家奉上 DeFi 暴富攻略。   该攻略每日介绍一款全球顶级,且极有可能免费空投的 DeFi 项目,帮你抓住每一次空投机会。

2021/2/3 20:33:47
拆解波卡新型局 享受生态发展时如何规避风险?

背景 波卡是当下的热门项目,但是从发展阶段来看,它仍然处于生态刚起步的阶段,还是一片蓝海。蓝海意味着市场扩展性很强,有非常多的机会,而随着生态的发展,各种项目和资金以及参与者也会越来越多,但是机会越多的同时,也会让人被繁荣冲昏了头脑,这就给了一些不法分子可趁之机。

2021/2/3 20:28:11
区块链技术应用的下一阵地:区域性股权市场

原标题:趣链科技:积极推动区块链技术在区域性股权市场的应用与探索 目前,区块链技术已经成为国家战略性技术,重点不止于技术本身,更在于其与传统行业结合的应用场景。随着区块链应用的扩展,区域性股权市场成为区块链技术应用的下一阵地。区块链给区域性股权市场可能带来的创新存在较大想象空间。

2021/2/3 20:01:12
头矿预告 | Lendhub、ISM、HBC

火币生态链Heco挖矿火爆一时,吸引了大量投资者参与。为了方便投资者及时了解项目的头矿信息和挖矿流程,金色财经推出《“头矿”预告》。

2021/2/3 19:33:59
火币上线Web版现货量化策略:网格策略

据官方消息,火币全球站已于2月3日上线Web版现货量化策略-网格策略(App端即将上线),同时开放网格策略的现货交易对有:BTC/USDT、ETH/USDT、HT/USDT。用户在火币Web端首页-现货交易-策略交易即可使用该功能。

2021/2/3 19:28:23
NFT正在起飞 这里有一份简洁入门指南

不管你是否承认,NFT正在快速走红。随着FLOW上线创出百倍币的神话,艺术收藏品NBA Top Shot总销量突破3200万美元超过老牌项目加密猫,Haskmasks更是借盲盒加取名的双重玩法火爆出圈,关于NFT的讨论一浪高过一浪。 但是,仍有许多人感到未知且迷茫。这是火星财经APP今天推荐Linda Xie这篇《NFT入门指南》的根本原因。

2021/2/3 19:28:19