主页 > 如流下载imtoken > 想成为一名优秀的 Web3 开发人员?这份 Web3 堆栈指南适合你

想成为一名优秀的 Web3 开发人员?这份 Web3 堆栈指南适合你

如流下载imtoken 2023-09-04 05:08:00

原标题:A Developer's Guide to the Web3 Stack

在 Alchemy,我们将 Web3 定义为基于区块链技术的去中心化互联网生态系统。

首先,作为开发者和建设者,我们在理解去中心化时,通常会提到碎片化技术栈的概念。 虽然 Web3 仍处于初期阶段并且发展迅速,但我们发现其基本构建块已开始成形。

为了更好地理解 Web3 和去中心化互联网的内部工作原理,让我们直接进入 Web3 开发堆栈。

Web3 堆栈概述

在高层次上,构建任何 Web3 应用程序都需要对区块链网络、Web3 基础设施和 Web3 开发环境有深入的了解。

以太坊和以太币有什么区别_sitejianshu.com 以太坊以太经典_如何运行以太坊节点

Web3 网络层

Web3 技术栈的基础是区块链网络层。 Web2 应用程序依赖于集中式数据库,而 Web3 应用程序构建在区块链架构上以实现无信任和无许可的访问。

以太坊和以太币有什么区别_如何运行以太坊节点_sitejianshu.com 以太坊以太经典

网络层:基本的区块链架构

在选择区块链网络构建去中心化应用程序 (dApp) 时,开发人员有两个主要选择:与 EVM 兼容的区块链和与 EVM 不兼容的区块链。

EVM区块链

以太坊一直是 Web3 开发的主要框架,其虚拟环境(即其以太坊虚拟机,或 EVM)存储账户和余额等关键信息。 以太坊的虚拟机还存储了一个机器状态,该状态根据 EVM 建立的一组预定义规则随每个新块而变化。 对于开发人员来说最重要的是,EVM 提供了一个用于存储和执行智能合约的框架,允许开发人员对链上逻辑进行编程。

随着以太坊区块链和 EVM 的兴起,许多旨在解决以太坊的可扩展性限制或昂贵的交易成本的不同网络选择开发与 EVM 完全兼容的框架。 这意味着 EVM 兼容链都共享相同的软件层——Solidity——来运行智能合约。

与 EVM 兼容的区块链允许开发人员利用专为 EVM 链构建的所有相同工具、文档和社区来节省时间和金钱。

如何运行以太坊节点_以太坊和以太币有什么区别_sitejianshu.com 以太坊以太经典

EVM 区块链示例

以太坊——最初的 EVM 智能合约平台

Polygon - 以太坊侧链

Arbitrum - 使用 Optimistic rollups 和多轮欺诈证明的 L2 区块链

Optimism - 使用 Optimistic rollups 和单轮欺诈证明的 L2 区块链

Hermez - ZK-rollups 由 Polygon 管理的以太坊 L2 网络

ZKSync - ZK-rollups 使用 SNARKs 的以太坊 L2 网络

Starknet - ZK-rollups 使用 STARK 的以太坊 L2 网络

Avalanche - EVM 兼容 L1

Cronos - EVM 兼容 L1

3 个最佳 Web3 开发环境

在选择区块链网络来构建 dApp 时,Web3 开发人员应考虑可用开发工具的深度和广度。 幸运的是,EVM 兼容链受益于多年的以太坊开发,在开发环境方面有许多久经考验的选择。

安全帽

Hardhat 是一个 javascript 软件开发环境,允许开发人员编译、测​​试、部署和调试以太坊软件。 Hardhat可通过灵活的插件进行扩展如何运行以太坊节点,使开发者能够轻松定制本地区块链开发环境,并自带强大的Troubleshooting和调试文档集。

松露

一套包含三种不同的、基于 JavaScript 的开发工具——Truffle、Ganache 和 Drizzle——Truffle 帮助构建者编译、测试和部署 EVM 代码,同时还为前端 dApp 开发提供工具。

sitejianshu.com 以太坊以太经典_以太坊和以太币有什么区别_如何运行以太坊节点

Truffle——主要的开发环境、测试框架和部署流水线

Ganache - 允许开发人员快速创建本地区块链

Drizzle - 用于连接前端组件和智能合约的各种前端库

布朗尼

作为基于python框架的EVM开发的替代方案,Brownie提供了一套完整的Web3开发工具,主要构建在Web3.py包之上,用于编译、测试和部署dApp。

非 EVM 区块链

最近,开发人员开始在区块链上构建更多不遵循以太坊框架的 dapp,因此与 EVM 不兼容。

非EVM网络工程师认为EVM链受以太坊框架限制太大,选择通过设计新的结构进行创新。 一般来说,非EVM区块链从一开始就具有数据和交易的可扩展性,并允许高TPS。

非 EVM 区块链的例子

Flow-L1,使用 Cadence,Flow 原生的面向资源的编程语言

NEAR-L1,其智能合约使用 Rust 或 Assemblyscript

Solana - 使用 Rust C、C++ 的 L1 智能合约

Terra - 将 Rust 用于智能合约的 L1

非EVM区块链开发环境

虽然一些开发环境对于非 EVM 链还不够成熟,但一些网络已经开始为各自的链提供开发工具。

Flow 使开发人员能够使用本机 Visual Studio 代码扩展测试 Cadence 智能合约的漏洞。

sitejianshu.com 以太坊以太经典_如何运行以太坊节点_以太坊和以太币有什么区别

另一个非 EVM 开发环境的例子是 Anchor,它允许构建和测试 Solana 合约,其感觉与 Solidity 和 Truffle 类似。 总体而言,Anchor 的环境降低了 Rust 和 Solana 开发的门槛。

我应该使用什么区块链网络?

由于各个区块链通常具有独特的架构和共识机制,因此它们将不可避免地针对特定用例进行更好的优化。 因此,我们坚信多链 Web3 的未来。

鉴于可互操作工具的多样性不断增加,EVM 框架是一个极其丰富的环境。 此外,EVM 兼容性为用户和开发人员通过跨链 dApp 转移流动性提供了更顺畅的过程,并提供了熟悉的用户和开发人员体验。 对于早期开发人员和新协议,我们认为围绕与 EVM 兼容的区块链进行开发,利用现有工具、基础设施和开发人员文档,是一个令人信服的条件。

话虽如此,我们也认识到非 EVM 区块链对于更有经验的开发人员、他们不断壮大的社区基础以及对早期开发人员工具的更多支持的利基功能。

区块链交互层

选择区块链网络后,Web3 堆栈的下一步是区块链交互层。 该层允许开发人员和用户向区块链读取和写入数据。

sitejianshu.com 以太坊以太经典_以太坊和以太币有什么区别_如何运行以太坊节点

区块链交互层:用于从区块链网络读取/写入数据的开发人员构建块。

如果我们不熟悉区块链的工作原理,请快速回顾一下。

区块链由数据块组成。

块存储在分布式节点上。

区块链中的每个节点都充当“迷你服务器”,允许操作员读取和写入数据块。

添加到区块链的任何块都必须传播到网络上的所有节点才能同步。

在考虑 Web3 框架中的数据访问层时,链上存储是标准,因为它本质上是不可变的,并允许任何公众个人查看/验证它。

与区块浏览器一样,数据提供者是区块链交互层的关键部分。 对于初学者来说,它们提供了一个进入较低网络层的窗口,并作为在线资源来检索有关交易、地址余额、汽油费等的实时和历史数据。 区块浏览器通常用于查找支付的关键细节、确定不同交易的状态或只是了解区块链使用的总体趋势。 数据提供者为公众提供阅读和解释区块链的能力。

sitejianshu.com 以太坊以太经典_以太坊和以太币有什么区别_如何运行以太坊节点

Web3 基础架构挑战

但是,如果没有适当的基础设施要求,访问区块链数据并与之交互可能会非常困难。

由于直接在链上写入数据不划算,Web3 开发者利用 EVM 链内置的日志记录功能,让智能合约可以通过 solidity events 以可搜索、划算的方式将信息“打印”到链上。 虽然日志记录降低了存储成本并且是最流行的读取和写入区块链的方式,但它需要一个强大的区块链交互层来确保开发人员可以在事件发出时捕获它们。

运行节点与使用节点服务提供商

从历史上看,使用区块链交互层需要运行一个自托管、自维护的节点。 这是一个昂贵且耗时的过程,仅运行一个以太坊节点的平均成本为每年 86,000 美元。 开发人员发现自己花费工程资源来管理节点错误、回归、磁盘问题、CPU 流量峰值等,而不是构建协议和 dapp。

运行我们自己的节点的成本导致了炼金术的创建。 Alchemy 的核心是公开一组 API,供开发人员与区块链交互,而无需管理节点。

作为 Web3 多链的坚定支持者,Alchemy 的 API 套件提供了跨 L1(包括以太坊网络)、L2(包括 Arbitrum 和 Optimism)、侧链(包括 Polygon)和非 EVM 兼容的 L1 多链支持(如 Flow ).

最终,Alchemy 允许区块链开发人员可靠且可扩展地访问整个 Web3 网络层,从而使他们能够专注于构建 Web3 堆栈。

Web3 表示层

sitejianshu.com 以太坊以太经典_如何运行以太坊节点_以太坊和以太币有什么区别

表示层:更高层次的软件抽象和前端库

在许多方面,Web3 表示层密切反映了 Web2 开发的许多方面。

为了创建和开发前端组件,许多开发人员求助于久经考验的 React.js 库。 在 Web3 社区拥有大量的开发者和追随者,它已经成为 Web3 前端的事实标准。

Web2 和 Web3 前端堆栈之间的一个区别是用于与区块链数据交互的特定库。

在与数据访问层交互时,Web3 dApp 倾向于使用 Ether.js 或 Web3.js,而不是更典型的 HTTP 请求库,例如 Axios 和 Fetch。 特别是,Ethers.js 和 Web3.js 都天然支持对托管在区块链交互层上的区块链节点进行远程过程调用 (RPC),从而能够更加无缝地集成到开发人员的 Web3 技术栈中,并在区块链中读写数据。

如何在 Ether.js 和 Web3.js 之间做出选择

sitejianshu.com 以太坊以太经典_以太坊和以太币有什么区别_如何运行以太坊节点

在决定是选择 Ether.js 还是 Web3.js 时,需要考虑一些事项。

Ether.js 是一个更轻量级、对开发人员友好的库,具有强大的文档。 虽然许多早期和资深开发人员通过 Ether.js 开发 dApp如何运行以太坊节点,但它由少数有限的库开发维护。

Web3.js 拥有最多的 forks/commits 并且是最常用的以太坊 javascript 库。 虽然它也被广泛使用,但它缺乏以太坊文档的广度和深度,可能不是早期 Web3 开发人员的最佳选择。

Web3.js 的另一个替代方案是 Alchemy Web3,它是一个具有额外 API 方法、升级的 websocket 支持和自动重试的分支,以允许开发人员更容易地采用。

去中心化存储

虽然区块链为去中心化状态管理、智能合约存储/执行和交易价值提供了一种媒介,但更高级别的应用程序需要额外的组件。 对于图像、视频和 gif 等前端内容,区块链存储非常昂贵且效率非常低。 去中心化存储填补了这一空白。

一种解决方案是 IPFS(星际文件系统),这是一个分布式节点网络,每个人都可以在其中存储和共享文件、网站、应用程序和数据。 随着 NFT 的兴起,IPFS 的使用呈爆发式增长,常作为 NFT 媒体资产的底层存储介质。

另一个流行的去中心化存储解决方案是 Arweave,它旨在激励个人永久存储数据。 通过 Arweave 网络,矿工提供存储空间以换取代币,协议本身确保存储的数据在所有节点上保持正确和一致。

Web3应用层

sitejianshu.com 以太坊以太经典_以太坊和以太币有什么区别_如何运行以太坊节点

在 Web3 的背景下,应用层涵盖了 DeFi、NFT、Identity & Authentication、Data & Analytics 以及许多其他令人兴奋的 dApp 类别。 这些去中心化的 Web3 应用程序包括一些最大的 Web3 公司,例如 OpenSea、Uniswap 和 Aave。

作为开发人员,这通常是最有趣的构建层。 可以混合和匹配不同的去中心化应用程序,将强大的原语组合成新的、复杂的产品。

应用层主要允许公众消费者(其中许多人可能不完全理解 Web3 开发的复杂性)轻松地与直观的前端进行交互。 最终,用户友好的前端使公众能够在日常生活中使用去中心化的互联网。

总结

随着 Web3 从当前状态走向成熟,肯定会有范式转变、新的 Web3 基础设施工具,以及很多需要学习的东西。

来源: