Home深入浅出Web3开发技术
深入浅出Web3开发技术

深入浅出Web3开发技术

@Keegan小钢

作者「Keegan小钢」,公众号、知乎、B站等平台同名作者,已在 Web3 领域深耕 7 年,资深 Web3 技术专家。

本手册内容源自作者未完成的书籍稿件,内容包括Web3基础,智能合约技术和语言基础,智能合约开发、测试和部署,标准 Token 协议,区块链预言机,Keeper,数据索引服务 Graph,前端 Web3 框架等。

购买后加微信 keegan704,发送支付截图,可加入「深入浅出Web3开发技术陪伴群」。

目前小册主要内容已全部发布,但后续会不间断发布加餐的内容。
订阅601
文章111
最后更新:2024-2-8 14:4
查看 【深入浅出Web3开发技术】 详情查看 【Keegan小钢】 主页
分享到微信打开

免费内容

2024-1-29 15:11

DApp的技术架构

目前的 DApp 主要有两种构建方式,一种是基于智能合约构建的 DApp,也是目前最主流的方式;第二种则是以应用链(AppChain)的方式而构建的,还没形成大范围的应用。所以我们还是以智能合约形式的 DApp 为主。另外,智能合约平台以 EVM 为最大主流,而 EVM 平台的智能合约以 Solidity 为主流,因此,下面的内容也都是以 Solidity 体系为主。从整体上来看,整个 DApp 全栈的技术架构可划分为三层:表现层、逻辑层和持久层。具体架构图大致如下:表现层表现层主要包括 UI 客户端、SDK、钱包和 Provider。UI 客户端主要有 Web、iOS App 和 Android App,其主要使用的技术栈和传统的客户端技术栈是通用的。在 Web2 领域里,前端框架主流的有 React 和 Vue 两大阵营,国内开发者用 Vue 的比较多,但在 Web3 领域里,还是以 React 为主,因为很多 Web3 相关的工具库都是基于 React 的,比如 ConnectKit 和 wagmi。ConnectKit 是一个连接钱包的 React 组件库,wagmi 则封装了一系列 React Hooks 用于与区块链交互。iOS 和 Android,不管是 Web2 还是 Web3,使用 Flutter 开发的已经越来越多,Flutter 已经成为了新的主流开发框架。不过,目前的 Web3 行业里,大部分 DApp 会优先选择推出 Web 端,兼顾到 App 端,除了移动钱包应用之外,其他的相对还不多,这主要是因为 App 的应用商店对 Web3 的应用依然有不少限制,这阻碍了大部分 DApp 上线 App 应用商店的计划。尤其是应用占比最多的 DeFi 应用,更是难以上架。就说已经成为基础设施的 Uniswap、Curve、Compound、Aave 等长期以来都只有 Web 端,近一年来,Uniswap 才终于推出了 App 版本的 Uniswap Wallet。SDK 主要是将一些与 Web3 交互相关的操作统一封装成单独的库,提供给 UI 客户端接入,包括连接钱包、与智能合约交互、查询 Subgraph 数据等操作。主要用到的 Web3 框架就是 web3.js 或 ethers.js,主要用于连接钱包并与智能合约交互。查询 Subgraph 数据的则主要用 GraphQL 的客户端工具,有 Graph client、Apollo client、URQL 等。SDK 大部分是以 JS/TS 语言为主编写的,少部分 DApp 也会封装其他 SDK 适用于不同开发语言,比如 Dart 语言的 SDK 就适用于以 Flutter 为主的 App 开发。SDK 本来是可以直接集成在客户端里的,但大部分客户端开发人员并不熟悉 Web3 的技术栈,所以才将 SDK 单独分离了出来,由熟悉 Web3 技术栈的开发人员进行封装。另外,对于一些成熟的 DApp,有了 SDK 也方便第三方应用集成协议。比如,Uniswap 的 SDK 里封装了计算最优兑换路径的算法,第三方应用接入 SDK 就很方便了,如果没有这个 SDK 的话,那第三方应用需要自己去实现计算最优兑换路径将会非常麻烦。UI 客户端和 SDK 连接钱包时,也需要去适配支持不同的钱包,因为不同的钱包可能提供了不同的接入方式,有些钱包之间甚至可能会产生冲突,使用同一套代码进行适配时可能无法同时支持。一般来说,至少接入 MetaMask 和 WalletConnect 已经成为了所有 DApp 的标配。最后,Provider 是前端 SDK 与智能合约交互的桥梁,确切地说,是与底层区块链交互的桥梁。Provider 其实是一个符合 EIP-1193 规范的 JavaScript 对象,负责实现以太坊 RPC 的方法调用。ethers.js 和 web3.js 都封装了不同的 Provider 实现,且提供了多种不同的 Provider。比如,web3.js 有分 HttpProvider、WebsocketProvider、IpcProvider,ethers.js 还有根据不同节点运营商分为了 AlchemyProvider、InfuraProvider、EtherscanProvider 等。逻辑层逻辑层是整个 DApp 最核心的一个层级,主要包括链上的智能合约,提供数据索引服务的 Subgraph & Graph Node,以及链下的 Keeper 服务和预言机等。智能合约是整个 DApp 的重中之重,承载了应用协议最核心的链上业务逻辑,且因为智能合约的代码是需要在链上开源的,所以对安全性的要求非常高。如果上线后的智能合约代码存在安全漏洞,尤其是危害到资产安全的漏洞,一旦被黑客发现,甚至有可能会造成致命的损失。因此,智能合约代码的质量和安全尤其重要,对智能合约工程师的要求也比其他工程师高很多。不过,再有经验的智能合约工程师,也无法保证写出来的代码百分百没有 Bug,所以代码上线之前还需要经过多方的安全审计,包括团队内部的代码审计,公司内部和其他项目团队的互审,以及找外部专业的安全审计公司进行审计。安全审计在这个行业里是绝对的刚需。另外,设计智能合约的时候,除了考虑安全性之外,还要兼顾功能性和可扩展性,不能一味只为了绝对安全而过度设计。通常情况下,这几个特性并不是全正相关的,比如,进一步提高安全性,就可能会减低功能性和可扩展性,因此,要追求的并不是三种特性全都越高越好,而是要根据情况有所取舍,达到一种平衡状态即可。而要达成目标,所需要遵循的设计原则和背后本质的设计思想,其实还是架构师们所熟知的那些,比如,单一职责原则、开闭原则、依赖倒置原则、接口隔离原则等,以及关注点分离、低耦合高内聚、适度设计等架构思想。而且,最核心的就是要将复杂问题简单化,这应用到开源的智能合约中,显得更加重要。智能合约存储的链上数据和传统 Web2 的数据库完全不同,没法像 MySQL、MongoDB 这些数据库一样对数据进行索引查询,也没法做到对数据进行分组、排序或组合。而这种需求也属于刚需,为了满足这种需求,就出现了 The Graph,区块链数据索引协议。Subgraph 就是该协议的核心组成,Graph Node 则是其运行环境。智能合约本身还缺乏自动执行的机制。Web2 应用因为有定时器,所以很多任务都可以用定时器自动执行。但智能合约却没有定时器,因此有些任务就没法自动执行,就需要外部程序来触发执行这些任务。这样的外部程序就被称为 Keeper,比如执行 Compound 的清算任务的 liquidator 就是一种 Keeper。大部分 Keeper 都是链下中心化的程序,而近两年来,也陆续出现了一些去中心化的 Keeper 网络,比较知名的有 keep3r.network、Chainlink Keepers、KeeperDAO。也同样是因为智能合约本身的限制,无法像 Web2 应用一样主动向外部程序发起网络请求获取数据。否则,如果智能合约可以向 Coinbase、Binance 等中心化交易所发送网络请求获取价格数据的话,那不同节点因为请求的时间不同,获取到的价格也不同,就无法达成一致了。但智能合约又的确需要获取价格信息,所以就有了预言机。预言机是链上与链下数据打通的桥梁。持久层持久层,顾名思义,就是负责数据持久化的一个层级,主要就是底层的各种 EVM 区块链以及去中心化存储系统。EVM 链就比较多了,现在大部分 DApp 都会选择多链部署,主流的区块链包括 Ethereum、BNB Chain、Polygon、Arbitrum、Optimism 等。通常情况下,一套智能合约代码,并不是可以毫无任何改动就直接部署到多链的,有时候是需要做一点小修改才能适配兼容到不同的链。比如,在 Ethereum 上获取当前区块高度,合约代码就是用 block.number;而在 Arbitrum 上,使用 block.number 获取的是 Layer1(即 Ethereum)的区块高度,要获取 Arbitrum 网络自身的区块高度,则需要使用 IArbSys(100).arbBlockNumber() 来获取。再比如,Layer2 里的区块时间并不会和 Layer1 的时间完全同步,即是说,当在 Layer2 里读取 block.timestamp 时,并不会和 Layer1 的 block.timestamp 保持同步,Layer2 的 block.timestamp 更新时间通常会比 Layer1 的慢很多,Arbitrum 的 block.timestamp 更新时间基本就为 1 分钟,就是说,在 Arbitrum 里读取 block.timestamp,差不多每隔 1 分钟才会有更新,因此,对于使用一些跟区块时间强相关的算法时,其实是会有影响的,比如在 Arbitrum 上使用 Uniswap 的 TWAP 价格预言机,就不太合适直接用。Optimism 也存在同样问题。还有,不同链的出块时间不同,做一些跟出块时间有关联的计算时也需要调整。比如,Compound V2 的代码里,硬编码了一年内的区块总数,这是根据以太坊的平均出块时间提前计算的值。有很多复制了 Compound 代码的借贷项目,如果要部署到其他链的话,比如部署到 BNB Chain,那就需要根据 BNB Chain 的出块时间调整这个区块总数的值。去中心化存储系统也是很重要的基础设施,很多 NFT 的元数据就是存在去中心化存储系统里,内容发布平台 Mirror 里的文章也是存储在去中心化存储系统里。目前主流的去中心化存储系统就是 IPFS 和 Arweave,不过也有不少项目把元数据和媒体文件直接存储在中心化服务器里。在以太坊上,IPFS 是最受欢迎的 NFT 元数据存储系统,大概有一半左右的 NFT 元数据是存储在 IPFS 上的。不过,IPFS 节点其实有一个”收集垃圾“的过程,所以存储在 IPFS 节点上的文件可能会被删除,除非它们被“钉住(pinning)”了。所谓钉住一个文件,就是要求“垃圾收集器”不要删除这个文件。很多项目常用 Pinata 这样的 pinning 服务来钉住一个文件,但免费服务提供的存储容量很有限,收费服务则需要不停续费才能维持文件的长时间存储。另外,如果 pinning 服务提供商有一天倒闭了,那对应的数据链接也将会失效。Filecoin 会好些,不会有倒闭风险,但提供的存储服务依然是有限定时间的,一旦到期,文件就会从 Filecoin 里被删除。Arweave 采用了不一样的解决方案,用户只需支付一次性费用,来支付 200 年的存储成本。即是说文件可以存储 200 年,这就大大提高了文件存储的持久性。也因此,越多越多新项目选择了 Arweave 作为存储方案,包括 Mirror,也是将文章存储在了 Arweave。Solana、Polygon 上的很多项目也是选择了 Arweave 作为存储方案。最后,还有一个新型的去中心化存储系统叫 EthStorage,这是一个基于以太坊的 Layer2 存储链,其最主要的特征是支持动态数据的存储,对于在去中心化的社交、电商、IM 等应用场景将可能发挥重大作用。

2024-1-25 20:33

DeFi的现状与趋势

在 2020 年之前,DeFi 总市值大概只有 20 亿美元左右,而从 2020 年 DeFi Summer 崛起之后,在 2021 年达到将近 1800 亿美元的高峰,在 2022 年因市场影响有所回落,2022 年底开始到 2023 年 10 月期间都在底部区间内震荡,最低时的总市值剩下 300 多亿,如今已回升到 540 多亿美元。DeFi 市值如果按不同链来划分,根据 DefiLlama 最新数据显示,Ethereum 占据了超过一半的市值,达到 56.46%,Tron 和 BSC 分别占据了 10.04% 和 6.08%,排名第二三名,具体比例如下图所示:Arbitrum 的发展很迅猛,去年这时候的占比才 2.5% 多,如今的占比为 4.69%,已经快翻了一倍,占据了第四名的位置。Solana 也是发展迅猛,去年这时候还榜上无名,如今却已经跃居第五,占有率为 2.4%。这前五名已经占据了超过 80% 的总市值,剩下的,份额占比还超过 1% 的就只剩下:Polygon(1.47%)、Optimism(1.45%)、Avalanche(1.44%)。如果按照不同的分类来看,市值排名前三的分别是 流动性质押、借贷、DEX。这前三的 TVL 分别达到了 310 亿、210 亿、140 亿。DEX 类别的应用协议是最多的,多达 1139 款。借贷类别则有 343 款应用协议。流动性质押这块,因为发展时间比较晚,目前只有 144 款应用协议。流动性质押,即 Liquid Staking,是随着以太坊从 PoW 转向 PoS 共识机制的过程中逐渐兴起的。以该赛道目前的龙头项目 Lido 为例,用户质押 ETH,会 1:1 得到 stETH,用户持有 stETH 可以去参与 DeFi 项目如 Curve、Maker、Yearn 等,同时还可以得到 Eth2 的质押奖励,体现为用户持有的 stETH 的余额会不断增多。流动性质押,相比普通质押,本质上就是将质押资产(如 ETH)换成流动性资产(如 stETH),且流动性资产被其他 DeFi 项目所支持,可以进行交易、借贷、挖矿等,同时还能得到质押奖励。流动性质押目前主要被应用在各种 PoS 质押上,比如 Lido 除了支持 Eth2 的质押,也支持了 Solana、Polygon、Polkadot、Kusma。DEX 和借贷,包括 Uniswap、Curve、Compound、Aave,已经成为了名副其实的基础设施,就算乐高积木一样,被其他应用协议组合使用。比如,衍生品协议 Perp V2 就直接架设在 Uniswap V3 之上。再比如,Morpho 是一个基于 Compound 和 Aave 的点对点借贷撮合协议。整个 DEX 赛道,自从曾经全球排名第二的 FTX 的垮台之后,中心化交易所出现了信任危机,而去中心化交易所则获得了更大的发展。另外,Uniswap V3 于 2021 年 3 月推出时使用的是商业源码许可证,时效为两年,为了保护其代码在这两年内被竞争对手所模仿。如今,两年时间已过,将有无数复制 Uniswap V3 的 DEX 出现。而 Uniswap V4 已经开发完并开源出来了,就等上线了。而借贷则已经向多链部署的方向发展,且资产隔离模式也成为了新的标配。Aave V3 和 Compound V3 都在往这两个方向推进。再说下永续合约 DEX 这块,因为该赛道还没有产生 “Uniswap” 时刻的爆款应用,且谁都知道这是一块非常大的蛋糕,所以陆续有很多选手进入该赛道。以下是该赛道中当前 TVL 排名前五的产品:目前就 GMX 和 dYdX 有着还不错的 TVL,而且 GMX 已经超越 dYdX 成为了衍生品 DEX 新的龙头,两者的 TVL 分别为 6.1 亿美元和 2.9 亿美元。相比之下,现货 DEX 的两大龙头的 TVL,Uniswap 为 40 亿美元,Curve 则为 19 亿美元。差距显而易见,所以永续合约 DEX 赛道还有很大空间,竞争也很激烈。另外,dYdX V4 近期已上线,一个基于 Cosmos 的永续合约平台,其实就是一款新的应用链。看后续发展如何,不知道是否可以将其重新带回 TOP1 的龙头位置。而且,如果真的反响很不错,那还有可能带动应用链的进一步发展。所谓应用链,也称为 AppChain,是指专门为运行单个应用程序而定制的区块链,也是近几年逐渐流行起来的新趋势。最后再说说算法稳定币。曾经,市场上规模最大、最主流的算法稳定币系统就是 Terra,一个围绕稳定币的公链,创建于 2018 年。在这条链上发行了多种锚定法定货币的稳定币,包括锚定美元的 UST、锚定韩元的 KRT 等,其中 UST 规模最大。另外,Terra 生态还有一个 Luna 代币,这也是维持 UST 价格稳定的关键。UST 和 Luna 存在“双向销毁铸造”的关系,且一个 UST 等于价值 1 美元的 Luna,UST 是由 Luna 铸造出来的。但是,2022 年 5 月的时候,Luna 崩盘了,UST 也跟着崩了,Terra 也跟着崩了,而且还引发了一系列连锁反应。Luna 的崩盘也意味着算法稳定币短期内再无爆发的可能。

2024-1-23 13:54

Web3的组成架构(1):分层结构

Web3 发展至今,生态已然初具雏形,如果将当前阶段的 Web3 生态组成架构抽象出一个鸟瞰图,由下而上可划分为四个层级:区块链网络层、中间件层、应用层、访问层。下面我们来具体看看每一层级都有什么。另外,此章节会涉及到很多项目的名称,因为篇幅原因不会一一进行介绍,有兴趣的可以另外去查阅相关资料进行深入了解。区块链网络层最底层是「区块链网络层」,也是 Web3 的基石层,主要由各区块链网络所组成。组成该层级的区块链网络还不少,Bitcoin、Ethereum、BNB Chain(BSC)、Solana、Polygon、Arbitrum、Polkadot、Cosmos、Celestia、Avalanche、Aptos、Sui 等等,还有很多。根据之前 Blockchain-Comparison 的统计,截止撰文之日的区块链至少有 150 条。这里我们主要说的是公链,联盟链不包括在内。因为区块链实在太多,会有些眼花缭乱,所以有必要进行分门别类。首先,不同区块链之间存在着分层结构,有 Layer0、Layer1、Layer2 之分。其次,Web3 的繁荣发展,依赖于智能合约技术,而智能合约的运行环境为虚拟机。智能合约和虚拟机的关系,就和 Java 程序和 JVM 的关系类似。从不同的虚拟机维度上划分区块链,就可以分为两大类:EVM 链和 Non-EVM 链。EVM 是 Ethereum Virtual Machine,即为以太坊虚拟机的简称。EVM 链即为兼容 EVM 的区块链,而 Non-EVM 顾名思义就是不兼容 EVM 的区块链。最后,还可以根据存储的数据大小进行分类,可以分为计算型区块链和存储型区块链。先从分层结构说起。最好理解的是 Layer1,我们所熟知的比特币、以太坊、EOS、BSC 都属于 Layer1,也称为主链。在分布式系统中,存在 CAP 定理,即一个分布式系统不可能同时满足三个特性:一致性、可用性、分区容错性。一个分布式系统只能满足三项中的两项。Layer1 的区块链本质上也是分布式系统,也同样存在不可能三角问题,只是三个特性与 CAP 不同,分别为:可扩展性、安全性、去中心化,每个区块链也只能满足三项中的两项。比特币和以太坊偏向于安全性和去中心化,所以可扩展性比较弱,TPS 比较低。EOS 和 BSC 则只依赖于少数节点来维护共识,相比于比特币和以太坊,减低了去中心化特性,但提高了可扩展性,从而能达到很高的 TPS。为了解决比特币和以太坊的可扩展性问题,就慢慢衍生出了 Layer2。Layer2 是作为依附于主链的子链而存在,主要用于承载 Layer1 的交易量,承担执行层的角色,而 Layer1 则可变成结算层,可大大减少交易压力。目前主流的 Layer2 都是扩展以太坊的子链,包括 Arbitrum、Optimism、zkSync、StarkNet、Polygon 等。比特币也有 Layer2,主要包括闪电网络、Stacks、RSK 和 Liquid,但目前都比较小众。Layer0 则比较抽象了,一般被定义为区块链基础设施服务层,主要由模块化区块链所构成,包括 Celestia、Polkadot、Cosmos 等。模块化区块链这个概念主要是由 Celestia 提出的,其核心设计思路就是把区块链的共识、执行、数据可用性这几个核心模块拆分开来,每个模块由一条单独的链来完成,再将几个模块组合到一起完成全部工作。这和软件架构设计中所提倡的模块化设计思想是一样的,可实现高内聚低耦合。实现跨链通信的跨链桥或跨链协议也可以划入 Layer0。跨链桥的数量也是非常多,撰写此文时,debridges.com 上统计的跨链桥多达 114 条,其中 TVL 排名最高的三个分别为 Polygon、Arbitrum、Optimism 的官方跨链桥,这几个桥分别实现了各自的 Layer2 和以太坊之间的资产跨链。聊完分层结构的划分,我们再从 EVM 的维度来梳理下不同的区块链。前面说过,从 EVM 维度上可划分为 EVM 链和 Non-EVM 链两大类。EVM 链是目前最主流的方向,基于 EVM 链的 DApp 和用户群体是目前整个 Web3 生态里规模最大的。有些原生就是兼容 EVM 的,比如 BSC、Heco、Arbitrum、Optimism 等;有些则是后期才扩展兼容 EVM 的,比如 zkSync 1.0 并不兼容 EVM,而 zkSync 2.0 则是兼容 EVM 的。很多区块链就算早期并不兼容 EVM,但也逐渐在拥抱 EVM。比如,Polkadot 推出了 Moonbeam 平行链来兼容 EVM,Cosmos 则有 Evmos。目前来看,排名靠前的区块链中,大部分都已经兼容 EVM,不过依然还有少部分 Non-EVM 链存在,比如 Solana、Terra、NEAR、Aptos、Sui。另外,EVM 链的智能合约主要使用 Solidity 作为开发语言,而 Non-EVM 链则主要使用 Rust 或 Move 语言开发智能合约。以上提到的这些区块链,主要还是偏向于解决去中心化计算的区块链,这些区块链普遍不支持大数据的存储,比如文件存储。而存储型的区块链则聚焦于解决大数据存储的问题,这类区块链目前不太多,主要有 Filecoin、Arweave、Storj、Siacoin 和 EthStorage。目前组成「区块链网络层」的区块链成员们主要就包括这些了,未来还会不断有新成员加入,但也有不少旧成员逐渐没落而被遗落在角落里。中间件层在区块链网络层之上的这一层,我称之为「中间件层」,主要为上层应用提供各种通用服务和功能。所提供的通用服务和功能包括但不限于:安全审计、预言机、索引查询服务、API 服务、数据分析、数据存储、基本的金融服务、数字身份、DAO 治理等。提供通用服务和功能的组件则可称为「中间件」,这些中间件也是存在多种形式,可以是链上协议,也可以是链下平台,或链下组织,包括中心化的企业或去中心化自治组织 DAO。下面就来聊聊这一层具体都有哪些中间件。先来聊聊安全审计,这是非常核心的中间件,因为 Web3 里的区块链和应用大多都是开源的,且很多都是跟金融强相关,因此,安全性就成为了重中之重,安全审计自然也变成了刚需。安全审计的服务大多由一些安全审计公司所提供,比较知名的审计公司包括:CertiK、OpenZeppelin、ConsenSys、Hacken、Quantstamp,以及国内主要有慢雾、链安、派盾等。另外,还有不少知名度不高的小审计公司。除了审计公司,还有一些提供 Bug Bounty 的平台,一般就是在这些平台上发布任务,让白帽黑客们来找 Bug,找到的 Bug 安全漏洞等级越高则可获得的赏金越高。目前,全球最大的 Bug Bounty 平台是 Immunefi。接着,再来聊聊预言机(Oracle Machine,简称 Oracle),在 Web3 生态里也是扮演着非常重要的角色,是区块链系统与外部数据源之间沟通的桥梁,主要实现智能合约与链下真实世界的数据互通。因为区块链网络本身对状态一致性的限制,需要保证每个节点在给定相同输入的情况下必须获得相同的结果,所以区块链被设计成一个封闭系统,只能获取到链内的数据,而无法主动获取外部系统的数据。但很多应用场景中是需要用到外部数据的,这些外部数据就由预言机来提供,这也是目前区块链与外部数据实现互通的唯一途径。根据预言机所提供的具体功能,目前对预言机的分类大致有:DeFi 预言机、NFT 预言机、SocialFi 预言机、跨链预言机、隐私预言机、信用预言机、去中心化预言机网络。具体的预言机项目有 CreDA、Privy、UMA、Banksea、DOS、NEST、Chainlink 等,其中,Chainlink 为预言机的龙头,其定位为去中心化预言机网络,推出了 Data Feeds、VRF、Keepers、Proof of Reserve、CCIP 等一系列产品和服务。然后,索引查询服务也是很关键的中间件,解决了链上数据的复杂查询问题。比如要查询 Uniswap 上某一天的总交易量,如果直接在链上查询是很麻烦的。所以就有了对索引查询服务的需求,这块的主要代表为 The Graph 和 Covalent。The Graph 的实现方案主要是可定制化监听链上数据并映射成自定义的数据进行存储,从而方便查询。而 Covalent 则是将很多通用、广泛使用的数据封装成统一的 API 服务,供用户查询。提到 API 服务,除了 Covalent,还存在解决其他不同需求的 API 提供商,比如:NFTScan,是聚焦于提供 NFT API 数据服务的;Infura 和 Alchemy,则主要提供区块链网络节点服务;API3,旨在打造去中心化 API 服务。不管是索引查询服务还是 API 服务,都是链上数据相关的服务,数据分析也是数据相关的服务,这一版块的成员主要有 Dune Analytics、Flipside Crypto、DeBank、Chainalysis 等。数据存储中间件则和底层几个专门做存储的区块链容易混淆,也有人将底层的 Filecoin、Arweave、Storj 等划分到这一层,但我觉得这些本质上还是底层区块链,所以我将其划入到区块链网络层。而中间件层的数据存储,目前主要就是 IPFS。IPFS 全称为 InterPlanetary File System,中文名为星际文件系统,是一个基于内容寻址、分布式、点对点的新型超媒体传输协议,其旨在取代 HTTP 协议。IPFS 与区块链网络很相似,但其实并不属于区块链网络,基于 IPFS 的 Filecoin 才是区块链网络。接下来,看看有哪些中间件是提供基本金融服务的。这块的代表性组件主要包括 Uniswap、Curve、Compound、Aave 等,Uniswap 和 Curve 提供了链上交易功能,而 Compound 和 Aave 则是链上借贷平台。这几个本质上都是应用层的链上协议,但因为这些协议都逐渐被越来越多其他应用所依赖,类似于成为了乐高积木,可以用来组合搭建出不同的应用,于是就变成了通用性的应用协议,即下沉为了中间件的角色。其实,任何具有可组合性的组件,不管是链上应用协议,还是链下提供不同服务的中心化实体,或者是 DAO,只要其提供的服务和功能是大部分应用都需要的,就可以划入「中间件层」。不同的中间件就和不同的乐高积木一样,通过组装不同的积木就可以创建出不同的应用。包括数字身份、DAO 治理的工具等,其实也都是同样道理。

2024-1-23 10:9

什么是Web3

关于什么是 Web3,一直以来都是众说纷纭,不同领域的专家对 Web3 普遍有着不同的见解。另外,「Web3」和「Web 3.0」的关系也一直困惑着很多人。有人认为两者其实是同一个概念,Web3 只是 Web 3.0 的简称,而有些人则认为两者是完全不同的两个概念,还有人认为 Web3 是 Web 3.0 的子集。下面,我则会基于自己的一些研究结果,来谈谈我对 Web3 的理解。Web 的发展史为了充分理解 Web3,先从 Web 的发展史说起,从 Web 1.0 到 Web 2.0 再到 Web 3.0。时间上从 1989 年说起,那年,Tim Berners-Lee(蒂姆·伯纳斯·李)发明了 World Wide Web(万维网),一个可以通过超文本的方式访问互联网上的文档和其他资源的信息系统,互联网资源之间可以通过超链接的方式链接到一起。最重要的是,万维网是完全免费开放给所有人访问的。在这之前,互联网只限于军事用途、大学和科研机构使用。而有了完全开放的万维网之后,全世界任何普通人也都可以通过计算机连接上网,使得互联网开始走进了普罗大众。万维网开启了 Web 1.0 时代。有了万维网之后,陆续有人添加网页制作各种可展示的信息,包括新闻、资讯、图片等,这期间诞生出了很多门户网站,包括雅虎、搜狐、新浪、网易、腾讯、谷歌、百度等。这些门户网站的主要特征就是,网页是由文本和图像内容构成的静态网页,通过浏览器获取网页信息,信息传递是单向的,对大部分用户来说,内容只能读不能写,用户只是内容的消费者。因此,通常认为,Web 1.0 的一个特征是「可读」的。其实,在 Web 2.0 的概念被提出来之前,还没有 Web 1.0 的说法。“Web 1.0” 和 “Web 2.0” 这两个词最初由 Darcy DiNucci(达西·迪努奇)在 1999 年撰写的文章《Fragmented Future》中首次提出并使用,但此时该概念还没有得到大范围推广。直到 2004 年,O'Reilly 举办了第一届 Web 2.0 大会,对「Web 2.0」进行了重新定义,至此 “Web 2.0” 这个术语开始流行,我们可以认为,此时,Web 2.0 时代启动了。相比于 Web 1.0,Web 2.0 最大的特点就是,消息传递变成了双向的,从「可读」变成了「可读可写」。用户不再只是内容的消费者,同时也是内容的生产者,还能和其他用户进行交流沟通,有着很强的交互属性。相比于 Web 1.0 以门户网站为主流的应用形态,Web 2.0 时代诞生出了很多新型应用,包括 Blog、RSS、Wiki、SNS、电商平台、直播平台等。也造就了很多巨无霸公司,比如 Facebook、Twitter、Youtube、Amazon、阿里巴巴、腾讯、字节跳动等。而在 Web 2.0 发展的过程中,不断有人开始畅想 Web 3.0 应该是怎么样的。目前,关于什么是 Web 3.0,存在多种不同的想法,而最主流的想法主要分两种:Semantic Web(语义网)和 Decentralized Web(去中心化网络)。语义网是一种智能网络,其核心是:通过给万维网上的文档(如: HTML 文档)添加能够被计算机所理解的语义(元数据),从而使整个互联网成为一个通用的信息交换媒介。语义网是由万维网之父 Tim Berners-Lee 在 1998 年时就提出的概念,那时候还没有 Web 3.0 的概念。直到 2006 年,《国际先驱论坛报》刊登了一篇文章《A 'more revolutionary' Web》,其中提到:"People keep asking what Web 3.0 is," Berners-Lee said. "I think maybe when you've got an overlay of scalable vector graphics - everything rippling and folding and looking misty - and access to a semantic Web integrated across a huge space of data, you'll have access to an unbelievable data resource.”翻译成中文则是:"人们一直在问什么是 Web 3.0," 伯纳斯·李说道。"我认为也许当你拥有可扩展矢量图形的覆盖层 - 一切波动、折叠并呈现雾状 - 并且可以访问整个大数据空间中集成的语义 Web 时,你将能够访问一个令人难以置信的数据资源。"从这之后,语义网开始和 Web 3.0 划上了等号。语义网概念的 Web 3.0,相比于 Web 1.0 和 Web 2.0,其交互特征为「可读可写可执行」,且读、写和执行的主体变成了机器,机器成为了信息的生产者和消费者。直到 2014 年,Ethereum(以太坊)的联合创始人,也是之后的 Polkadot(波卡)创始人 Gavin Wood(加文·伍德)在他的博客发表了一篇文章《DApps: What Web 3.0 Looks Like》,对 Web 3.0 提出了全新的见解,他将 Web 3.0 称为”后斯诺登“网络("post-Snowden" web),也就是基于区块链的去中心化网络。去中心化网络含义的 Web 3.0,交互方式为「可读可写+拥有」,用户拥有数据的自主权。以语义网为核心的 Web 3.0 注重数据的语义化和智能化处理,以提供更智能、个性化的网络服务,技术上侧重于人工智能、机器学习和大数据等技术的应用。而基于区块链的 Web 3.0 则强调去中心化,目标是让个人能够掌握自己的数据和数字权益,实现更安全、透明和可信的互动。以语义网为核心的 Web 3.0 发展至今,虽然已经形成了一套较为完整的理论体系,但依然还没有实现大规模部署和使用,没有形成生态,主要原因是人工智能的发展还达不到相应的水平。而基于区块链的 Web 3.0,这几年正在快速发展,已经诞生出了很多相关产品和 DApps(去中心化应用),生态雏形已然形成。Web3 == Web 3.0 ?回到 Web3 这个概念,Web3 这个词语是从 2021 年开始流行起来的。但是,这个词语是从什么时候开始出现的呢?Web3 和 Web 3.0 又是什么样的关系呢?这也是接下来要解决的疑惑。现在我们已经知道,Web 3.0 至少有两种不同的含义,「语义网」和「去中心化网络」。而据我了解,”Web3” 这个词最早出现可能是由 Gavin Wood 在 2017 年所创建的 Web3 Foundation(Web3 基金会),也被称为 W3F,主要是为了发展去中心化网络层面的 Web 3.0。下图就是 Web3 基金会官网对自身的介绍:因此,Web3 这个词,其实也可以指 Web3 基金会,但这显然不是我们所说的 Web3 概念。其实,不知道从什么时候开始,Web3 基金会的成员们有时候会使用 “Web3” 这个词来作为 “Web 3.0” 的代名词,即 Web3 也等同于 Web 3.0。有时候也有人会将 Web 1.0 和 Web 2.0 也简称为 Web1 和 Web2,同理,Web3 也可以作为 Web 3.0 的简称。在 W3F 的官网上曾经挂着两个视频,官网上的文案是用 “Web 3.0” 这个词语,但视频里的标题和 PPT 内容却是用 “Web3” 这个词语,如下图:但是,因为 Web 3.0 至少有两种不同的含义,而现在流行的 Web3 其实只有一种含义,即指代基于区块链的去中心化网络概念,这也是导致 Web3 和 Web 3.0 的关系一直很令人困惑的原因。当把 Web 3.0 解释为语义网的时候,Web3 和 Web 3.0 就是两个不同的概念,这也是有些文章阐释两者区别的时候所用的观点。当把 Web 3.0 解释为去中心化网络的时候,Web3 和 Web 3.0 就是相同的概念,只是不同叫法而已。当 Web 3.0 表示所有含义时,那 Web3 就可以认为是 Web 3.0 的子集了。为了与语义网区分开来,通常用 Web3 这个词语来指代去中心网络概念的 Web 3.0,以免产生概念上的混淆。后面我们也都统一只用 Web3 这个词语。Web3 的特性因为 Web3 并没有一个权威的标准定义,也没有明确的边界,且还在持续发展中,所以,从不同维度去理解 Web3,可以总结出很多不同的特性。从现阶段 Web3 的核心内涵上来说,我觉得它至少应该具有以下几个特性:基于区块链去中心化无需信任无需许可通证经济数字所有权自从 2009 年比特币诞生以来,区块链技术的发展为 Web3 提供了底层技术支撑,提供了安全的基础执行层。尤其是智能合约技术,扩展了可编程协议的概念,具备了开发各种 DApp(去中心化应用)的能力,包括去中心化金融(DeFi)、游戏(GameFi)、社交(SocialFi)产品等,为 Web3 的发展奠定了基础。有了区块链作为底层支柱,才有望实现其他的特性。另外,这里说的区块链主要是指公链。去中心化是 Web3 最核心的特性,很多东西都是去中心化的,比如去中心化应用(DApp)、去中心化数字身份(DID)、去中心化自治组织(DAO)等。但最核心的思想应该是指「去中心化网络」,网络中的平台和应用的所有权不是由少数中心化的科技巨头所垄断,而是由所有用户分配所有权。因为区块链本身的共识机制,以及智能合约特性,用户无需信任银行或企业等第三方实体,只需要信任去中心化网络本身就可交易。也是很多人常说的 "Less Trust, More Truth",Web3 需要的是更少信任,更多事实。因为 Web3 是完全开放的,所以用户不需要任何企业或政府机构的许可就可以参与 Web3 的任何 DApp。用户只需要用他们的数字钱包连接上网络就可以发起交易,与 Web3 上的 DApp 交互。区块链本身也是一个分布式账本,基于区块链的 Web3 内置了原生的加密货币,加上共识机制,实现了内置的通证经济系统。基于通证经济系统,在 Web3 的网络里可以直接使用加密货币进行原生支付,而无需通过银行或其他支付机构。还因为 Web3 里的原生数字货币是不分国界的,所以就能实现无边界和无摩擦的国际支付。而最关键的,因为原生的通证经济系统,带来了有效可靠的激励机制,也支撑起了 Web3 的去中心化运转。Web3 里的所有权普遍以数字通证的形式而存在,用户拥有数字通证就拥有了对应的所有权,并可以完全控制它。这也是 Web3 要解决的主要问题,也是初衷。很多人都会将 Web3 时代的互联网称为「价值互联网」,而数字通证就是所谓的价值存在的载体,数字通证在 Web3 网络里的流转,也就意味着价值的流转。如今的 Web3 因为还比较早期,还只是处于雏形阶段,很多东西也都没有明确的边界,所以也存在比较多争议的地方。比如,联盟链算不算是 Web3 的组成部分?目前阶段,基于公链和基于联盟链完全是两个不同的生态,都在同步发展中,但却没有交集。如果从 Web3 的特性上来判断,目前的联盟链其实是不太符合 Web3 的要求的。首先,Web3 本身是一个开放的互联网,但联盟链有准入门槛,本质上是一个局域网,去中心化的程度较低,也无法满足无需许可的特性。其次,目前的联盟链缺少通证经济系统,也自然无法实现去中心化的激励机制和数字所有权等特性。但是,未来如果能把联盟链和公链打通,比如,联盟链作为公链的 Layer2 而存在,或通过跨链桥将公链和联盟链连通,或将联盟链升级为开放的联盟链,那就可以有望实现 Web3 化了。据了解,已经有机构在往两者打通的方向上实践,HyperLedger Firefly 就是一个很好的案例。总而言之,Web3 主要目标是为了解决用户数据的所有权问题,底层使用区块链作为技术支柱,结合通证经济系统作为激励机制,用数字通证作为数据价值的载体,实现所有权的去中心化。