# Web3 开发者工具 **Published by:** [leaf](https://paragraph.com/@leaf-6/) **Published on:** 2022-11-25 **URL:** https://paragraph.com/@leaf-6/web3-2 ## Content 节点 — 如Alchemy,帮助开发者连接到区块链网络 链上数据查询和索引 — 如 The Graph,帮助后端开发者查询和索引链上的数据(这个领域很重要,因为很多 Web3 项目都有这个需求,例如 NFT 项目方的社区运营,DeFi 协议的交易追踪等) Oracle — 例如 Chainlink,帮助智能合约开发者调用链下数据 去中心化的存储 — 如 IPFS / Arweave 基于曾作为 Web3 开发者的经验,Chainbase 的创始人 Mogu 将这些领域进行了梳理,拆解为五个层级,以帮助开发者更好的理解 Web3 开发工具。这五层分别为:网络层、节点层(IaaS)、中间件层(PaaS)、上游层(SaaS)和数据分析层。作为与链交互的中间件(PaaS),Chainbase 旨在通过提供一套完整的工具,使开发者能够以更加熟悉的方式(如使用熟悉的语言等)与区块链网络进行交互,从而降低开发者进入 Web3 的门槛。 一般来说,Dapp 开发人员需要完成以下步骤实现与链交互:这里我们以 Chainbase 提供的三种服务(Chain API、Web3 API、deCrypto Data Cloud)为例,列出该过程中的挑战,以及不同的开发者工具如何帮助解决这些问题。 图片 与链交互过程中的挑战和开发工具Chain API 服务(JSON RPC)关键点:需要通过节点连接到区块链网络。但项目方自建节点的成本很高(人力、服务器、时间等),这个问题在项目的早期阶段尤为突出。 例如,为了连接到 Ethereum,开发者需要完成以下工作: 购买云服务(无论是中心化的云,如AWS、谷歌云、Azure 等,还是去中心化的云计算服务),安装 Geth 节点(痛点:高成本) 同步数据(痛点:运行和维护成本,时间成本) 使用 JSON RPC API(自建或使用第三方供应商)连接到 Ethereum如果项目方自己完成这个过程,费用包括:云服务(取决于使用多少计算量)+ 运营和维护 + 额外费用 负载均衡成本(对于中心化的云服务),以避免服务故障风险 总的来说,每月可能要花费1万美元或更多(即使是小项目),再加上用于维护的额外时间——这些时间本可以用于产品研发。相反,使用第三方供应商可以节省时间和成本--每月可能低于100美元。因此,大多数项目方会采用后者的解决方案。 类似的供应商:Alchemy, Infura, QuickNode, Ankr, InfStones等 这些服务商主要提供节点服务,而 Chainbase 更侧重数据查询/索引(节点服务只是我们套餐的一部分)。此外,很多服务商的定价对小型团队以及个人开发者来说并不友好。Web3 API 服务关键点:连接到区块链网络后,查询和索引数据。然而,链上数据并不是 "可被分析的"。此外,开发者需要处理 EVM(ETH,Layer2 等)和non-EVM(Solana,Flow 等)不同的数据结构。 区块链网络本质上是分布式账本,可以被视为由 "无结构" 数据组成的 "数据库"。例如:为了查询 EVM 链上的协议级数据(ERC20、ERC721、ERC1155、ERC137等),用于常见的业务场景(token、NFT、ENS域名等),开发者需要先对链上数据进行解码和结构化,然后再通过开发 API 进行数据查询和索引。另外,他们必须对多条公链和不同的协议做同样的事情(注意,non-EVM 的数据解码更复杂)。类似的供应商:Moralis, The Graph Moralis 提供的是模板 API,不具备开放性。所以当他们提供的 API 不能满足开发者的需求时,依然没有很好的解决方案。Chainbase 可以实现自定义配置,因此更加灵活开放。 The Graph 只提供了少数链的数据索引,而且仅限于 dApp 场景。然而,由 dApps 产生的数据只占区块链网络的一小部分。此外,它的 GRT 没有云化,所以它不能提供数据云服务来满足开发者的长尾需求。deCrypto Data Cloud关键点:对于一些新兴的项目(也包括成熟的项目),他们的创新需求与更长尾的业务场景有关,这将导致现有的 API 很难完全满足项目方需求。因此,需要一个能让他们自动定制 API 的平台。 Web3 数据的解码和结构化是困难的,实现实时性则更难。 建立这样一个平台的基本挑战包括: 实时能力 存储成本 响应速度 技术难度 运营和维护成本 因此,对于 Web3 个人开发者或开发团队来说,自建数据库在技术上是很困难的,也很费时费力。 Chainbase 在 Web3 API 的基础上,经过多租户隔离和安全监控的处理,将服务公开透明地提供给开发者,让他们可以在平台上自由使用 SQL 编程,生成定制的 API。你可以把它看成是区块链网络上面的一个抽象层,把多链上的所有数据聚合在一起,这样开发者就可以用这个数据库轻松且实时的完成链上数据的查询和索引等工作。 开发人员可以用 deCrypto Data Cloud 做什么: 终端功能-- SQL 查询--数据 创建 API --所有者 后端编码-- API 及其他 类似的供应商:我们现在没有看到市场上有直接的竞争对手,但你可以把 deCrypto Data Cloud 看作是 Dune Analytics 更开放更实时、并且是 to Dev 的版本。deCrypto Data Cloud 和 Dune Analytics 之间的区别是什么:开发套件当开发者使用我们的产品构建 dApps 时,他们希望监控 API 的状态,包括但不限于:调试、SDK等。作为一个以开发者为中心的团队,我们为用户提供了一个多合一的开发者友好界面,方便用户管理相关活动--这也是对上述三个服务的补充。 Chainbase 是一个领先的 Web3 区块链交互层基础设施。通过提供云化的 API 服务,帮助开发者快速访问和利用区块链网络,轻松构建 Web3 应用。 Chainbase 使与链交互和链上数据查询/索引变得更加简单。任何人都可以使用、构建和发布开放的API,这使得开发者可以专注于应用层面的创新,而不是解决后端的麻烦。 Chainbase 目前支持 Ethereum、Polygon、BSC、Fantom、Avalanche、Arbitrum 和其他链。无论dApp 部署在哪条链上,项目处于什么规模,开发者都可以极大的减少开发时间和成本。 正如本文所分析的,Chainbase 的竞争优势在于: 提供实时的多链数据查询/索引 支持通过 SQL 生成自定义 API 一体化的开发者友好界面 稳定的服务和实惠的价格 及时且可靠的技术支持 期望招聘的是3-5年编程开发经验,有1年以上智能合约或区块链相关开发经验的中级开发者。我把截图放在了下面,并且把重点给标注了出来。从这份区块链里面可以可以看到以下的技术要点:区块链基础原理熟悉Ethereum技术,深入理解EVMSolidity编程智能合约设计、开发、测试、上线和维护智能合约的跨链交易Truffle开发框架web3js、ethers.js、OpenZeppelin等库即使你还从未接触过Web3的开发,但如果你是一位有过Web开发经验的程序员,Dapp的应用开发范式基本是一致的,我相信你大概能从这份JD里面能总结出这么几点:区块链的基础原理和Ethereum技术是Web3开发的基础知识智能合约是区块链开发一个很重要的环节Solidity是编写智能合约的一个重要语言Truflle是一个主流的区块链开发框架web3js、ethers.js、OpenZeppelin这几个是区块链开发中经常使用的库没错,这几个技术点是我们Dapp开发和编写智能合约通常会使用到的。也许你依然对里面的概念和技术完全不了解,没关系,你只需要有个大概的印象。接下来我们在下文的「学习路线指南」中都会提及 学习基础知识特别容易刨根问底,区块链同时又是涵盖密码学、计算机科学等领域的技术综合体,如果深入了解下去可能会让学习者失去学习的兴趣。那么作为一名区块链开发者,你需要学习到什么程度呢?我个人认为,在学习完基础知识部分后,你需要能够回到出以下的问题即可:区块链到底是什么?它具有什么特点?区块链在技术上大致是如何实现的?区块链的共识机制是什么?共识机制解决了什么问题?有什么常见的共识机制?区块链的存储规则和常见的数据库有什么不同?PoW、PoS、DPoS这几个共识机制的原理、特点是什么?除了数字货币,常见的区块链的应用类型有哪些?你可以带着这些问题,结合上面推荐的资料学习,这样效果会更好 础知识的学习对于大多数人而言注定是枯燥乏味的,在学习区块链的同时不妨同时了解一下现在国内外有哪些具体的应用。你也许有听过几个应用了,例如:MetaMask(最知名的区块链钱包),Stepn(一个能购买跑鞋,跑步会赚取收益的Dapp)、Axie Infinity(一款神奇宝贝主题的区块链游戏)、NBA TopShot(NBA官方验证的NFT)、OpenSea(全球最大的NFT交易市场)等等。 了解这些基于区块链的Dapp,能够让我们更加直观的认识到区块链的应用场景。还有什么比直接使用到能够交互的应用程序更为直观的呢?在你了解的过程中,你还会发现如今区块链生态的繁荣,目前有很多的Dapp不是在以太坊这一条链上运行的了,还有BNB Chain、SOLONA、TRON等众多公链生态。 这里推荐每位开发者都通过dappradar.com探索一下Dapp生态,这个网站可以类比苹果生态中的Apple Store,DappRadar就是Web3世界Apple Store。而且这个网站的Blog质量极高,有很多优秀的博客文章和专业的区块链调研报告。 了解完区块链的基础知识,这个时候就应该到了技术学习的环节。 正如前文中提到的,对于新手开发者而言,学习区块链的最佳方式是从以太坊入手。下面我们就来看一下学习以太坊生态的相关技术栈。区块链应用生态:dappradar.com以太坊基础:以太坊官网MetaMask和Facuet:MetaMaskfaucets.chain.link/rinkeby(Rinkeby测试网络)www.rinkeby.io/#faucet(Rinkeby测试网络)faucet.metamask.io/ (Facuet测试网络)Solidity:Solidity官方文档Solidity中文文档-登链社区基于以太坊的智能合约开发教程【Solidity】 - 千峰教育Solidity-workshop - Githubcryptozombies.io/(一个在线游戏来学习语言和Dapp)Remix:Remixjs库web3.js官方文档web3.js中文文档-登链社区ethers.js官方文档ethers.js中文文档-登链社区开发框架:Truffle官方文档Truffle中文文档(该文档已经比较久没有更新了,建议查看官网)GanacheHardHatethereum.org/zh/develope…ERC-20:ERC-20 代币标准以太坊官网-ERC-20 代币标准了解ERC-20通证智能合约智能合约库:OpenZeppelin 合约DappSysHQ20以太坊官网-智能合约库智能合约安全:SlitherMythXMythrilManticoreVerifierSlitherMythril智能合约安全清单安全性建议和最佳做法合集**NFTLaunchKit:**使用 NFTLaunchKit,无需任何代码则即可在网站的仪表板中创建智能合约。同时NFTLaunchKit 也提供模板创建 NFT Mint 网站并从仪表板管理所有内容。 **Hardhat:**Hardhat是一个以太坊开发环境。开发者能在 Hardhat 中编译合约并在开放网络上运行,同时也有获取 Solidity 堆栈跟踪、控制台等功能。 **Foundry:**Foundry 是用 Rust 编写的用于以太坊应用程序开发的极快、可移植和模块化的工具包。 **Brownie:**Brownie 是一个基于 Python 的开发和测试框架,用于针对以太坊虚拟机的智能合约。 **dapp.tools:**dapp.tools 是一套以以太坊为中心的 CLI 工具,遵循 Unix 设计理念,有利于可组合性、可配置性和可扩展性。 **Ganache:**帮助快速启动个人以太坊区块链,可以使用它来运行测试、执行命令和检查状态,同时控制链的运行方式。 **Waffle:**智能合约的有效测试工具。前端工具**wagmi:**wagmi 是 React Hooks 的集合,包含开始使用以太坊所需的一切。wagmi 可以轻松连接钱包、显示 ENS 和余额信息、签署消息、与合约交互等等——所有这些都具有缓存、请求重复数据删除和持久性。 **Solana-Web3.js:**Solana-Web3.js 库旨在提供对 Solana 的完整覆盖。该库构建在 Solana JSON RPC API 之上。 **Ethers.js:**Ethers.js 库旨在成为一个完整而紧凑的库,用于与以太坊区块链及其生态系统进行交互。 **Web3.js:**Web3.js 是一个库集合,允许开发者使用 HTTP、IPC 或 WebSocket 与本地或远程以太坊节点进行交互。 **Web3Auth:**Web3Auth 是一种简单的非托管身份验证基础设施,它使 Web3 钱包和应用程序能够为主流和原生 Web3 用户提供无缝的用户登录。 **Web3Modal:**Web3Modal 是一个易于使用的库,可帮助开发人员通过简单的可自定义配置在其应用程序中添加对多个提供程序的支持。 **NFTs2Me:**NFTs2Me与部署工具中的 NFTLaunchKit 类似,能通过使用无代码平台创建、铸造和销售 NFT。NFTLaunchKit 也是很方便的前端工具,此处不做赘述。存储工具**NFT.Storage:**IPFS 和 Filecoin 上 NFT 的免费分散存储和带宽。NFT.Storage 是一项长期存储服务,专为链下 NFT 数据(如元数据、图像和其他资产)而设计,每次上传的大小高达 31GiB。 **Web3.Storage:**在去中心化网络上存储数据的最简单方法。使用我们简单的 API 存储您的数据。它快速、开放且免费。 **OrbitDB:**OrbitDB 是一个无服务器的分布式点对点数据库。OrbitDB 使用 IPFS 作为其数据存储和 IPFS Pubsub 来自动与对等点同步数据库。这是一个最终一致的数据库,使用 CRDT 进行无冲突的数据库合并,使 OrbitDB 成为去中心化的绝佳选择 **ThreadDB:**ThreadDB 是一个基于 IPFS 和 Libp2p 构建的多方数据库,它为 Web 上的数据提供了另一种架构。 **Spheron:**去中心化网络托管,支持 Arweave、Skynet、IPFS 和 Filecoin 上的存储。安全**Mythril:**是 EVM 字节码的安全分析工具。它检测为以太坊、Hedera、Quorum、Vechain、Roostock、Tron 和其他与 EVM 兼容的区块链构建的智能合约中的安全漏洞。 **Slither:**Slither 是一个用 Python 3 编写的 Solidity 静态分析框架。它运行一套漏洞检测器,打印有关合约细节的可视信息,并提供一个 API 来轻松编写自定义分析。Slither 使开发人员能够发现漏洞,增强他们的代码理解能力。 **MythX™:**ConsenSys Software Inc™ 的 MythX™ 是以太坊智能合约的首要安全分析服务。我们的使命是确保开发团队避免代价高昂的错误,并使以太坊成为一个更安全、更值得信赖的平台。 **Manticore:**是用于分析智能合约和二进制文件的符号执行工具。 **Securify 2.0:**Securify 2.0 是以太坊基金会和 ChainSecurity 支持的以太坊智能合约的安全扫描器。监控工具**Blocktorch:**Blocktorch 是去中心化堆栈的可观察性平台。一目了然地了解分散组件的状态。快速浏览日志和充足的上下文。设置服务水平目标以查看异常情况并获得通知。 **Tenderly:**用于实时监控、警报、调试和模拟智能合约的综合以太坊开发者平台。浏览器**区块浏览器提供了一个用于搜索区块链的在线界面,并使开发者和用户能够检索有关交易、地址、区块、费用等的数据。**每个区块浏览器都提供有关特定区块链的数据,包含的信息类型将根据其服务的区块链架构而有所不同。如 Etherscan 是以太坊的区块浏览器和分析平台,Solana Explorer 允许开发者在 Solana 链上查找交易和账户,诸如此类的还有 Fantom Explorer、BscScan 等等,搜索相应的开发网络的 Block Explore 都能找到其浏览器。 **UpStreamApp:**参加全球以加密货币和 Web3 为重点的在线活动,加入 DAO,结识新朋友。 **Crypto Nomads Club:**Crypto Nomads Club 面向在全球各种加密活动中相遇的数字游民和常旅客。 **Eventbrite:**Eventbrite 可以为你匹配 Web3 活动,或者你也可以创建自己的活动。 **TinTinLand:**Web3 开发者社区,相较于前几个社区,TinTinLand 在提供活动、社交功能的同时,还提供 Web3 技术资源、专业课程。 Web3 的营销工具能够在产品的营销阶段,帮助开发者更好地推出产品。 **Mobula.fi:**去中心化的数据聚合器(token,NFT)。 **WaitlistPanda:**收集潜在客户和建立受众的最简单方法,可以创建“病毒传播”式的候补名单、社交推荐等。 **Lemlist:**个性化邮件,自动跟进,并与所有渠道的潜在客户互动。Lemlist 将你的销售自动化和电子邮件软件合二为一。 **Make:**创建无代码的自动化营销 Solidity 编程语言是任何智能合约开发者最基本的部分,也是如何编写智能合约的关键!我们可以从以下几种语言中选择一种,然后开始开发。Solidity L智能合约语言总结 如果你是智能合约渐手,你应该从solidity开始。如果你一直在做智能合约,你可能已经了解solidity。不可否认Solidity是最主要的、最常用的智能合约开 Chainlink 发语言。Solidityi适用于大多数智能合约平台,如Ethereum、Avalanche、Moonbeam、Polygon、BSC,等等。这是由于大多数区块链都采用了以太坊虚LOpenzeppelin 拟机(EVM),而solidity就是为其而生的。在目前排名前十的Def项目中,有九个使用solidity作为他们的主要编程悟言。 L智能合约要点总结 3.部曙和测试框架 我预测未来会有90%的智能合约价值是用solidity完成的。Solidityi语言的维护积极,并目有大量的支持。 L明星选手: 你地可以把yul/assemblyl限定为另一种语言,但它是和solidity-一起使用的,所以我不把它算作自己的语言。 L优秀选手 L替补选手 Vyper L非EVM: yper是另一种与EVM兼容的语言,它主要被前10个Def项目中的一个使用(其他一些项目将其作为辅助),即Cuve.fi.yper是一种基于python的语 L过时的: 言,我很喜欢使用。它的应用不如它的EVM兄弟solidity多;但是,如果你喜欢python,你可能想尝试一下这种语言,而不是solidity. 明星选手 LHardhat Rust Rust是区块上的南生儿,它与不能应用在EVM的区块链,如Ethereum、Polygon、Binance Smart Chain等等。然而Rust何以部屠到Solana、Terra等锁 上,或者在Polkadott构健区块链应用。Rust是一种性能良好的通用语言,甚至在智能合约之外使用;因此,许多公链选择它做完开发语言。其逻辑是, 哦,好吧,一些纤发人员已经掌据了Rust,所以我们不妨让开发者能在尽量多的地方使用Rust.” 如果你想进入这些新兴的区块链,Rus是一个靠谱的选择。如果让我精,我会说Rus涵盖了目前世界上锁定在智能合约中的大约5%的价值。…但这完全 是猜测。档能合约语后总: ·必须知道的:Solidity ·Python爱好者:yper ·Tera,Solana,Polkadot:Rust等2.智能合约必备工具 这一部分我们讨论智能合约中使用到的工具。你不必在这些工具中做出唯一的选择。如果你愿意,你可以使用所有这些工具!我不确定如何对这些进行分 类,但我认为“essentials"是一个合适的描述,因为。。嗯,它们是必备的。 Chainlink Chainlink是区块链预言机,它是一个让智能合约成为混合智能合约的工具,它包括一些链外组件,并与现实世界连接。智能合约很好,但它们有一个巨大 的问题,就是没有以任何方式与外部世界相连。要使用一些链外组件(如数据或链下计算)来保持智能合约去中心化,就必须让链外数据和计算去中心 化,而这正是Chainlink网络和工具的作用。绝大多数顶级智能合约平台都是混合型智能合约,并将预言机作为其基础设施的关键组成部分。只要看看 DeFipulsel的前10个项目,就知道哪些是混合型的。Asterik的解释*:Uniswap有一个预言机产品。Yearni和Instadapp是聚合器,与使用预言机的协议合作/是混合型的。Sushiswap使用预言机进行杠杆交易。 可以看到,至少有50%的项目将预言机作为基础设施的重要部分,另外30%(总计80%)以某种方式使用预言机。通过预言机可以获得资产定价信息、随 机数、事件驱动的自动化执行,等等 对于任何进入这个领域的智能合约开发者来说,Chainlink是一个必不可少的功能,不管是什么语言或区块链。 比外,在2020年和2021年,我们看到了无数的闪电贷攻击、预言机操纵攻击等黑客行为,在D领域造成了近数十亿美元的损失。最令人痛心的是,其 中一半以上是可以通过使用像Chainlinki这样可靠的预言机来预防的。请一定不要让你或你的朋友在2022年使用中心化或不安全的预言机。 请使用像Chainlink这样的安全预言机解决方案。我们不能让“哎呀,使用中心化预言机,让我的用户损失了1亿美元"的情形在2022年继续上演。因此,请 熟悉Chainlink,制作强大的、健壮的应用程序,并保护自己兔受预言机攻击。 Openzeppelin Openzeppelin]巩固了自己作为“solidity标准库"的地位。任何时候,任何开发者(包括我自己)都在寻找一种快速的方法来部署NFT/ERC721、ERC20、 可升级合约、DAO/治理,或者任何在这个领域的开发者想做的项目,十有八九,你会想去找一个Openzeppelin包。 Openzeppelin是一套已经写好的智能合约,所以你不需要重新发明轮子。我在项目中使用他们已经审计过的可扩展智能合约,为我节省了无数的时间。我 无法强调Openzeppelin,是多么的重要。我想在我大约80%的教程中,我都在以某种方式使用Openzeppelin. 智能合约要点总结 必须知道的:Chainlink和Openzeppelin 你可以(而且可能应该)同时使用这两个东西。以我微对这些技术的了解,怎么强调都不过分。 3.部署和试框架 去年,我的回顾文章是专门针对这个类别的,所以今年,我一定要给你说说我认为这些框架在今天的地位的差异。智能合约框架是任何开发者工作中的重 要部分。它们帮助你高效地测试和部曙署智能合约。掌握其中至少一个是成功的关键一步。 为了能更直观的了解,看看我根据defpulse编制的图表,显示了一些顶级的def项目所使用的开发框架。 DEFI Smart Contract PULSE Name Locked (USD) Development Framework明星选手:Hardhat, Brownie, DappTools 优秀选手:Remix, Truffle, Apeworx, Foundry 替补选手:Waffle, sbt-ethereum, web3j, Embark, Saddle S ② Defipulsef的1O大Def项目以及他们使用的智能合约开发框架此外,我是这样看待这些纤发框架目前的情况的: 明星选手: Hardhat,Brownie,DappTools 优秀选手: Remix,Truffle,Apeworx,Foundry 替补选手: 记住,这些工具并不总是能抓住每一个错误,一定要自己的能力!。 Slither Slitheri正在成为静态分析的首选工具之一。SlitherE由Trail of Bits团队(该领域我最喜欢的审计机构之一)建立,易于使用,可以捕捉工程师可能犯的许多 简单错误。我强烈建议大家尝试一下这个开源的错误捕捉器! MythX MIythX是Consensys的另一个工具,它是基于云的测试bug的工具,据说可以做更深入的挖掘。许多像Aave和我一样的用户喜欢它的深度。它确实对用户 有一个付费门槛,但如果你有钱的话,它是值得的。 Mythril Myh是MyX产品的分析工具的一个开源子集。这不是一个我已经深入研究过的工具,但它看起来会给你一些有希望的简单结果。 Manticore Manticore是另一个Trail of Bits.工具,但它不做静态分析,而是做符号执行,它找出什么会触发你的智能合约工作。如果你已经用Slither_工作,你不妨也试 试这个! Echidna 接下来,Trail of Bits(你知道为什么他们是我的最爱之一)又推出了Echidna。这是一个针对EVM合约的fuzzer,如果你正在使用Trail of Bits的其他工具, 你不妨再一次尝试一下。 Securify Secu币y是一个令人难以置信的开源工具,它可以寻找特定的漏洞。这是另一个你可以尝试的工具具 ## Publication Information - [leaf](https://paragraph.com/@leaf-6/): Publication homepage - [All Posts](https://paragraph.com/@leaf-6/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@leaf-6): Subscribe to updates