面向智能合约、区块链、Web3、以太坊开发工具指南

面向智能合约、区块链、Web3、以太坊开发工具指南

如果你对区块链技术有兴趣,又或者你是从事区块链技术开发的工程师,本文将带你了解关于区块链开发的工具栈,包括面向智能合约、区块链、Web3、以太坊的工具总结。

智能合约语言

智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

智能合约语言

智能合约跟其它编程语言一样,是基础,是智能合约开发人员最基本的技能,也是如何编写智能合约的!选择其中一种语言并开始。

Solidity

solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++PythonJavaScript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。

如果是个新手,刚入门应该从 solidity 开始。如果是从事智能合约的开发人员,可能知道 SoliditySolidity 是占主导地位、最常用的智能合约开发语言,适用于大多数智能合约平台,例如 EthereumAvalancheMoonbeamPolygonBSC 等。这是因为大多数区块链都采用了以太坊虚拟机 (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 区块链一起使用,例如 EthereumPolygonBinance Smart Chain 等。但是,使用 Rust,将能够部署到 SolanaTerra 等链并使用 Polkadot 构建区块链。Rust 是一种高性能的通用语言,即使在智能合约之外也可以使用。

如果想利用这些新兴的区块链,Rust 是一个不错的选择。

官方网站:https://www.rust-lang.org/

总结

必须掌握: solidity
区块链爱好者:VyperRust

智能合约要点

这一节来讨论在智能合约中使用工具的地方,选择适合项目的。

Chainlink 去中心化的预言机网络可以提供防篡改的数据输入、输出和计算资源,以支持任何区块链上的高级智能合约。是一种使智能合约成为混合智能合约的设备,这意味着它们包含一些链下组件并与现实世界连接。智能合约很棒,但它们存在无法以任何方式与世界连接的巨大问题。现在要使用一些链下组件(如数据或外部计算)来保持智能合约去中心化,还必须让外部数据和计算去中心化,而这正是 Chainlink 网络和工具的用途。

绝大多数顶级智能合约平台都是混合智能合约,并将这些预言机用作其基础设施的关键组件。只需查看 DeFipulse 的前 10 个项目,看看哪些是混合项目。

查看 DeFipulse 的前 10 个项目,看看哪些是混合项目

可以看到,至少 50% 的人使用预言机作为基础设施的重要组成部分,另外 30%总计 80%)以某种方式使用预言机。可以获得资产定价信息、随机数、事件驱动执行等等。

Openzeppelin

Openzeppelin 已经巩固了自己作为“可靠性标准库”的地位。任何时候,任何开发人员都在寻找一种快速部署 NFT/ERC721ERC20可升级合同DAO/治理或许多开发人员在这一领域所做的任何事情的方法,十有九次,会想要接触到一个Openzeppelin 包。

Openzeppelin 是一套已经编写好的智能合约,因此不必重新造轮子。在项目中使用它们已经审核的可扩展智能合约,可以节省了无数时间。

要点总结

必须掌握:ChainlinkOpenzeppelin

部署和测试框架

测试是每种开发语言都必须的,对于智能合约也不例外,需要借助一些框架或者工具来测试和部署。下图是顶级 Defi 项目其使用的框架情况。

顶级 Defi 项目其使用的框架情况

此外,以下是对当前框架定位的看法:

下面来简单介绍几个常用的框架,其中包括顶流、一流的。

Hardhat

Hardhat

Hardhat 框架算是最主流的智能合约开发框架,Hardhat 是一个基于 JavaScript 和 Solidity 的开发框架,它可以很好加快应用程序的开发,如果需要了解Hardhat,可以查看 hardhat-starter-kit 示例代码。

凭借 Hardhat 的测试速度、TypeScript 支持、广泛应用及以开发人员体验为中心理念,使其快速成为最受欢迎的智能合约开发框架。

如果喜欢 JavaScript 或者是前端工程师,又或者想使用最顶流的框架,强烈推荐这个框架。

Brownie

Brownie 是一个基于 Python 的开源框架,构建在 web3.py 之上,被 Curve.fiyearn.financeBadger 等协议使用。它同时支持智能合约语言 SolidityVyper ,这个框架的主要吸引力是基于 python 的。之所以创建 Brownie ,是因为许多 Python 工程师鄙视使用 JavaScript 并想要一个 Python 框架。此外,大多数传统金融科技领域都使用 python 而不是 JavaScript,因此通过创建 Brownie ,从金融科技转向 Defi 变得更加容易。

可以查看 brownie-starter-kit 来开启使用该框架的旅程。

如果喜欢 python,想要使用更直接的框架,强烈推荐这个框架。

Truffle

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

LedgerTrezor 被称为“冷钱包”,或者说转换起来比较麻烦的钱包。这种繁琐是故意的(安全大部分都是建立在繁琐之上),这样能够更好的确保资金安全。

可以在项目中使用冷钱包、热钱包和多重签名的任意组合,而且提倡这么做。对需要大量/快速访问和转移的小资金使用热存储(热钱包),对长时间不想接触的东西使用冷存储(冷钱包),对希望保护的大量资金的使用多重签名。

甚至可以将冷藏钱包连接为多重签名的钥匙之一!

区块浏览器

对于想要“查看”交易和区块链世界上正在发生的事情的人来说,区块浏览器是至关重要的工具。如果有一个第一层连接,可以使用所有工具来构建其中的一个,但 99% 的时间,会想要使用现成的,避免自己搭建造轮子。

Etherscan

Etherscan 对于希望学习了解区块链的人都应该知道的区块浏览器。大多数区块链服务都内置了 Etherscan ,从设计到实现都非常出色。 Etherscan 算是 ETH 社区最主要的区块浏览器,已经为 PolygonETH 2Binance 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

Web3jsEthersjs 是目前使用的最多的两个主要 JavaScript 框架,它们在前端的表现都非常出色。如果正在开发构建DApp等区块链相关项目,可以使用其中任意一个都能很好的完成相关功能。不过目前的趋势已经朝着 Ethersjs 作为更流行的趋势发展。

Moralis

Moralis 算是每个人都应该了解的工具。它具有开箱即用的 web3js 支持和大量工具来改善前端开发。它被称为“firebase of crypto”,并且它正是这样做的。也许想要一个让前端运行更快的数据库;也许想构建一个 Etherscan 或 Opensea;也许需要一个地址拥有的 NFT 列表。 Moralis 内置都已支持,并且支持更多的可以做的事情。它几乎拥有所想到的一切,包括开源工具包和基于云的服务框架。

UseDapp

Usedapp 是另一个开源项目,其中包含用于处理 web3 的出色插件。如果你正在使用React,强烈推荐使用。

The Graph

The Graph 是执行索引的基础工具,当想在区块链上查找某些东西时,可能需要进行大量查询。例如,如果想查看链上所有包含 1,000DAI 代币的地址,这将非常耗时,遍历链上的每个地址并调用 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 程序,旨在对以太坊智能合约进行模糊测试/基于属性的测试。

监控与运维

监控与运维通常需要使用很多自己的脚本,如果不想自己编写脚本,可以看下 OpenzeppelinDefenderTenderly 是允许监控生产代码并确保它们安全的工具!

总结

现在的开发,有很多的工具可以帮助提高开发效率和质量,如何选择适合自己或者团队的工具,就需要对其工具有一定的了解,然后再根据团队限制选择适合自己的。当在这个领域构建的越多,就越意识到这些工具中的每一个对于快速构建应用程序的重要性。