到目前为止,我所遇到的关于Web3堆栈的最佳定义是由Nader Dabit写的,他是一家名为Edge & Node的Web3公司的开发者关系工程师。他将Web3堆栈分类如下: 1. 区块链 2. 区块链开发环境 3. 文件存储 4. P2P数据库 5. API(索引和查询) 6. 身份 7. 客户端(框架和库) 8. 其他协议
正如他所指出的,这个堆栈与传统的网络架构在许多方面完全不同,最明显的区别是区块链和基于加密货币的身份。他还提醒说,Web3工具、技术和生态系统不如Web2成熟。
从前端的角度来看,Web3的客户端技术(框架和库)本质上与Web2.0相同。在前端应用中大量使用JavaScript,而且就目前Web2.0的状态而言,React是一个领先的JavaScript框架。绝大多数的Web3项目和例子都是由React构建的。除了实际的HTTP客户端库之外,前端技术并没有太大区别。要通过HTTP协议与服务器通信,你可以使用web3.js或ethers.js与rpc(远程过程调用),或者使用graphql客户端与TheGraph对话,而不是使用fetch或axios。Web3.js和Ethers.js都是JavaScript库,使开发者能够与以太坊区块链交互。
此外,身份以及我们处理身份的方式在前端也是不同的。要读取数据,你不需要了解用户的任何信息,因为几乎所有的数据都是公开的。但要写入数据,通常需要连接到用户的钱包。有几种方法可以做到这一点。在桌面应用程序中,用户通常会为他们的钱包添加一个浏览器扩展,它会自动为网络注入一个全局窗口对象(例如Solana、Ethereum、Arweave)。或者在移动端,它将允许你在钱包应用程序中进行认证,并在签署交易后重定向。
如果你尝试过购买加密货币或NFT,或尝试过dapp(去中心化应用程序),那么你很有可能已经使用过MetaMask。它有一个浏览器扩展,可用于Chrome、Firefox和基于Chrome的浏览器,如Brave。ConsenSys还在Web3中拥有领先的IDE(集成开发环境)之一,Truffle是一个区块链开发环境、测试框架和