Web3 与 dApp 基础设施指南【翻译】
我们创建此指南旨在帮助刚接触 Web3 和 dApp 基础设施的人们在其组织中使用这项技术。Web3 应用的设计比 Web2 的去中心化程度高得多。不断涌现的新服务使得构建和运行这些项目更加容易和安全。工程师必须了解每个部分的工作原理才能创建高效的 Web3 应用。我们在此进行描述。
Web3 dApp 全景概览
Web3 去中心化应用 (dApp) 领域广阔而复杂,包含各种利用区块链技术的应用。这些去中心化、可互操作的应用通常通过加密代币来激励参与。该领域的关键类别包括:
-
门户 (Doors)
使用户能够访问并与 Web3 交互的工具和平台。这些界面和应用弥合了传统网络用户与 Web3 去中心化协议之间的鸿沟。
-
应用 (Applications)
充当终端用户与底层区块链协议和原语之间的桥梁,提供用户界面和体验。
-
原语 (Primitives)
去中心化生态系统中的基础组件。它们是可互操作的构建模块,开发者利用它们来创建复杂的 dApp。
-
协议 (Protocols)
为去中心化网络提供基础设施的框架和系统。它们定义了区块链网络上的数据存储、传输和处理。
一句话总结:
- 门户:使用户能够访问并与 Web3 交互
- 应用:通过用户界面和体验将用户与协议和原语连接起来
- 原语:是面向特定任务的、可互操作的、用于构建去中心化应用的构建模块
- 协议:构建了 Web3 的基础区块链架构
Web3 DApp架构
Web3 应用程序,通常称为去中心化应用程序 (dApp),拥有一种独特的架构,使其与传统 Web 应用程序区别开来。这种差异主要源于它们对去中心化网络的使用,这些网络通常由区块链技术驱动。以下是 Web3 架构关键组件的简化分解:
Web3 关键组件
-
区块链基础 (Blockchain Foundation)
Web3 应用的核心建立在区块链之上,区块链充当去中心化且不可篡改的账本。该账本确保了应用内数据的完整性和透明度。 -
智能合约 (Smart Contracts)
这些是存储在区块链上的程序,对于 Web3 应用的功能至关重要。智能合约基于特定条件自主执行操作,并管理去中心化生态系统的业务逻辑和规则。 -
前端界面 (Frontend Interface)
Web3 应用的前端通常使用传统的 Web 开发工具和框架进行开发。它提供了一个直观的用户界面,用于与区块链上的智能合约进行交互。集成像 web3.js 或 ethers.js 这样的库,以促进用户界面与区块链之间的连接。 -
中间件层 (Middleware Layer)
在 Web3 架构中,中间件层充当原始区块链数据与前端之间的缓解中介。它简化了关键任务,如查询区块链事件、将其转换为用户友好的格式,以及管理发生在链下的复杂计算和交互,从而降低复杂性并使流程更易于管理。 -
跨链互操作性 (Cross-Chain Interoperability)
Web3 应用的一个重要方面是它们能够桥接不同的区块链,从而增强互操作性。这种跨链功能使应用能够利用各种网络的优势,允许资产和信息在原本孤立且碎片化的不同区块链系统之间进行顺畅的转移和交换。
总结来说, Web3 架构以其去中心化的基础为特点,以区块链技术为核心,由智能合约提供支持,并通过用户友好的前端、高效的中间件和跨链互操作性进行增强,以提供无缝体验。
Web3 dApp 架构
让我们更仔细地审视 Web3 应用的基本组件,并探讨可为每个部分开发的各种工具。
1. 智能合约 (Smart Contract)
智能合约是 Web3 去中心化应用 (dApp) 功能的基础。它们是条款被编码并存储在区块链上的自动化合约。这些合约独立处理 dApp 的逻辑和状态,实现不依赖中央机构的交易和交互。一旦部署到区块链上,智能合约就变得不可变,成为更新数据的主要手段。
智能合约的开发过程通常涉及几个关键步骤:
* 业务逻辑分析 (Analysis of Business Logic):首先分析底层业务逻辑,以确保智能合约将按预期运行。
* 合约编码 (Coding the Contract):然后对合约进行编码,通常使用 Solidity(以太坊智能合约的主要语言)。
* 测试 (Testing):严格的测试对于识别错误和确认合约功能至关重要。
* 审计 (Audit):在部署之前,智能合约经历一个关键的审计阶段。此步骤对于识别漏洞和确保合约在所有场景下正确运行至关重要。审计有助于防止漏洞利用,从而保护用户资金并维护对应用的信任。
对于智能合约的开发,流行的环境包括 Hardhat 和 Foundry。
* Hardhat:此环境因其部署功能而受到青睐,该功能简化了将合约转移到区块链的过程。
* Foundry:以其强大的测试工具而闻名,Foundry 在智能合约开发生命周期中扮演重要角色,尤其是在测试和验证阶段。
2. dApp 前端 (dApp Frontend)
去中心化应用 (dApp) 的前端至关重要,因为它构成了用户的主要界面。用户通过前端可以访问其账户信息、检查资产余额,并通过智能合约与各种 dApp 功能进行交互。为了确保去中心化网络的安全性和完整性,这些交互和交易需要通过用户的钱包进行身份验证。
加密钱包不仅仅是数字资产管理者;它还充当用户与 dApp 之间的关键纽带。这些钱包具有内置的提供程序 (provider),这是一个能够直接与区块链通信的层。该提供程序使钱包能够执行诸如查询区块链数据、签署交易以及安全地与智能合约交互等操作,同时保护用户的私钥。
* MetaMask:一个用户友好且安全的浏览器扩展程序和移动应用,使用户能够在以太坊区块链和其他 EVM 兼容网络上管理、转移加密货币并与去中心化应用交互。
* WalletConnect:一个开放协议,允许移动钱包通过扫描二维码或深度链接安全地与去中心化应用 (dApp) 交互,而无需暴露私钥。
此外,Web3 前端并不局限于仅使用钱包的内置提供程序。它还具有集成第三方提供程序的灵活性,这些提供程序可以提供额外的服务,例如访问由其他组织管理的节点。
* Alchemy:一个强大的区块链开发者平台,提供增强的 API 服务、开发者工具和基础设施,帮助在以太坊和其他区块链上轻松可靠地扩展和构建去中心化应用。
* Infura:一个可扩展且可靠的区块链基础设施服务,为开发者提供易于使用的 API 和工具,将应用程序连接到以太坊和 IPFS,而无需运行自己的节点。
前端的另一个重要方面是其与中间件的交互。中间件有效地检索历史和聚合数据。它通常对链下区块链数据进行索引和处理,使其更易于访问。链下处理能够实现比直接查询区块链更高效、更灵活的数据检索。这种能力对于审查交易历史、生成分析见解以及通过提供链上活动的全面视图来改善整体用户体验非常宝贵。
3. 中间件 (Middleware)
Web3 应用中的中间件充当关键的中间层,提供集中式的辅助功能,以应对 Web3 技术固有的技术挑战。其作用是在去中心化框架内确保高效和安全的操作。
中间件的关键功能和一些流行工具包括:
* 数据索引 (Data Indexing):中间件收集和处理来自智能合约的数据,创建一个可访问层以进行高效的数据查询和检索。这一点至关重要,因为去中心化的区块链数据存储特性使得直接链上数据检索非常繁琐。
* Subgraph (The Graph):一种用于提取和处理区块链数据的工具,将其存储为可通过 GraphQL 轻松查询的格式。
* Dune:提供区块链生态系统分析,允许用户访问和共享来自各种区块链网络(如以太坊、xDai、Polygon 等)的数据。
* 监控 (Monitoring):涉及对智能合约的持续监控,检测并响应状态和交易事件的变化。这对于维护智能合约的完整性和功能性至关重要。
* 自动化任务 (Autotask):此功能自动执行特定的智能合约操作以响应某些事件或条件,确保操作顺畅及时,无需手动干预。
* 告警 (Alerting):可以配置中间件以基于预定条件发送告警。这些告警可以通过各种渠道进行传达,例如电子邮件、用户通知、值班服务或消息,便于快速响应区块链环境中的重要事件或状况。
这些常见工具通常集成了多种功能,包括上述的监控、自动化和告警:
* Sentio:一个用户友好的工具,用于获取去中心化应用的洞察、保护资产和排查交易问题。
* Gelato:被称为 Web3 的去中心化后端,能够创建自动化的、具有链下感知能力的增强型智能合约。
* OpenZeppelin Defender:专注于在跨区块链的智能合约部署和维护中执行安全最佳实践。
* Tenderly:为 Web3 开发者提供的平台,用于创建、测试、监控和操作智能合约,将调试工具与可观察性和基础设施组件相结合。
4. SDK (Software Development Kit)
Web3 应用中的软件开发工具包 (SDK) 在简化与智能合约的交互方面起着关键作用。它有效地封装了从这些合约读取和写入所需的逻辑,主要侧重于核心业务操作。这种封装显著简化了用户或客户端应用程序的流程,使他们能够通过高级函数调用更轻松地进行复杂的区块链交易。
SDK 还设计为与流行的库(如 web3.js、ethers.js 和 viem)无缝集成。这些库因其在促进与以太坊虚拟机 (EVM) 区块链交互方面的效率而广为人知。
* Web3.js:一个多功能的以太坊 JavaScript API,促进 Web 应用程序与以太坊区块链之间的交互。它使开发者能够创建、发送和管理智能合约调用和交易。
* Ethers.js:一个轻量级、模块化的 JavaScript 库,旨在为与以太坊区块链及其生态系统交互提供完整且紧凑的工具集。
* Viem.js:该库提供了更高层次的抽象,可能将复杂的区块链交互简化为更易于访问和用户友好的方法。
通过利用这些集成,SDK 增强了区块链技术的整体可用性和可访问性,使开发者和最终用户能够更有效地参与去中心化生态系统。
5. 跨链 (Cross-Chain)
区块链跨链技术包含促进区块链网络之间交互和价值交换的方法和系统。该技术对于实现各种区块链系统之间的无缝互操作性至关重要。
该领域的关键组件和协议包括:
* 代币桥 (Token Bridge):代币桥支持在不同区块链网络之间转移代币。它增强了区块链互操作性,使用户能够利用多条链的独特功能,而不会局限于单个区块链的生态系统。
* Stargate Protocol:这是一个全面的流动性传输协议,旨在支持跨链转移和通信。构建在 LayerZero 基础设施之上,Stargate Protocol 实现了高效流畅的跨链交互。
* 跨链传输协议 (CCTP):CCTP 是一种链上实用工具,允许在区块链网络之间安全地转移 USDC(一种稳定币)。它采用原生销毁和铸造等机制来促进这些转移。
* 消息桥 (Message Bridge):这种机制促进不同区块链之间的信息和消息传输,有助于它们的互操作性。它使用标准化的通信协议来确保可靠的消息传递。此过程通常涉及智能合约和链下组件(如中继节点或预言机)的组合。
* LayerZero:LayerZero 提供基础架构,简化了支持的区块链之间的连接。它支持不同区块链网络之间的各种功能,如交换、转账和借贷。
* 跨链聚合器 (Cross-Chain Aggregator):这些平台或协议将来自多个区块链网络的流动性和功能整合到单一界面中。它们集成了跨链桥、流动性池和去中心化金融 (DeFi) 协议。通过访问广泛的流动性来源,用户受益于优化的汇率、减少的滑点和增强的流动性。跨链聚合器还旨在优化跨链资产转移的交易路径,以提高效率和成本效益。
* LI.FI:该聚合协议提供去中心化交易所 (DEX) 连接和跨链数据消息传递能力。LI.FI 在 API/合约级别以及作为小部件 (widgets) 集成了这些功能,供开发者直接整合到他们的产品中。
关键术语中英对照表 (Key Term Glossary):
- Web3: Web3 (下一代互联网)
- dApp (Decentralized Application): 去中心化应用 (dApp)
- Blockchain: 区块链
- Decentralized: 去中心化的
- Interoperable: 可互操作的
- Cryptographic Tokens: 加密代币
- Doors: 门户 (指访问工具和平台)
- Applications: 应用 (指连接用户的部分)
- Primitives: 原语 (指基础构建模块)
- Protocols: 协议 (指底层规则和基础设施)
- Smart Contract: 智能合约
- Immutable Ledger: 不可篡改账本
- Frontend Interface: 前端界面
- Middleware Layer: 中间件层
- Cross-Chain Interoperability: 跨链互操作性
- Solidity: Solidity (编程语言)
- Hardhat: Hardhat (开发环境)
- Foundry: Foundry (开发环境)
- Wallet: 钱包
- Provider: 提供程序 (连接区块链的接口)
- MetaMask: MetaMask (钱包)
- WalletConnect: WalletConnect (协议)
- Alchemy: Alchemy (节点服务)
- Infura: Infura (节点服务)
- Data Indexing: 数据索引
- Subgraph (The Graph): Subgraph (The Graph) (索引协议/工具)
- Dune: Dune (分析平台)
- Monitoring: 监控
- Autotask: 自动化任务
- Alerting: 告警
- Sentio: Sentio (监控工具)
- Gelato: Gelato (自动化服务)
- Defender (OpenZeppelin Defender): Defender (OpenZeppelin Defender) (安全平台)
- Tenderly: Tenderly (开发运维平台)
- SDK (Software Development Kit): SDK (软件开发工具包)
- web3.js: web3.js (库)
- ethers.js: ethers.js (库)
- viem: viem (库)
- Token Bridge: 代币桥
- Stargate Protocol: Stargate Protocol (协议)
- CCTP (Cross-Chain Transfer Protocol): CCTP (跨链传输协议)
- USDC: USDC (稳定币)
- Message Bridge: 消息桥
- LayerZero: LayerZero (协议)
- Cross-Chain Aggregator: 跨链聚合器
- LI.FI: LI.FI (聚合协议)
希望这份详细的翻译对您有所帮助!原文:https://57blocks.io/blog/guide-to-web3-and-dapp-infrastructure