在Alchemy,我们将Web3定义为基于区块链技术的去中心化互联网生态系统。首先,作为开发者和建设者,我们在理解去中心化时,通常会提到碎片化技术栈的概念。虽然Web3仍处于初期阶段并且发展迅速,但我们发现其基本构建块已开始成形。为了更好地理解Web3和去中心化互联网的内部工作原理,让我们直接进入Web3开发堆栈。Web3堆栈概述在高层次上,构建任何Web3应用程序都需要对区块链网络、Web3基础设施和Web3开发环境有深入的了解。Web3网络层Web3技术栈的基础是区块链网络层。Web2应用程序依赖于集中式数据库,而Web3应用程序构建在区块链架构上以实现无信任和无许可的访问。网络层:基本区块链架构在选择用于构建去中心化应用程序(dApp)的区块链网络时,开发人员有两个主要选择:与EVM兼容的区块链和与EVM不兼容的区块链。EVMBlockchainEthereum一直是Web3开发的主要框架,其虚拟环境(即其EthereumVirtualMachine,或EVM)存储账户和余额等关键信息。以太坊的虚拟机还存储了一个机器状态,该状态根据EVM建立的一组预定义规则随每个新块而变化。对于开发人员来说最重要的是,EVM提供了一个用于存储和执行智能合约的框架,允许开发人员对链上逻辑进行编程。随着以太坊区块链和EVM的兴起,许多旨在解决以太坊的可扩展性限制或昂贵的交易成本的不同网络选择开发与EVM完全兼容的框架。这意味着EVM兼容链都共享运行智能合约的相同软件层——即Solidity。与EVM兼容的区块链允许开发人员利用专为EVM链构建的所有相同工具、文档和社区来节省时间和金钱。EVM区块链示例以太坊-原始EVM智能合约平台Polygon-以太坊侧链Arbitrum-L2区块链使用乐观汇总和多轮欺诈证明Optimism-L2区块链使用乐观汇总和单轮欺诈证明Hermez-ZK-rollups以太坊L2网络ZKSync管理byPolygon-ZK-rollupsEthereumL2networkStarknetusingSNARK-ZK-rollupsEthereumL2networkAvalancheusingSTARK-L1CronoscompatiblewithEVM-L13compatiblewithEVMOptimalWeb3DevelopmentEnvironments在选择区块链网络构建dApp时,Web3开发人员应该考虑可用的开发人员工具的深度和广度。幸运的是,EVM兼容链受益于多年的以太坊开发,在开发环境方面有许多久经考验的选择。HardhatHardhat是一个javascript软件开发环境,允许开发人员编译、测??试、部署和调试以太坊软件。Hardhat可通过灵活的插件进行扩展,使开发者能够轻松定制本地区块链开发环境,并自带强大的Troubleshooting和调试文档集。Truffle一套包含三种不同的、基于javascript的开发工具——Truffle、Ganache和Drizzle——Truffle帮助构建者编译、测试和部署EVM代码,同时还为前端dApp开发提供工具。Truffle——主要的开发环境、测试框架和部署管道Ganache——允许开发人员快速创建本地区块链Drizzle——各种前端库,用于连接前端组件和智能合约Brownie作为基于python的框架,用于EVM开发的替代方案,Brownie提供了一套完整的Web3开发工具,主要构建在Web3.py包之上,用于编译、测试和部署dApp。非EVM区块链最近,开发人员开始在不遵循以太坊框架的区块链上构建更多dapp,因此与EVM不兼容。非EVM网络工程师认为EVM链受以太坊框架限制太大,选择通过设计新的结构进行创新。一般来说,非EVM区块链从一开始就具有数据和交易的可扩展性,并允许高TPS。非EVM区块链示例Flow-L1使用Cadence,Flow的原生面向资源的编程语言NEAR-L1及其智能合约使用Rust或Assemblyscript智能合约的开发环境虽然一些非EVM链的开发环境还不成熟,但一些网络已经开始为各自的链提供开发工具。Flow使开发人员能够使用本机VisualStudio代码扩展测试Cadence智能合约的漏洞。另一个非EVM开发环境的例子是Anchor,它允许构建和测试Solana合约,其感觉与Solidity和Truffle类似。总体而言,Anchor的环境降低了Rust和Solana开发的门槛。我应该使用什么区块链网络?由于各个区块链通常具有独特的架构和共识机制,因此它们将不可避免地针对特定用例进行更好的优化。因此,我们坚信多链Web3的未来。鉴于可互操作工具的多样性不断增加,EVM框架是一个极其丰富的环境。此外,EVM兼容性为用户和开发人员通过跨链dApp转移流动性提供了更顺畅的过程,并提供了熟悉的用户和开发人员体验。对于早期开发人员和新协议,我们认为围绕与EVM兼容的区块链进行开发,利用现有工具、基础设施和开发人员文档,是一个令人信服的条件。话虽如此,我们也认识到非EVM区块链对于更有经验的开发人员、他们不断壮大的社区基础以及对早期开发人员工具的更多支持的利基功能。区块链交互层选择区块链网络后,Web3堆栈的下一步是区块链交互层。该层允许开发人员和用户向区块链读取和写入数据。区块链交互层:用于从区块链网络读取/写入数据的开发人员构建块。如果我们不熟悉区块链的工作原理,请快速回顾一下。区块链由数据块组成。块存储在分布式节点上。区块链中的每个节点都充当“迷你服务器”,允许操作员读取和写入数据块。添加到区块链的任何块都必须传播到网络上的所有节点才能同步。在考虑Web3框架中的数据访问层时,链上存储是标准,因为它本质上是不可变的,并允许任何公众个人查看/验证它。与区块浏览器一样,数据提供者是区块链交互层的关键部分。对于初学者来说,它们提供了一个进入较低网络层的窗口,并作为在线资源来检索有关交易、地址余额、汽油费等的实时和历史数据。区块浏览器通常用于查找支付的关键细节、确定不同交易的状态或只是了解区块链使用的总体趋势。数据提供者为公众提供阅读和解释区块链的能力。Web3基础设施挑战然而,如果没有适当的基础设施要求,访问区块链数据并与之交互可能会非常困难。由于直接在链上写入数据不划算,Web3开发者利用EVM链内置的日志记录功能,让智能合约可以通过solidityevents以可搜索、划算的方式将信息“打印”到链上。虽然日志记录降低了存储成本并且是最流行的读取和写入区块链的方式,但它需要一个强大的区块链交互层来确保开发人员可以在事件发出时捕获它们。运行节点vs.使用节点服务提供商从历史上看,使用区块链交互层需要运行一个自托管、自维护的节点。这是一个昂贵且耗时的过程,仅运行一个以太坊节点的平均成本为每年86,000美元。开发人员发现自己花费工程资源来管理节点错误、回归、磁盘问题、CPU流量峰值等,而不是构建协议和dapp。运行我们自己的节点的成本导致了Alchemy的创建。Alchemy的核心是公开一组API,供开发人员与区块链交互,而无需管理节点。作为Web3多链的坚定支持者,Alchemy的API套件提供了跨L1(包括以太坊网络)、L2(包括Arbitrum和Optimism)、侧链(包括Polygon)和非EVM兼容的L1多链支持(如Flow).最终,Alchemy允许区块链开发人员可靠且可扩展地访问整个Web3网络层,从而使他们能够专注于构建Web3堆栈。Web3表示层表示层:更高级别的软件抽象和前端库在许多方面,Web3表示层密切反映了Web2开发的许多方面。为了创建和开发前端组件,许多开发人员求助于久经考验的React.js库。在Web3社区拥有大量的开发者和追随者,它已经成为Web3前端的事实标准。Web2和Web3前端堆栈之间的一个区别是用于与区块链数据交互的特定库。在与数据访问层交互时,Web3dApp倾向于使用Ether.js或Web3.js,而不是更典型的HTTP请求库,例如Axios和Fetch。特别是,Ethers.js和Web3.js都天然支持对托管在区块链交互层上的区块链节点进行远程过程调用(RPC),从而能够更加无缝地集成到开发人员的Web3技术栈中,并在区块链中读写数据。如何在Ether.js和Web3.js之间做出选择在决定选择Ether.js还是Web3.js时,需要考虑一些事项。Ether.js是一个更轻量级、对开发人员友好的库,具有强大的文档。虽然许多早期和资深开发人员通过Ether.js开发dApp,但它由少数有限的库开发维护。Web3.js拥有最多的forks/commits并且是最常用的以太坊javascript库。虽然它也被广泛使用,但它缺乏以太坊文档的广度和深度,可能不是早期Web3开发人员的最佳选择。Web3.js的另一个替代方案是AlchemyWeb3,它是一个具有额外API方法、升级的websocket支持和自动重试的分支,以允许开发人员更容易地采用。去中心化存储虽然区块链为去中心化状态管理、智能合约存储/执行和交易价值提供了媒介,但更高级别的应用程序需要额外的组件。对于图像、视频和gif等前端内容,区块链存储非常昂贵且效率非常低。去中心化存储填补了这一空白。一种解决方案是IPFS(星际文件系统),这是一个分布式节点网络,每个人都可以在其中存储和共享文件、网站、应用程序和数据。随着NFT的兴起,IPFS的使用呈爆发式增长,常作为NFT媒体资产的底层存储介质。另一个流行的去中心化存储解决方案是Arweave,它旨在激励个人永久存储数据。通过Arweave网络,矿工提供存储空间以换取代币,协议本身确保存储的数据在所有节点上保持正确和一致。Web3应用层在Web3的背景下,应用层涵盖了DeFi、NFT、Identity&Authentication、Data&Analytics以及许多其他令人兴奋的dApp类别。这些去中心化的Web3应用程序包括一些最大的Web3公司,例如OpenSea、Uniswap和Aave。作为开发人员,这通常是最有趣的构建层。可以混合和匹配不同的去中心化应用程序,将强大的原语组合成新的、复杂的产品。应用层主要允许公众消费者(其中许多人可能不完全理解Web3开发的复杂性)轻松地与直观的前端进行交互。最终,用户友好的前端使公众能够在日常生活中使用去中心化的互联网。总结随着Web3从当前状态走向成熟,肯定会出现范式转变、新的Web3基础设施工具以及许多需要学习的东西。来源:https://www.web3.university/article/web3-stack
