面向智能合约、区块链、Web3、以太坊开发工具指南
如果你对区块链技术有兴趣,又或者你是从事区块链技术开发的工程师,本文将带你了解关于区块链开发的工具栈,包括面向智能合约、区块链、Web3、以太坊的工具总结。
智能合约语言
智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
智能合约跟其它编程语言一样,是基础,是智能合约开发人员最基本的技能,也是如何编写智能合约的!选择其中一种语言并开始。
Solidity
solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++
,Python
和 JavaScript
语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。
如果是个新手,刚入门应该从 solidity 开始。如果是从事智能合约的开发人员,可能知道 Solidity
。Solidity
是占主导地位、最常用的智能合约开发语言,适用于大多数智能合约平台,例如 Ethereum
、Avalanche
、Moonbeam
、Polygon
、BSC
等。这是因为大多数区块链都采用了以太坊虚拟机 (EVM),solidity
正是为此而构建的。在目前排名前 10 的 Defi 项目中,十个中有九个使用 Solidity
作为主要编程语言。
官方网站:https://docs.soliditylang.org/
Vyper
Vyper 是另一种与 EVM 兼容的语言,它主要前 10 个 Defi
项目中的其中一个(以及其他一些项目用作辅助)使用,即 Curve.fi。Vyper 是使用的基于 python 的语言,它几乎没有它的 EVM 兄弟 Solidity 那么多用处。但是,如果喜欢 python,那么可以尝试一下这种语言
官方网站:https://vyper.readthedocs.io/en/stable/
Rust
Rust 是一个新手,将无法将它与 EVM 区块链一起使用,例如 Ethereum
、Polygon
、Binance Smart Chain
等。但是,使用 Rust,将能够部署到 Solana
、Terra
等链并使用 Polkadot
构建区块链。Rust 是一种高性能的通用语言,即使在智能合约之外也可以使用。
如果想利用这些新兴的区块链,Rust 是一个不错的选择。
官方网站:https://www.rust-lang.org/
总结
必须掌握: solidity
区块链爱好者:Vyper 、Rust
智能合约要点
这一节来讨论在智能合约中使用工具的地方,选择适合项目的。
Chainlink
Chainlink 去中心化的预言机网络可以提供防篡改的数据输入、输出和计算资源,以支持任何区块链上的高级智能合约。是一种使智能合约成为混合智能合约的设备,这意味着它们包含一些链下组件并与现实世界连接。智能合约很棒,但它们存在无法以任何方式与世界连接的巨大问题。现在要使用一些链下组件(如数据或外部计算)来保持智能合约去中心化,还必须让外部数据和计算去中心化,而这正是 Chainlink 网络和工具的用途。
绝大多数顶级智能合约平台都是混合智能合约,并将这些预言机用作其基础设施的关键组件。只需查看 DeFipulse 的前 10 个项目,看看哪些是混合项目。
可以看到,至少 50%
的人使用预言机作为基础设施的重要组成部分,另外 30%
(总计 80%
)以某种方式使用预言机。可以获得资产定价信息、随机数、事件驱动执行等等。
Openzeppelin
Openzeppelin 已经巩固了自己作为“可靠性标准库”的地位。任何时候,任何开发人员都在寻找一种快速部署 NFT/ERC721
、ERC20
、可升级合同
、DAO/治理
或许多开发人员在这一领域所做的任何事情的方法,十有九次,会想要接触到一个Openzeppelin 包。
Openzeppelin 是一套已经编写好的智能合约,因此不必重新造轮子。在项目中使用它们已经审核的可扩展智能合约,可以节省了无数时间。
要点总结
必须掌握:Chainlink 和 Openzeppelin
部署和测试框架
测试是每种开发语言都必须的,对于智能合约也不例外,需要借助一些框架或者工具来测试和部署。下图是顶级 Defi 项目其使用的框架情况。
此外,以下是对当前框架定位的看法:
- 顶级框架:Hardhat、Brownie、DappTools
- 一流框架:Remix、Truffle、Apeworx、Foundry
- 通用框架:Waffle、sbt-ethereum、web3j、Embark、Saddle
- 非 EVM 框架:Anchor、TerraSDK
下面来简单介绍几个常用的框架,其中包括顶流、一流的。
Hardhat
Hardhat 框架算是最主流的智能合约开发框架,Hardhat 是一个基于 JavaScript 和 Solidity 的开发框架,它可以很好加快应用程序的开发,如果需要了解Hardhat,可以查看 hardhat-starter-kit 示例代码。
凭借 Hardhat 的测试速度、TypeScript 支持、广泛应用及以开发人员体验为中心理念,使其快速成为最受欢迎的智能合约开发框架。
如果喜欢 JavaScript 或者是前端工程师,又或者想使用最顶流的框架,强烈推荐这个框架。
Brownie
Brownie 是一个基于 Python 的开源框架,构建在 web3.py
之上,被 Curve.fi、yearn.finance 和 Badger 等协议使用。它同时支持智能合约语言 Solidity
和 Vyper
,这个框架的主要吸引力是基于 python
的。之所以创建 Brownie ,是因为许多 Python 工程师鄙视使用 JavaScript 并想要一个 Python 框架。此外,大多数传统金融科技领域都使用 python
而不是 JavaScript,因此通过创建 Brownie ,从金融科技转向 Defi 变得更加容易。
可以查看 brownie-starter-kit 来开启使用该框架的旅程。
如果喜欢 python,想要使用更直接的框架,强烈推荐这个框架。
Truffle
Truffle 是原始框架之一,最初是 Consensys 的一部分,从中分离出来,然后合并回 Consensys。它是一个基于 JavaScript 的框架,包含诸如 Ganache(甚至像 brownie 这样的框架也使用)、Drizzle 和现在已晚的 truffle teams 等工具。Truffle 是所有框架中最具历史影响力的,可以看到它们对行业的影响,许多框架都采用了 Truffle 来实践。如果想尝试一下,请查看 truffle starter kit 。
数字钱包
如果以某种方式部署智能合约,则需要一个钱包来存储资金或至少是测试网资金,许多人将以下钱包的组合用于各种目的。
MetaMask
Metamask 是这个领域几乎每个人都知道或应该知道的数字钱包工具。这个概念很简单,非常适合在浏览器中进行测试,这是所有前端开发人员都喜欢做的。几乎每个人都应该有一个 Metamask 或一些类似 Metamask 的浏览器钱包(比如 Solana 的 Phantom)。
Metamask 是一个易于使用的热钱包。
Gnosis Safe
Gnosis safe 被称为多重签名钱包,这意味着发送交易需要 X
个签名。这样一来,如果一个钱包被盗用,那也没关系,因为攻击者需要破坏至少一半的密钥持有者。
对于智能合约开发人员来说,这是一个非常不错的工具,尤其是那些需要处理大量资金并希望确保其资产安全的人。许多 DAO 也使用 Gnosis safe 来存储他们的金库。此外,Gnosis safe 保险箱与许多其它 DAO 工具(如 Snapshot)集成,用于投票。
Ledger / Trezor
Ledger 和 Trezor 被称为“冷钱包”,或者说转换起来比较麻烦的钱包。这种繁琐是故意的(安全大部分都是建立在繁琐之上),这样能够更好的确保资金安全。
可以在项目中使用冷钱包、热钱包和多重签名的任意组合,而且提倡这么做。对需要大量/快速访问和转移的小资金使用热存储(热钱包),对长时间不想接触的东西使用冷存储(冷钱包),对希望保护的大量资金的使用多重签名。
甚至可以将冷藏钱包连接为多重签名的钥匙之一!
区块浏览器
对于想要“查看”交易和区块链世界上正在发生的事情的人来说,区块浏览器是至关重要的工具。如果有一个第一层连接,可以使用所有工具来构建其中的一个,但 99% 的时间,会想要使用现成的,避免自己搭建造轮子。
Etherscan
Etherscan 对于希望学习了解区块链的人都应该知道的区块浏览器。大多数区块链服务都内置了 Etherscan ,从设计到实现都非常出色。 Etherscan 算是 ETH 社区最主要的区块浏览器,已经为 Polygon、ETH 2 和 Binance Smart Chain 等项目建立了支持。
Etherchain
Etherchain 是一个轻量级的区块浏览器,它还发布了一个很棒的 ETH 2 浏览器。
第 1 层连接
如果需要发送交易,那么就要一条区块链来处理如果担心成本,所有这些都有可以尝试的免费选项,但也可以随时自己运行自己的第一层节点!
什么是第一层节点?就是指那些不熟悉的人的区块链连接。例如,要在 ETH 链上发送交易,需要将交易发送到 ETH 节点。Metamask 和钱包也是连接到在后台运行的第一层节点!
Alchemy
Alchemy 一般是进行 ETH 连接和所有 EVM 连接的首选。它速度快,有漂亮的 UI 来跟踪请求,有大量的第 1 层。
Infura
Infura 是另一个在 2020 年占据主导地位的应用程序,并且现在仍然是。他们已经扩展到更多的产品,比如 IPFS,拥有大量的追随者,而且许多工具本身就可以与 Infura 一起使用。如果正在寻找坚固的第 1 层,那么Infura 就是最佳选择。
Moralis
Moralis,号称终极 Web3 开发平台,有 65,000
多个使用 Moralis 软件和 API 构建和扩展其 dApp 的区块链项目,无需成本容易上手。
前端工具
对于构建全栈 dApp 或者项目前端,仍然需要如 JavaScript、HTML、CSS,或者 React、Angular 、Vue 或 Svelte 这样的框架。除此之外,还需要其他的前端工具,下面就来介绍几个。
Web3js/Ethersjs
Web3js 和 Ethersjs 是目前使用的最多的两个主要 JavaScript 框架,它们在前端的表现都非常出色。如果正在开发构建DApp等区块链相关项目,可以使用其中任意一个都能很好的完成相关功能。不过目前的趋势已经朝着 Ethersjs 作为更流行的趋势发展。
Moralis
Moralis 算是每个人都应该了解的工具。它具有开箱即用的 web3js 支持和大量工具来改善前端开发。它被称为“firebase of crypto”,并且它正是这样做的。也许想要一个让前端运行更快的数据库;也许想构建一个 Etherscan 或 Opensea;也许需要一个地址拥有的 NFT 列表。 Moralis 内置都已支持,并且支持更多的可以做的事情。它几乎拥有所想到的一切,包括开源工具包和基于云的服务框架。
UseDapp
Usedapp 是另一个开源项目,其中包含用于处理 web3 的出色插件。如果你正在使用React,强烈推荐使用。
The Graph
The Graph 是执行索引的基础工具,当想在区块链上查找某些东西时,可能需要进行大量查询。例如,如果想查看链上所有包含 1,000
个 DAI
代币的地址,这将非常耗时,遍历链上的每个地址并调用 balance
函数。相反,可以做的是构建子图,为想要的这些查询建立索引,并将它们存储在比整个区块链小得多的数据库中,这样就使得获取有关区块链的特定数据变得更加容易!
安全分析工具
众所周知,在将代码发布到区块链上时,审计至关重要,因为任何人都可以查看并可能使用它。因此,拥有帮助确保在代码中减少错误的工具是必不可少的,并且一些工具已经出现在该领域,以使智能合约更加安全。
请记住,这些工具并不总是能捕捉到每一个错误,最终还是得靠自己努力!
Slither
Slither 为静态分析(静态分析是在不执行应用程序的情况下自动分析源代码)的首选之一。Slither 易于使用,并且可以捕捉开发人员可能犯的许多简单错误。
MythX
MythX(以太坊智能合约安全服务) 是另一个基于云的 Consensys 工具,用于测试错误,据说可以进行更深入的研究。
Mythril
Mythril 是 MythX 产品分析工具的一个开源子集。是 EVM 字节码的安全分析工具,它检测为以太坊、Hedera、Quorum、Vechain、Roostock、Tron 和其它与 EVM 兼容的区块链构建的智能合约中的安全漏洞。
Manticore
Manticore 是另一个 Trail of Bits 工具,但它不是静态分析,而是用于分析智能合约和二进制文件的符号执行工具,它计算出什么会触发智能合约工作。
Echidna
Echidna 也是一个来自 Trail of Bits 的工具,是一个 Haskell 程序,旨在对以太坊智能合约进行模糊测试/基于属性的测试。
监控与运维
监控与运维通常需要使用很多自己的脚本,如果不想自己编写脚本,可以看下 Openzeppelin 的 Defender 和 Tenderly 是允许监控生产代码并确保它们安全的工具!
总结
现在的开发,有很多的工具可以帮助提高开发效率和质量,如何选择适合自己或者团队的工具,就需要对其工具有一定的了解,然后再根据团队限制选择适合自己的。当在这个领域构建的越多,就越意识到这些工具中的每一个对于快速构建应用程序的重要性。