简介
随着跨链桥、新的测试框架和其他加密协议的迅速出现,如何有效地规划区块链基础设施仍然是用户、开发人员和投资者面临的主要挑战。术语“区块链基础设施”可以包含从底层网络堆栈到共识模型或虚拟机的各种不同的产品和服务。在这篇文章中,我们旨在:
-
提供区块链基础设施的其他关键组件的概览。
-
将这些组件分解成清晰易懂的子部分。
基础设施图
我们将区块链基础设施的“生态系统”定义为旨在支持L1和L2在以下关键领域发展的协议:
-
0层基础设施:(1)去中心化云服务(存储、计算、索引);(2)节点基础设施(RPC,质押/验证器)
-
中间件:(1)数据可用性;(2)通信/消息传输协议
-
开发:(1)安全和测试;(2)开发工具(开箱即用工具,前端/后端库,语言//IDE)
0层基础设施
去中心化云服务
云服务对Web2的发展至关重要——随着应用程序的计算和数据需求的增长,专门致力于以经济高效方式快速提供这些数据和计算的服务供应商变得至关重要。Web3应用程序对数据和计算有类似的需求,但希望忠于区块链的精神。因此,旨在创建这些Web2服务去中心化版本的协议应运而生。去中心化云服务有3个核心组件:
-
存储——数据/文件存储在由多个实体运行的服务器上。由于数据在多台机器上被复制或剥离,这些网络能够实现高度的容错。
-
计算——和存储一样,计算集中在Web2范式中。去中心化计算旨在将计算分布在多个节点上,以实现更高程度的容错(如果一个或一组节点发生故障,网络仍然可以在对性能影响最小的情况下处理请求)。
-
索引——在Web2世界中,数据已经存储在由一个实体拥有和运营的一台或一组服务器上,查询这些数据相对容易。因为区块链节点是分布式的,所以数据可以孤立地分散在不同的区域,而且通常采用不兼容的标准。索引协议聚合了这些数据,并提供了易于使用和标准化的API来访问这些数据。
有几个项目提供存储、计算和索引(Aleph和Akash网络),而其他项目则更专门化(例如用于索引的Graph,用于存储的Arweave / Filecoin)。
节点基础设施
-
远程过程调用(RPC)是许多类型软件系统功能的核心。它们允许一个程序调用或访问另一台计算机上的程序。这对区块链尤其有用,因为区块链必须为来自不同地区和环境中运行的各种机器的大量传入请求提供服务。像Alchemy、Syndica和Infura这样的协议提供了这种基础设施即服务,允许构建者专注于高水平的应用程序开发,而不是中继或路由他们对节点的调用所涉及的底层机制。与许多RPC供应商一样,Alchemy拥有并运营所有节点。对于加密社区中的许多人来说,中心化RPC的危险显而易见——它引入了一个单点故障,可能会危及区块链的活性(例如,如果Alchemy崩溃,应用程序将无法检索或访问链上的数据)。最近,像Pocket这样的去中心化RPC协议的兴起解决了这些问题,但这种方法的有效性仍有待大规模测试。
-
质押/验证者——区块链的安全性依赖于一组分布式节点来验证链上的交易,但必须有人实际运行参与共识的节点。在许多情况下,运行节点所需的时间、成本和能源都非常昂贵,导致许多人选择退出,转而依赖其他节点来承担确保链上安全的责任;然而,这种行为带来了严重的问题——如果每个人都决定将安全性推卸给其他人,就没有人会进行验证。像P2P和Blockdaemon这样的服务运行基础设施,允许不太成熟或资金不充足的用户通常通过筹集资金来参与共识。一些人认为,这些质押供应商引入了不必要的中心化程度,但另一种选择可能更糟糕——如果没有这些供应商,运行节点的门槛将对普通网络参与者来说将会太高,可能导致更高的中心化程度。
中间件
数据可用性
应用程序大量消费数据。在Web2范式中,这些数据通常以中心化的方式直接来自用户或第三方供应商(数据供应商通过聚合数据并将数据出售给特定的公司和应用程序直接获得报酬——比如Amazon、谷歌或其他一些机器学习数据供应商。
DApp也是大量数据的消费者,但它要求节点将这些数据提供给用户或链上运行的应用程序。为了尽量减少信任假设,必须以去中心化的方式提供这些数据。应用程序可以通过两种主要方式快速有效地访问高保真数据:
-
像Pyth和Chainlink这样的数据oracle提供了对数据流的访问,从而使加密网络能够以可靠和去中心化的方式与传统系统以及其他外部信息对接。这包括了高质量的金融数据(即资产价格)。该服务对于将DeFi扩展到交易、借贷、体育博彩、保险和其他广泛用例至关重要。
-
数据可用性层是专门为交易排序并向其支持的链提供数据的链。通常情况下,它们会生成证明,为客户端提供所有区块数据已在链上发布的高概率确认。数据可用性证明是保证Rollup排序程序可靠性和减少Rollup交易处理成本的关键。Celestia便是一个典型例子。
通信和消息传递
随着第1层及其生态系统数量的增长,对跨链可组合性和互操作性的需求逐渐增多。跨链桥让原本孤立的生态系统以一种有意义的方式相互作用——这类似于新的贸易路线帮助连接了原本完全不同的地区,开创了一个知识共享的新时代!Wormhole、Layer Zero和其他跨链桥解决方案支持通用消息传递,允许所有类型的数据和信息跨多个生态系统移动——应用程序甚至可以跨链进行任意功能调用,这使它们能够在无需部署在其他地方的情况下进入其他社区和协议。
链上消息传递仍然是区块链基础设施的一个关键组件。随着DApp的开发和散户需求的增长,协议以一种有意义但去中心化的方式与用户交互的能力将成为增长的关键驱动因素。以下是链上消息传递可能发挥作用的几个潜在领域:
-
代币申领通知
-
允许在钱包内内置消息通讯
-
关于协议重要更新的公告/通知
-
跟踪关键问题的通知(例如,DeFi应用程序的风险指标、安全漏洞)
一些开发链上通信协议的著名项目包括Dialect、Ethereum Push Notification Service(EPNS)和XMTP。
区块链开发
安全和测试
加密货币的安全和测试相对来说刚刚起步,发展不足,但不可否认的是,它对整个生态系统的成功至关重要。加密应用程序对安全风险特别敏感,因为它们通常直接保障资产的安全。设计或实施中的小错误往往会导致巨大的经济后果。
有7种主要的安全和测试方法:
-
单元测试是大多数软件系统测试套件的核心部分。有许多有用的单元测试框架,以太坊上一些流行的测试框架有Waffle和Truffle,Solana上也有Anchor测试框架。
-
集成测试旨在将各种软件模块作为一个整体进行测试。这种测试范式在加密领域之外得到了利用,但在区块链开发中也非常有价值。由于库和高级驱动程序经常以各种方式互相以及与其他低级模块相互作用,因此测试这些模块之间的数据和信息流是至关重要的。
-
审计已经成为区块链开发安全流程的核心部分。在发布智能合约供公众使用之前,协议通常利用第三方代码审核者的服务来检查和验证每一行代码。像许多社区成员一样,我们非常依赖审计师来确保最高程度的安全。Trail of Bits、Open Zeppelin和Quantstamp是这一领域中值得信赖的公司(对他们服务的需求如此之高,以至于等待时间往往长达数月!)
-
形式化验证关注的是检查一个程序或软件组件是否满足一组属性。通常情况下,会有人编写详细说明程序应该如何运行的规范。形式化验证框架将把该规范转换为一组约束条件,然后对其进行解决和检查。Certora是一个利用形式化验证和Runtime Verification来增强智能合约安全性的领先项目。
-
模拟——基于代理的模拟长期以来一直被量化交易公司用于回测算法交易策略。鉴于区块链中实验的高成本,模拟提供了一种方法来测试各种各样的假设和输入。Chaos Labs和Guantlet是平台利用基于场景的模拟来保护区块链和协议的很好的例子。
-
漏洞悬赏——漏洞悬赏有助于利用加密货币的去中心化精神来解决大规模的安全挑战。金钱奖励激励了社区成员和黑客报告和修复关键漏洞。因此,赏金计划在把“灰帽子”变成“白帽子”方面发挥了独特的作用。事实上,Wormhole在Immunefi上悬赏了高达1000万美元的漏洞悬赏,这是有史以来最大的软件赏金之一。
-
测试网络——测试网络允许开发人员在生产环境中测试和调试参数。许多测试网络使用授权证明/其他共识机制和少量验证者来优化速度——测试网络上的货币也没有实际价值。因此,用户无法通过挖矿获得代币。有许多测试网是为了模仿流行的主网L1而构建的(例如以太坊的Rinkeby、Kovan、Ropsten)。
每种方法都有自己的优点和缺点,当然它们也不是相互排斥的——通常这些测试会在项目开发的不同阶段发挥作用:
-
阶段1:在构建合约时编写单元测试。
-
阶段2:一旦构建了更高级别的抽象,集成测试对于测试模块之间的交互就变得十分重要。
-
阶段3:在接近测试网/主网发布或大型功能发布时执行代码审计。
-
阶段4:形式化验证通常与代码审计配合使用,并用作安全性的额外保证。一旦程序被指定,流程的其余部分就可以自动化,从而可以很容易地与Continuous Integration或Continuous Deployment工具配对。
-
阶段5:在测试网络上启动应用程序,以检查吞吐量、流量和其他扩展参数。
-
阶段6:在主网部署后启动Bug赏金,利用社区资源查找和修复问题。
测试解决方案总结
开发者工具
任何技术或生态系统的发展都依赖于其开发者的成功,在加密领域尤其如此。我们将开发者工具分为三个主要类别:
-
开箱即用工具
-
用于开发新L1的SDK有助于抽象出创建和部署底层共识核心的过程。预构建模块在使灵活性和定制化成为可能的同时,优化了开发速度和标准化。Cosmos SDK就是一个能够在Cosmos生态系统中快速开发新的权益证明区块链的很好例子。币安链和Terra是基于Cosmos的著名例子。 -
智能合约开发——有许多工具可以帮助开发人员快速构建智能合约。例如,Truffle boxes 包含了简单而有用的Solidity合约示例(Voting, Metacoin等)。社区也可以为这个资源库提出补充建议。
-
前端/后端工具——有许多工具可以使开发应用程序变得更容易,并将应用程序连接到链上(ethers.js, web3.js等…)
升级和与合约交互(例如OpenZeppelin SDK)——有专门针对不同生态系统的各种不同的工具(例如Solana合约的Anchor IDL,Parity合约的Ink)来编写RPC请求处理,发布IDL,从ID生成客户端。
-
语言和IDE——区块链的编程模型通常与传统的软件系统截然不同。用于区块链开发的编程语言是为促进该模型而开发的。对于兼容EVM的链,Solidity和Vyper被广泛使用。Rust等其他语言则被广泛用于Solana和Terra等链上。
结论
区块链基础设施可能是一个超负荷的、令人困惑的术语。它通常是广泛的产品和服务的同义词,涵盖了从智能合约审计到跨链桥的所有内容。因此,关于加密基础设施的讨论要么过于宽泛,要么过于具体。我们希望这篇文章能够为那些刚刚进入加密领域的人和那些寻求更深入解读的人找到正确的平衡。
##### 注:本文转载自FastDaily我司发表或转载上述内容,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担责任。