Revision history and IPFS entry, back to latest
1.435Club
IPFS What is this

Content Hash

一文搞懂「Web3基础设施的关键部分」

1.435Club
·
·
小白也能懂的「区块链基础设施」

简介

随着跨链桥、新一代测试框架和其他加密协议的迅速出现,如何有效地绘制区块链基础设施蓝图,仍然是用户、开发人员和投资者的一个重磅问题。"区块链基础设施 "可以包括从底层网络栈到共识模型/虚拟机中各种不同的产品和服务。在以后的文章中我们也将对构成L1/L2链的各种 "核心 "组件进行更深入的分析(敬请关注!)。在这篇文章中,我们探讨的具体目标是:

  1.  提供区块链基础架构其他关键组件的广泛概述。
  2. 将这些组件分解成更清晰、更容易理解的子部分。

基础架构图

我们将区块链基础设施的 "生态系统 "定义为旨在以下关键领域支持在L1和L2链发展的协议:

  • Layer-0基础设施
  • (1)去中心化云服务(存储、计算、索引)
  • (2)节点基础设施(RPC、质押/验证人)
  • 中间层
  • (1)数据可用性
  • (2)通信/消息传输协议
  • 区块链开发
  • (1)安全和测试
  • (2)开发者工具(开箱即用的工具、前/后端库、语言/IDE)


Layer-0基础设施

去中心化云服务

云服务对Web2的发展至关重要——随着应用程序的计算量与数据存储需求的增长,云服务提供商以低经济成本的方式快速提供数据和计算是至关重要的。而Web3应用程序在秉持区块链的理念下对数据和计算也有着类似的需求,因此,云计算服务的去中心化版本的协议应运而生。

去中心化云服务有3个核心部分:

存储 - 数据/文件被存储在多实体运行的服务器上。由于数据是可复制的或跨多台服务器存在的,这些网络也能够实现高度的容错。

计算 - 就像存储一样,计算也集中在Web2范式中。分布式计算关注的是将计算分布在多节点上,以实现更高的容错性(如果一个或一组节点发生故障,网络仍然可以在对性能干扰最小的情况下服务发起的请求)。

索引 - 在Web2世界中,数据已经存储在由一个实体掌控并运营的一台或一组服务器上,查询这些数据相对容易。由于区块链节点是分布式的,数据也可能是孤立地分散在不同的区域,并且经常处在不兼容的标准下。而索引协议聚集了这些数据,并提供了一个易于使用和标准化的API来访问这些数据。

  • 可提供存储、计算和索引的两个项目:Aleph和Akash网络
  • 在细分领域专业的项目:如专业索引的The Graph,专业存储的Arweave/Filecoin。

节点基础设施

  • 远程过程调用(RPC)是各种类型软件系统的核心功能。

它们允许一个程序调用或访问另一台计算机上的程序,这特别适用于区块链中,因为区块链必须处理来自不同区域与环境中运行的机器的大量传入请求。像Alchemy、Syndica和Infura这些网络协议就提供这种基础设施作为服务,让开发者专注于高水平的应用开发,而不是专注于涉及中继或路由节点调用的底层机制。Alchemy像许多RPC供应商一样掌握并运营所有的节点,但对于加密货币社区的很多人来说,集中式RPC的危险是显而易见的——它只要引入一个单点故障就可能会危及整个区块链的有效性(即如果Alchemy发生故障,应用程序将无法检索或访问链上数据)。最近也有像Pocket能解决这种问题的去中心化RPC协议兴起,但这种方法的有效性还有待大规模测试来检验。

  • 质押/验证人——区块链的安全性依赖于一组分布式节点验证链上的交易,但必须有人实际运行来参与共识的节点。

在多数情况下,运行节点所需的时间、经济成本与能耗是非常多的,导致许多人选择退出以依靠其他人来承担确保链上安全的责任;然而,这种行为也带来了严重的问题--如果每个人都决定将安全推卸给他人,将会无人来验证。而像P2P和Blockdaemon这样的服务运行基础设施并让经验不足或资金不充足的用户通过集资参与共识。有些人认为这些质押供应商引入了不必要的中心化程度,但另一种情况可能更糟——如果没有这些供应商,运行节点的门槛将对普通网络参与者来说极高,反而可能会导致更高的中心化程度。

中间层

数据可用性

应用程序是数据的重度消费者。在Web2范式中,这些数据通常以中心化的方式直接来自用户或第三方供应商(数据供应商因收集并出售数据给特定的公司和应用程序而直接获得利益——例如亚马逊、谷歌或其他机器学习数据供应商)。

DApp也是数据的重度消费者,但需要节点将这些数据提供给用户或链上运行的应用程序。为了最大地减少信任问题,以分布式的方式提供这些数据也是极其重要的。应用程序快速并高效地访问高保真数据主要有两种方式:

  • 预言机(例如Pyth和Chainlink)提供了对链下数据数据流的访问通道,从而使加密网络能够以高可靠与分布式的方式和传统/过时系统以及其他外部信息对接,这包括高质量的金融数据(即资产价格)。这项服务对于将DeFi扩展到交易、借贷、体育博彩、保险等广泛领域中是至关重要的。
  • 数据可用性层是专门从事交易排序和向其支持的链提供数据的链。通常情况下,它们为用户提供高概率的确认的数据可用性证明,即所有区块数据已在链上发布。数据可用性证明是保证Rollup排序器的可靠性和降低Rollup交易处理成本的关键。Celestia的数据可用性层就是一个很好的例子。

通信与消息传输协议

随着Layer-1数量增长及其生态系统的发展,对于管理跨链的可组合性和互操作性的需求也日益增长。跨链桥让原本孤立的生态系统以有意义的方式进行互动——这类似于贸易路线帮助连接不同的地区以迎来一个知识共享的新时代。Wormhole、Layer Zero和其他跨链桥方案支持通用的消息传递,让所有类型的数据、信息和代币在多个生态系统之间流通——应用程序甚至可以跨链来进行任意功能调用,使它们能够在无需部署在其他地方的情况下进入其他社区、其他的协议。其他协议如Synpase和Celer仅限于资产或代币的跨链。

链上信息传输仍然是区块链基础设施的一个关键组成部分。随着DApp开发和零售需求的增长,协议的分布式与用户互动的能力将成为增长的关键驱动因素。以下是几个链上信息传输可能适用的潜在领域。

  • 申请代币的通知
  • 允许在钱包内置消息通信
  • 关于重要协议更新的公告/通知
  • 跟踪关键问题的通知(如DeFi应用的风险指标,安全漏洞)

几个著名的开发链上通信协议的项目:Dialect、Ethereum Push Notification Service(EPNS)、XMTP

区块链开发

安全与测试

区块链的安全与测试相对来说是一个发展不足的新生事物,但不可否认的是,它对整个生态系统的成功至关重要。区块链应用程序对安全风险特别敏感,由于通常它们直接保障资产的安全,设计或实施中的一点微小失误往往会导致巨大的经济损失。

7种主要的安全和测试方法:

  • 单元测试是大多数软件系统的测试套件的核心部分,开发者编写各种有用的单元测试框架来对软件中最小可测试单元进行检查和验证。以太坊上一些流行的包括Waffle和Truffle,Solana链有Anchor测试框架。
  • 集成测试关注的是将各种软件模块作为一个群体进行测试,这种测试范式虽在区块链之外被广泛利用,但在区块链开发中也能发挥价值,因为库和高层驱动经常以各种方式与其他低层模块相互作用(例如,一个类型化的库与一组底层智能合约相互作用),所以测试这些模块之间的数据和信息流是至关重要的。
  • 审计已经成为区块链开发安全流程的核心部分。在发布智能合约供用户使用之前,协议很大程度上依靠第三方代码审计来检查和验证每一行代码来确保最高程度的安全。Trail of Bits、Open Zeppelin和Quantstamp是合约代码审计中几个值得信赖的团队(审计服务市场需求很大以至于等待时间往往长达几个月)。
  • 形式化验证是关于检查一个程序或软件组件是否满足某组属性。通常情况下,有人会写一份产品规范来详细阐述程序应该如何运行,形式化验证框架会把该规范形成一组约束条件后进行处理和检查。Certora算是一个领军项目,其利用形式化验证以及运行时验证来加强智能合约的安全性。
  • 模拟——长期以来,量化交易公司一直使用基于Agent的仿真系统来回测算法交易策略,鉴于区块链测试的高成本,模拟则提供了一种测试各种假设和输入的方法。Chaos Labs和Guantlet就是利用基于场景的模拟来保障区块链协议平台的典型范例。
  • 漏洞悬赏——漏洞悬赏有助于利用区块链的去中心化理念来解决大规模的安全问题。Token代币奖励激励社区成员和黑客来报告和修复关键问题。因此,悬赏计划在把 "灰帽子 "变成 "白帽子"方面发挥了独特的作用(即把参与黑客攻击以获取资金的人变成解决漏洞和保障协议安全的人)。事实上,Wormhole现在在Immunefi上有一个价值高达1000万美元的bug赏金 (有史以来最大的软件漏洞赏金之一),我们也鼓励所有人为网络安全事业贡献一份力!
  • 测试网(testnet)——测试网提供了与主网具有相同的运行环境和相似的工作原理的demo,允许开发者在开发环境中测试和调试参数。很多测试网络使用PoA共识机制或其他共识机制能以较少的验证人来优化交易速度,因为测试网上的货币也没有实际价值,所以测试网没有任何程序能让用户通过挖矿获得代币,而是通过水龙头获得。同时也有许多测试网建立的目的是模拟主网L1的行为(例如以太坊的Rinkeby、Kovan、Ropsten测试网)。

以上每种方案都有自己的优点和缺点,当然它们之间并不是相互排斥的,而是通常针对项目开发的不同阶段来使用相应的测试方案。

第一阶段:单元测试是在构建智能合约时进行。 

第二阶段:当建立了更高层次的抽象功能时,集成测试对于测试不同模块之间的相互作用就变得尤为重要。

第三阶段:代码审计一般是在临近测试网/主网发布或大型功能发布时进行。

第四阶段:形式化验证通常与代码审计相匹配,并作为额外的安全保证。一旦程序上链运行,之后的流程就可以实现自动化,从而轻易让持续集成或持续部署工具与之配对。

第五阶段:应用程序在测试网上运行时,需检查吞吐量、流量和其他扩展参数等。

第六阶段:在主网部署后启动漏洞悬赏策略,以利用社区资源来发现和修复问题。

测试方案汇总

开发者工具

任何技术或生态系统的发展都依赖于其开发者的成功,尤其在区块链中。

我们将开发者工具分为3个主要类别:

开箱即用的工具

SDK(用于开发新L1层公链)有助于抽象出创建和部署底层共识核心的过程。预搭建模块允许在保证灵活性和定制化的同时提升了开发速度和标准化。Cosmos SDK让Cosmos生态系统内的新PoS公链得以快速发展,Binance Chain和Terra就是基于Cosmos链的优秀范例,堪称行业楷模。

智能合约开发——市面上有许多工具可以帮助开发者快速创建智能合约。例如,Truffle Boxes提供简单易用的Solidity合约实例(投票、MetaCoin等),社区也可以为其资源库进行拓展补充。

前端/后端工具

现在已经有很多工具让应用程序开发变得便捷容易,同时也能将应用程序部署到链上(ethers.js,web3.js等)。

升级和合约交互(例如OpenZeppelin SDK)——针对不同的生态系统专门有各种不同的工具(例如Solana合约的Anchor IDL,Parity合约的Ink)来处理RPC请求、发布IDL和生成客户端。

语言和IDE

区块链的编程模型通常与传统的软件系统有很大的差异,用于区块链开发的编程语言则是为了促进区块链编程模式的发展。Solidity和Vyper被广泛使用在兼容EVM的链,而其他语言例如Rust则被广泛用于Solana和Terra等链上。

总结

“区块链基础设施”可能是一个过度定义、难以理解的术语——它往往是涵盖从智能合约审计到跨链桥的所有内容的一系列产品和服务

关于加密货币基础设施的讨论要么过于宽泛或容易混淆,要么对于普通读者来说过于专业,所以我们希望这篇文章为那些刚刚进入加密领域的小白和那些寻求更专业解读的人之间取得了适当的平衡。

当然,加密领域正在迅速发展,本文提到的协议甚至可能在未来两三个月后不再构成适宜的解读,但即便如此,我们也相信本文的主要目标(即把“基础设施”此概念解释得更容易理解和消化)在未来将具有更大的意义,我们也一定会随着区块链基础设施格局的发展而不断更新和补充清晰准确的看法。

----------------------------------------------------------------------------------------------------

原文 https://jumpcrypto.com/peeking-under-the-hood/  by Rahul Maganti(Jump Crypto 副总裁)

内容翻译:小橙子  校对:medici  排版:秋老师




CC BY-NC-ND 2.0