分片主打的“并非每个人都必须运行每个碎片”的技术理念,成为轻客户端诞生的关键。
原文作者:TinTinLand
原文来源:微信公众号
众所周知,以太坊的发展面临着新困境。以太坊每天支持大量的经济活动、结算数十亿美元的交易,在蓬勃发展的 DeFi 和 NFT 领域中运行成千上万的 DApp。但是,以太坊有限的空间资源已然无法承受过多的应用,也无法接受大体量用户的蜂拥而至。当网络拥塞时,交易变得更加昂贵且延迟更多,给用户带来更大的经济负担。
鉴于此,相关团队为了解决以太坊扩容难题,提出了诸多技术解决方案,其中包括分片(Sharding)。分片为网络划分多个轨道,以水平扩展的方式并行处理交易,在多个服务器之间分布计算和存储容量,从而使总体吞吐量更高。分片主打的“并非每个人都必须运行每个碎片”的技术理念,成为轻客户端诞生的关键。
轻客户端在以太坊分片中扮演重要角色,使验证者能够快速验证和同步不同的分片,成功化解了不少 DApp 运行过程中出现的阻滞难题。同样面临高速发展带来扩容有限、用户载量大等困境的波卡、NEO 等公链,也纷纷开启了轻客户端的实践,为更好地布局应用生态版图提供更为畅达自如的环境。
Marty McFly 曾言:“未来,轻客户端会遍布各地。” 这种轻量化、用户友好的应用程序目前已有诸多成功范例涌现。那么究竟什么是轻客户端?相较传统的应用端口有何技术上的优化与精进?面向未来,轻客户端的大规模铺开又需要克服怎样的挑战?本篇文章将聚焦上述问题,带你洞悉轻客户端的发展与未来。
什么是轻客户端?
轻松验证,快速响应
在我们了解轻客户端之前,首先需要从客户端的概念开始说起。计算机科学中的客户端是连接到服务器的硬件或软件的一部分,如 Internet 浏览器是一个连接到网站以请求其内容的客户端。在区块链世界中,客户端是以点对点的方式连接到其他客户端的软件,所有客户端相互通信且形成了一个网络,每个客户端都是一个节点。
以以太坊为例,过去只有一种类型的节点(又称:全节点)负责验证和转播网络上的交易和区块。囿于互联网和区块链的运行特点,每个全节点需要下载并验证每个区块,对于每一笔交易也需要经过全流程的核验和把关。那么随着用户体量增大、服务型应用增多,这种全节点把控会带来上文提及的费用高昂、查验缓慢等难题,阻碍了以太坊的长远发展。
在此情景之下,轻客户端的理念逐渐兴起。轻客户端是区块链生态系统中的关键要素,帮助用户以安全和去中心化的方式访问区块链并与之交互,而无需读写区块链上的大量信息。轻客户端被允许以最小信任的方式与全节点实现交互,可以在事先不知情的情况下证明信息的真实性。轻客户端的基本功能是:每当有区块出现在网络便进行下载,向客户端发送特定状态的默克尔证明(Merkle proofs)请求。其使用分布式哈希表来追踪前缀节点,而不是使用本地存储,以一种“云存储、云验证”的方式直接获取用户个体的信息验证材料,促使交易、娱乐等各项活动更快开展。
整体而言,轻客户端解决了可用性和采用技术时的主要障碍。作为 Web3 基础设施组件,轻客户端允许以比运行完整节点更少的资源方式与区块链进行交互,并且可嵌入桌面、Web 和移动应用程序。最重要的是,它们保持不信任,直接从对等节点同步区块头。轻客户端通过向单个全节点发出请求、同步区块链的区块头来验证全节点提供的特定响应来工作,真正做到了“最多跑一次”。
使用轻客户端的成功案例
目前,无论是以太坊还是波卡,各大公链都开始积极引入轻客户端的技术理念,并不断在链上做出轻客户端的应用设计尝试,竭力覆盖各类 DApp 和基础设施,为开发者和用户提供全新的操作体验。
Fluffy 是一种以太坊轻客户端,是为以太坊 2.0 客户端 Nimbus 开发的一种操作模式。一个轻客户端友好的网络,必须设计只需付出少量存储空间、少许工作量的节点来参与网络并作出贡献,而不是要求每个节点都必须承担很高额的负载。Fluffy 就是秉持这样运行理念的技术客户端,它将使 nimbus-eth1 客户端可以作为网络中的一个轻客户端节点来运行,通过开发 Portal Wire 协议成功实现了与其它客户端的握手,以“桥节点”为门户网络输入状态数据,轻松实现云端数据的快捷传输。此外,Fluffy 将支持以太坊 JSON-PRC API 的一个子集,所以像钱包这类设施可以直接集成该类客户端。
NEO 技术社区生态中,有一个可实现与 NEO 区块链交互的轻客户端名为 Neo-Swift,主要用 Swift-4 语言编写运作。Neo-Swift 项目的创建主要基于以下几个原因:1、开发者想要开发分布式 iOS 应用,覆盖范围广;2、建立开发者友好社区的重要方法就是创建便于非区块链开发者使用的 SDK;3、不少开发者喜欢 Swift 且移动设备的开发与部署日益重要。据悉,Neo-Swift 能够高效验证用户在链上的交易历史和账户状态,并为应用交互提供模拟动态框架,为 NEO 生态技术社区的升级锻造提供了全新思路。
Substrate Connect 是基于浏览器的 Substrate 链上轻客户端,已成为 Substrate 技术堆栈的最新成员。这个备受期待的基础设施组件为开发人员和最终用户提供了一种更为简单、快速的应用方式,以完全去中心化、无需信任的方式连接到 Substrate 链,赋予更多 DApp 服务以及 DApp 开发人员以良好的应用体验感。Substrate Connect 是一个 Javascript 库,它提供了一个功能齐全且附带扩展途经的轻客户端,取代了通过 RPC 节点连接到 Substrate 链的传统流程,DApp 开发人员不再需要经历运行本地完整节点的繁琐步骤,直接可以在他们的 DApp 中轻松访问轻客户端集成。
Helios 是由知名风投机构 a16z Crypto 推出的以太坊轻客户端。Helios 由一个执行层和一个共识层组成,与大多数客户端不同,其将两个层紧密耦合,因此用户只需安装和运行一个软件即可使用 Helios;此外,Helios 基于 Rust 语言进行编写,在两秒钟内同步、不使用存储,并提供对以太坊无需信任的访问功能,其使用途径与全节点基本相同。值得一提的是,Helios 将数据从不受信任的集中式 RPC 提供程序转换为可验证安全的本地 RPC,通过使用先前已知信标链区块哈希和不受信任的 RPC 进行连接和工作,在不运行完整节点的情况下验证其真实性。由于 Helios 非常轻巧,用户可以从任何设备(包括手机和浏览器扩展)访问安全链数据,真正满足了轻客户端的便捷使用需求。
面向未来:
轻客户端的破困之道
轻客户端的应用已日渐铺开,但其中夹杂的运行弊端也不容忽视。例如轻客户端不直接链入网络服务,无法验证除却客户端以外的其他所需信息,也不能直接向其他对等节点传输数据。而当下公链生态中不断强调“跨链”技术进行数据传递和高效处理,开发者可以借鉴跨链技术的经验尝试进行轻客户端的数据搭桥,这对轻客户端的技术升级和功能优化来说是至关重要的方向。
另外,轻客户端还缺乏一种更好的用户激励方式,众所周知激励是生态系统稳定的关键。如何允许用户以去中心化的和安全的方式访问区块链,鼓励用户和机构运行全节点、服务轻节点、惩罚服务坏数据的恶意全节点?或许可以采取类似“DAO”治理的理念体系进行轻客户端生态的运营管理,形成“开发者——轻客户端——用户”之间的良性循环体系。
事实上,诸如优化轻客户端运作环境、革新轻客户端使用功能的技术方案或许还有很多。未来还需各位开发者不断开拓创新,打造面向 Web3 的卓越轻客户端。