去年,我研究了一些顶级的智能合约开发者框架[2],今年,我们将扩展到更多。
我们将研究十类工具,然后看看每个类别中最适合智能合约/区块链/solidity/vyper/rust/web3开发者的工具(我们现在有太多 “区块链开发者”的术语)。
我已经在某种程度上使用了这个列表中的每个工具,所以您可以放心,我不是简单地复制粘贴某个工具列表。先对那些不了解我的人来介绍一下我自己,我生活在智能合约的世界里,并与行业中一些最优秀的人一起工作,作为Chainlink[3]项目的开发者倡导者,我自己的区块链基础设施公司[4]的首席执行官,以及web3的爱好者。这将为您提供世界上一些最好的开发人员所使用的东西。然而,这个列表并不是所有内容 的列表,所以如果我错过了您的工具,很抱歉!这只是我认为每个开发者都需要注意的问题。所以,让我们开始吧!
本文包括一下内容:
智能合约指南
智能合约要点
部署和测试框架
钱包
区块资源管理器(浏览器)
Layer 1节点服务
前端工具
帮助和支持
安全分析
监测和维护
另外,我们制作了一个关于这个主题的视频,如果你更喜欢看视频的话可以出去看一下:
1. 智能合约语言
编程语言是任何智能合约开发者最基本的部分,也是如何编写智能合约的关键!我们可以从以下几种语言中选择一种,然后开始开发。
Solidity
如果你是智能合约新手,你应该从 solidity[5] 开始。如果你一直在做智能合约,你可能已经了解solidity。不可否认Solidity是最主要的、最常用的智能合约开发语言。Solidity适用于大多数智能合约平台,如Ethereum、Avalanche、Moonbeam、Polygon、BSC,等等。这是由于大多数区块链都采用了以太坊虚拟机(EVM)[6],而solidity就是为其而生的。在目前排名前十的Defi项目[7]中,有九个使用solidity作为他们的主要编程语言。
我预测未来会有90%的智能合约价值是用solidity完成的。Solidity语言的维护积极,并且有大量的支持。
你也可以把yul/assembly[8]限定为另一种语言,但它是和solidity一起使用的,所以我不把它算作自己的语言。
Vyper
Vyper[9]是另一种与EVM兼容的语言,它主要被前10个Defi项目[10]中的一个使用(其他一些项目将其作为辅助),即Curve.fi[11]。Vyper是一种基于python的语言,我很喜欢使用。它的应用不如它的EVM兄弟solidity多;但是,如果你喜欢python,你可能想尝试一下这种语言,而不是solidity。
Rust
Rust[12]是区块上的新生儿,它与不能应用在EVM的区块链,如Ethereum、Polygon、Binance Smart Chain等等。然而Rust可以部署到Solana[13]、Terra[14]等链上,或者在Polkadot[15]构建区块链应用。Rust是一种性能良好的通用语言,甚至在智能合约之外使用;因此,许多公链选择它做完开发语言。其逻辑是,“哦,好吧,一些开发人员已经掌握了Rust,所以我们不妨让开发者能在尽量多的地方使用Rust。”
如果你想进入这些新兴的区块链,Rust是一个靠谱的选择。如果让我猜,我会说Rust涵盖了目前世界上锁定在智能合约中的大约5%的价值……但这完全是猜测。
智能合约语言总结
必须知道的 :Solidity
Python爱好者:Vyper
Terra, Solana, Polkadot:Rust等
智能合约必备工具
这一部分我们讨论智能合约中使用到的工具。你不必在这些工具中做出唯一的选择。如果你愿意,你可以使用所有这些工具!我不确定如何对这些进行分类,但我认为 “essentials ”是一个合适的描述,因为……嗯,它们是必备的。
Chainlink
Chainlink是区块链预言机[16],它是一个让智能合约成为混合智能合约[17]的工具,它包括一些链外组件,并与现实世界连接。智能合约很好,但它们有一个巨大的问题,就是没有以任何方式与外部世界相连。要使用一些链外组件(如数据或链下计算)来保持智能合约去中心化,就必须让链外数据和计算去中心化,而这正是Chainlink网络和工具的作用。绝大多数顶级智能合约平台都是混合型智能合约,并将预言机作为其基础设施的关键组成部分。只要看看DeFipulse[18]的前10个项目,就知道哪些是混合型的。
Asterik的解释:Uniswap有一个预言机产品。Yearn和Instadapp是聚合器,与使用预言机的协议合作/是混合型的。Sushiswap使用预言机进行杠杆交易。可以看到,至少有50%的项目将预言机作为基础设施的重要部分,另外30%(总计80%)以某种方式使用预言机。通过预言机可以获得资产定价[19]信息、随机数[20]、事件驱动的自动化执行[21],等等。
对于任何进入这个领域的智能合约开发者来说,Chainlink是一个必不可少的功能,不管是什么语言或区块链[22]。
此外,在2020年和2021年,我们看到了无数的闪电贷攻击[23]、预言机操纵攻击等黑客行为[24],在Defi领域造成了近数十亿 美元的损失。最令人痛心的是,其中一半以上是可以通过使用像Chainlink这样可靠的预言机来预防的。请一定不要让你或你的朋友在2022年使用中心化或不安全的预言机。
请使用像Chainlink这样的安全预言机解决方案。我们不能让 “哎呀,使用中心化预言机,让我的用户损失了1亿美元 ”的情形在2022年继续上演。因此,请熟悉Chainlink,制作强大的、健壮的应用程序,并保护自己免受预言机攻击。
Openzeppelin
Openzeppelin[25]巩固了自己作为 “solidity标准库 ”的地位。任何时候,任何开发者(包括我自己)都在寻找一种快速的方法来部署NFT/ERC721[26]、ERC20[27]、可升级合约[28]、DAO/治理[29],或者任何在这个领域的开发者想做的项目,十有八九,你会想去找一个Openzeppelin包。
Openzeppelin是一套已经写好的智能合约,所以你不需要重新发明轮子。我在项目中使用他们已经审计过的可扩展智能合约,为我节省了无数的时间。我无法强调Openzeppelin是多么的重要。我想在我大约80%的教程中,我都在以某种方式使用Openzeppelin。
智能合约要点总结
必须知道的 :Chainlink和Openzeppelin
你可以(而且可能应该)同时使用这两个东西。以我对这些技术的了解,怎么强调都不过分。
3. 部署和测试框架
去年,我的回顾文章是专门针对这个类别的[30],所以今年,我一定要给你说说我认为这些框架在今天的地位的差异。智能合约框架是任何开发者工作中的重要部分。它们帮助你高效地测试和部署智能合约。掌握其中至少一个是成功的关键一步。
为了能更直观的了解,看看我根据defpulse编制的图表,显示了一些顶级的defi项目所使用的开发框架。
Defipulse的10大Defi项目以及他们使用的智能合约开发框架此外,我是这样看待这些开发框架目前的情况的:
明星选手:
Hardhat[31], Brownie[32], DappTools[33]
优秀选手:
Remix[34], Truffle[35], Apeworx[36], Foundry[37]
替补选手:
Waffle[38], sbt-ethereum[39], web3j[40], Embark[41], Saddle[42]
非EVM:
Anchor[43], TerraSDK[44]
过时的:
Etherlime, Openzeppelin SDK, Cobra, Parasol
明星选手
Hardhat
现在,hardhat框架是最主要的智能合约开发框架。Hardhat是一个基于javascript和solidity的开发框架,可以快速提升你的应用程序的开发速度。你可以查看hardhat-starter-kit[45],了解一下hardhat项目的使用案例。
有了Hardhat的测试速度、对typescript的支持、广泛的采用、令人难以置信的以开发者体验为中心的团队,难怪它的受欢迎程度上升得如此之快。在去年的这个时候,我把这个框架放在了首位,现在依然是。它在后端使用ethers.js[46],自带的本地区块链用于测试,而且团队目前正在建立一个新的高级开发平台[47],集成到Hardhat中,我对2022年里的这个尝试感到无比兴奋。
如果你了解我,由于javascript的种种怪异之处[48],我并不是它的最大粉丝,所以很多时候,我更喜欢用Hardhat与typecript一起使用。Hardhat很容易成为我第二个最常用的框架。
如果你喜欢javascript,或者你想使用最流行的、支持最多的框架,我强烈推荐这个框架 。
Brownie
如果你读过我的任何其他材料,你就会知道我爱上了brownie[49]框架。
Brownie是一个开源的基于python的框架,建立在web3.py[50]之上,被Curve.fi[51]、yearn.finance[52]和Badger[53]等协议使用。它同时支持solidity和vyper,但这个框架的主要亮点是基于python。Brownie的诞生是因为许多python工程师鄙视使用javascript工作,并希望有一个python的框架。此外,大多数传统的金融技术领域都使用python而不是javascript,因此,随着Brownie的创建,从金融技术领域转移到Defi也变得更加容易。
Brownie是我创建新项目时的首选框架,我自称是brownie开发者的倡导者。你可以查看brownie-starter-kit[54](在Brownie世界里也被称为 “mixes”),开始使用框架开发。请务必查看Brownie Mixes[55] repo中的其他入门套件的列表。
如果你喜欢python,想使用一个更直接的框架或使用我最喜欢的框架,我强烈推荐这个框架 。
DappTools
Dapptools logo虽然Dapptools[56]没有华丽的logo[57],但它是一个用Haskell构建的应用程序。不过别担心,你不需要知道Haskell就可以使用它。
Dapptools主要由MakerDAO[58]团队(DAI背后的团队)使用,它的灵感来自于Unix[59]的哲学:“一个程序只做一件事,并把它做好。(Write programs that do one thing, and do it well.)” Dapptools是一个专注于命令行的工具,在这里,你可以使用你已经熟悉的命令行/shell工具,如bash或zsh,而不是用python、javascript或其他高级编程语言来帮助你开发。这有效地减少了一个你必须熟悉的技术,并迫使你在shell脚本方面做得更好!它配备了一套工具,如dapp、seth、ethsign和hevm,每一个工具都是专门为智能合约开发者日常工作的必须的部分而设计的。
我最近开始用Dapptools[60]工作,我喜欢它背后的思维方式。我写了一个Dapptools的入门套件[61],展示如何使用该工具。使用Dapptools,需要会使用makefiles[62]和shell脚本来 “生产(productionize )”你的代码。Dapptools认为测试应该用solidity来写,而fuzzing[63]应该是内置的。
我使用它的经验是有点笨拙,但我觉得这很大程度上来自于我平庸的bash脚本技能。我认为每个人都应该更好地使用shell脚本,我喜欢它迫使我去学习。
如果你不想学习另一种语言如javascript或python,你喜欢在你的设置中使用尽可能少的工具,你喜欢MakerDAO,或者@transmissions11[64]让你改变了看法,我强烈推荐这个框架 。
优秀选手
Remix
我对Remix的简要评价:每个人都应该知道如何使用Remix[65],但不一定用于生产环境。
Remix本身不是一个框架,而更像是一个IDE[66]。Remix是一个我认为每个人在开始时候都应该使用的工具,这样每个人在尝试分享想法时都可以有一个共同认知。不是每个人都会知道python、javascript或bash脚本的连接,所以使用像Remix这样的工具是完美的,因为它是一个可视化的工具。
当部署完一个合约时,Remix就会出现与之交互的按钮。选择solidity版本、编译、运行solidity测试等都很容易。如果你想使用javascript,它也有javascript脚本可供选择。Remix是可扩展的,所以如果你想增加功能,你可去进行扩展,甚至可以在本地主机上搭建一个Remix开发环境[67],用来运行你本地仓库中的代码。
Remix是一个把大家聚集在一起的工具,我很高兴我们有一个团队在做这样一个神奇的工具来帮助大家。不过,Remix并不是我推荐高级用户使用的东西,因为你需要在本地开发环境中使用更多微调的工具,而不是总是依赖网络IDE。我不推荐对Remix进行高级设置,但是,如果你喜欢用它工作,也是可以的!
我强烈建议大家熟悉Remix (如果你知道solidity,就可以直接上手了)。
Truffle
Truffle[68]是最先出现的框架之一,最初是Consensys[69]的一部分,从Consensys剥离出来,然后又合并回Consensys。它是一个基于javascript的框架,包含了Ganache[70](甚至像brownie这样的框架也使用它)、Drizzle[71]和现在最新的truffle teams[72]等工具。Truffle是所有框架中历史影响最大的,你可以看到他们对行业的影响,很多框架都采用了Truffle的实践做法。我们应该感到幸运,这个团队的出现,为框架建立了如此优秀的起点。如果你想尝试一下,可以看一下Truffle的入门套件[73]。
他们最近更新了文档[74],正在推出第七版的Ganache[75],我和他们的团队谈过,他们告诉我他们有很大的计划,我很兴奋。
早在2019年,每个人都听说过或正在使用Truffle,但在那之后的时间里,情况已经发生了变化。Hardhat一直处于上升势头,以巩固自己作为事实上的javascript框架的地位。在使用Truffle时,我经常遇到奇怪的错误;他们的typescript支持很微妙,测试运行速度比Hardhat[76]慢得多。目前,当Hardhat在所有方面都做得更好时,就很难为Truffle辩护了。
在2021年年初,我提到过[77]我对Truffle感到紧张,以我对该框架的了解,看起来2021年是Hardhat接管的一年。然而,我认为Truffle的未来仍然是光明的。他们有一个非常棒的团队,他们已经想好了Truffle将在哪里生存(现在有Consensys),我期待他们在2022年有大作为。
Ganache 是一个框架,如果你是从Truffle开始接触智能合约开发框架,并且喜欢Truffle的语法,你应该使用这个框架。在大多数情况下,我推荐Hardhat而不是Truffle;然而,我认为Ganache仍然是一个强大的工具,并建议任何希望与在本地构建测试网的人看一下Ganache。它有一个漂亮的用户界面组件,可以用它来更容易地 “看到 ”交易;它的启动很简单,可以在全局安装。
ApeWorX
ApeWorX LogoApeWorX[78]是Python的新生力量,它从brownie社区分支出来,做了一个比它的祖先brownie[79]更模块化的专注金融的框架。
Apeworx的设置和语法与brownie相同,但在应用时有一些有趣的改进。
我只用过Apeworx一点,它感觉非常像brownie,我喜欢增加插件。目前还不清楚这是否会成为Brownie的续集(类似于Hardhat接管Truffle的心智),或者两者是否会并行存在。无论如何,我非常期待看到Doggie[80]和他的团队将在2022年创造些什么,而且绝对是一个值得关注的框架,如果你想要一些可以添加插件的类似brownie的框架,可以尝试一下。
Foundry
Foundry[81]是用Rust编写的dapptools[82]。这是对该工具最直接的总结。
我使用foundry的时间比使用Dapptools的时间少一点,感觉这可能是Dapptools的继任者,但我不确定。它也是以命令行为主,需要类似的文件结构,而且几乎所有来自Dapptools的命令都与foundry的类似。Paradigm[83]团队的Georgios[84]和朋友们对流行的Dapptools进行了重塑,甚至在他们的发布文章[85]中向Dapptools致敬。
许多命令和文件结构设置与Dapptools相同。这个框架快速、强大,专注于在solidity中构建测试,并内置了模糊测试和其他强大的工具。
Rust正在成为越来越多的最受欢迎的技术之一,为区块链应用程序的基础设施提供动力,而这感觉就像它符合这一趋势一样。我很期待看到哪些大公司同时采用foundry和Dapptools。
替补选手
我在这一节会说得快一点,因为这些可能是你想使用的框架,但我对它们不太熟悉,或者我自己没有很好地尝试它们。
Waffle
Waffle[86]仍然是一个流行的框架,只是它更注重于测试而不是一整套工具。可以将Waffle与Hardhat一起使用,因为它们都是基于javascript的,而且很多人都使用这种组合设置。
Saddle
Saddle[87]是Compound[88]对Truffle的重塑。如果你喜欢Compound,可以试试这个!
sbt-ethereum
在过去的几年里,我没怎么用过java,这在我试用sbt-ethereum[89]的时候表现出来了。Sbt-ethereum将自己推销为:
“一个基于文本的互动平台,为“业余爱好者” — 不是程序员的人创立 — sbt-ethereum.io[90]
这是我去年了解过的另一个框架,遗憾的是我的scala技能并不好。然而如果你想使用命令行,这是另一个选择。
Web3j/Epirus
这是我去年了解过的另一个框架;看看他们的网站,似乎他们的主要产品已经从框架转向了企业区块浏览器。然而,他们仍然有他们的web3j[91]包,这是一个基于java的框架。如果你是java开发者,可以试试这个,看看它的感觉如何。
Embark
Embark[92]我去年给了一个相当亮眼的评价。我能够从他们的框架中测试和部署智能合约,并使用一些UI工具。然而,它已经一年多没有收到git提交了[93],而且从那时起,智能合约生态系统中的一些事情已经发生了变化,所以我不确定这对这个框架的未来意味着什么。
非EVM
Anchor
就目前而言,我认为Anchor[94]框架是目前Solana上最大的非EVM框架。如果你在Solana上做开发,我强烈建议你试试Anchor[95],因为它感觉是目前最好的解决方案。
TerraSDK
Terra[96]是另一个基于rust的智能合约区块链构建SDK/开发框架。他们现在有Terra.js[97]和一个python SDK[98],可以用它们开始构建应用。这是另一个我没有花很多时间的框架,但我计划在今年多用一些。
4. 钱包
部署智能合约,需要一个钱包来存储资金或至少是测试网的资金。出于各种目的,下面这些钱包会经常用到。
MetaMask
Metamask[99]是这个领域中几乎每个人都知道或应该知道的一个工具。它很简单,很适合在浏览器中做测试,是所有前端开发者需要做的。几乎每个人都应该有一个Metamask或一些类似Metamask的浏览器钱包(比如Solana上的Phantom[100])。
Metamask是一个热钱包[101],很容易上手。热钱包的问题是,一旦你的私钥泄露,你就完蛋了!此外,它们总是连接到互联网上,所以如果有人进入你的电脑,你可能也会完蛋!幸运的是,有一些有用的其他工具供我们使用。
Genosis Safe
Genosis safe[102]被称为多签钱包,意味着它需要X个签名来发送交易。这样一来,如果一个钱包被攻破,也没有关系,因为该攻击者至少需要攻破一半的密钥持有者。
这对智能合约开发者来说是一个有力的工具,特别是那些处理大量资金并希望确保其资产安全的人。很多DAO也使用Gnosis safe来存储他们的资金库。此外,gnosis safe还与许多其他DAO工具集成,如用于投票的Snapshot[103]。
Ledger / Trezor
Ledger[104]和Trezor[105]被称为 “冷钱包”,或者说是在进行转换时比较麻烦的钱包。这种繁琐是故意的;它们使你更难移动资金,攻击者更难。
你可以在项目中使用冷钱包、热钱包和多签钱包任何组合,而且也应该这样做!对于你需要经常/快速访问和移动的小额资金,使用热存储;对于你长期不想碰的东西,使用冷存储;对于你希望保护的重大资金,使用多签。甚至可以把冷钱包作为一个多签的密钥之一。
5. 区块链浏览器
对于想要 “看到 ”交易和链上正在发生的事情的人来说,区块浏览器是重要的工具。如果你有Layer 1的网络连接,你也可以建立一个这样的工具,但99%的时候,你会想使用别人的。
Etherscan
啊,Etherscan[106],你怎么会是免费的。Etherscan是我希望每个人都能知道并了解如何使用的工具之一。我很想看到他们开源,但我明白这不会是一个让他们一直保持令人印象深刻的状态的很好的激励措施。Etherscan内置了大多数服务,而且非常好用。Etherscan是ETH社区最主要的区块浏览器,他们已经为Polygon[107]、ETH 2[108]和Binance Smart Chain[109]等项目建立了支持。
Etherchain
然而,我很高兴他们有竞争,所以他们必须保持警惕!Etherchain[110]是一个轻量级的区块浏览器,它也发布了一个ETH 2 [111]浏览器,目前我使用的比Etherscan更多!
Ethplorer
另一个ETH区块浏览器,Ethplorer[112],可能是另一个你可能想要知道的浏览器。
大多数其他区块链也有多个区块浏览器客户端;然而,EVM/ETH社区很快就拥有了最多的客户端,因此我选择在这里重点介绍它们。
6. Layer 1 节点服务
你需要接入一个区块链来发送交易!如果你担心成本问题,所有这些都有免费的选项,我强烈建议你尝试一下,但你也可以随时自己运行自己的第一层网络节点!对于那些不熟悉的人来说,“第一层网络节点 ”指的是你的区块链连接。例如,要在ETH链上发送交易,你需要将交易发送到一个ETH节点。即使是Metamask和钱包也有一个连接到后台运行的第一层网络节点!
Alchemy
Alchemy[113]非常棒,是我进行ETH连接和所有EVM连接的首选。它的速度很快,有一个漂亮的用户界面来跟踪请求,有大量的可用的第一层网络。他们的反应速度惊人,有很好的支持和开发者倡导团队,我对他们在2022年的发展感到非常兴奋。
Infura
Infura[114]是另一个在2020年占主导地位的应用,而且可能仍然是。他们已经扩展到更多的产品,如IPFS,有一批坚实的追随者,许多工具与Infura原生支持。如果你正在寻找一个可靠的第一层网络接入,这就是你要找的。
Moralis
我甚至不知道Moralis[115]有第一层网络接入产品,直到几个月前我才知道,我已经用过几次了,它非常好用!它没有Infura或Alchemy那样的附加功能,但我认为这是因为Moralis的附加值更多体现在他们的前端服务上(这些服务非常棒,我们很快就会提到)。但我认为,对于任何想使用这些工具的人来说,Moralis仍然是一个很好的选择。
QuickNode
如果上面的一个没有我想要的区块链,QuickNode[116]有可能会有。QuickNode拥有大量可以连接的节点,并且设置简单,是另一个可能适合你的服务。
7. 前端工具
对于构建全栈应用程序/前端,你可能仍然会使用所有的一些标准工具,如javascript、HTML、CSS,也许还有一个框架,如react、angular或svelte。除此以外,还有一些奇妙的工具将使你的前端开发生活变得更加美好。
Web3js/Ethersjs
Web3js[117]和Ethersjs[118]是世界上使用的两个主要的javascript框架,它们都是非常出色的前端开发库。如果你要建立一个网站,你几乎必须使用这些工具中的一个,而且它们都做得很出色。最近,趋势是Ethersjs更受欢迎;但其实它们都能完成一样的工作。
Moralis
Moralis[119]是一个我认为每个人都应该了解的工具。它支持开箱即用的web3js,并有大量的工具来改善你的前端开发。它被宣传为 “加密货币的军火基地”,我认为它正是这样做的。也许你想要一个数据库来使你的前端更快;也许你想建立一个Etherscan[120]或Opensea[121];也许你需要一个地址拥有的NFT列表。有很多你可能想做的事情,Moralis都有内置的支持。
它拥有你所需要的一切,包括一个开源的工具包和一个基于云的服务框架。
我强烈建议每个在2022年建立web3网站的人了解Moralis。他们有很多模板[122]可以让你的项目开始。
UseDapp
Usedapp[123]是另一个开源项目,它有很多用于web3的插件,我在一些项目中使用过它,并且很喜欢。
Drizzle
Drizzle[124]来自Truffle、Metamask、Infura和Consensys的家族,做得很好。它在你的javascript中创建了一些简单的包装器,与你的合约一起工作,它还内置了React支持!请看Dapp大学关于使用Drizzle的视频[125]。
更多工具
此外,我认为每个人都应该了解create-eth-app[126]和scaffold-eth[127]。确切地说,它们不是 “工具”,而是构建web3应用程序/dapp的入门套件,所以我认为每个人都应该了解。
8. 获取帮助和支持
每个开发者都应该知道在他们遇到问题时获得帮助的基本路线图[128]。
谷歌一下确切的错误
在StackOverflow或Stack Exchange ETH(或任何Stack Exchange)上查找
在项目的Github上提出一个issue
在论坛上提出问题
在 Discord 中提问
在这些地方提问时,你的问题应该是:
可搜索 :这样其他有同样问题的人就能找到你的问题。
最小化和可重复性 :你的用途越具体,你就越不可能得到答案。
你要把在论坛或stack overflow中的提问视为 “活的文档”。你的问题格式越好,就越容易得到回答。没有不好的问题,只有格式不好的问题;让你的问题成为一个好问题[129]吧!
StackOverflow[130] & Stack Exchange ETH[131]
这是你的经验法则:“如果我遇到一个问题,而它的答案没有出现在谷歌结果的第一页,我应该把它发布在Stack Overflow上。”
这样做你会得到你想要的答案,同时帮助整个社区!有时候并不总是能从这些网站上得到回应,因为有时你的问题可能太难了,以前没有人做过,或者知道答案的人没有看到它。有时,我会在讨论区中加入我的问题的链接,以吸引更多的人关注它。但一个经验法则是,当我遇到问题时,Stackoverflow或Stack Exchange ETH应该是我最先寻找的地方之一。
你应该发到哪个地方?说实话这并不重要。Stack Exchange通常更友好一些,但StackOverflow的搜索排名更好,所以这取决于你。这两个论坛都是针对具体的技术问题。不要用这些论坛来讨论更多的理论问题或大问题。这更适合在 Discord 或 Twitter 上讨论。
Discord
在2022年,我希望我们从Discord[132]转移到像StackOverflow这样的论坛作为支持和问题的主要手段。Discord的问题不会被索引,因此不能被排名。Discord对于快速聊天和交流想法是很好的,但不应该被用作支持渠道。
论坛
论坛是非常棒的,因为它们像StackOverflow一样有索引和排名。一个很好的例子是Openzeppelin论坛[133],它的排名很好,而且问的问题也很好。
9. 安全分析工具
我们都知道,在将代码发布到区块链上时,审计是至关重要的,因为任何人都可以查看,一旦它发布了,就有可能被利用!因此,有一些工具可以帮助我们确保在代码中减少错误,这是非常重要的。这个领域已经出现了一些工具,使我们的智能合约更加安全。
不过我还没有使用过这部分的所有工具。我所做的少数审计已经使用了Trail of Bits套件和MythX(以及手动滚动浏览每一行代码!)。你可以查看一下这些工具的其他评论,包括 charingane[134]和 Matt Solomon[135].
记住,这些工具并不总是能抓住每一个错误,一定要自己的能力!。
Slither
Slither[136]正在成为静态分析[137]的首选工具之一。Slither由Trail of Bits[138]团队(该领域我最喜欢的审计机构之一)建立,易于使用,可以捕捉工程师可能犯的许多简单错误。我强烈建议大家尝试一下这个开源的错误捕捉器!
MythX
MythX[139]是Consensys的另一个工具,它是基于云的测试bug的工具,据说可以做更深入的挖掘。许多像Aave和我一样的用户喜欢它的深度。它确实对用户有一个付费门槛,但如果你有钱的话,它是值得的。
Mythril
Mythril[140]是MythX产品的分析工具的一个开源子集。这不是一个我已经深入研究过的工具,但它看起来会给你一些有希望的简单结果。
Manticore
Manticore[141]是另一个Trail of Bits工具,但它不做静态分析,而是做符号执行[142],它找出什么会触发你的智能合约工作。如果你已经用Slither工作,你不妨也试试这个!
Echidna
接下来,Trail of Bits(你知道为什么他们是我的最爱之一)又推出了Echidna[143]。这是一个针对EVM合约的fuzzer[144],如果你正在使用Trail of Bits的其他工具,你不妨再一次尝试一下。
Securify
Securify[145]是一个令人难以置信的开源工具,它可以寻找特定的漏洞。这是另一个你可以尝试的工具!
10. 监测和维护
我们的最后一节没有图片,因为对于监控,我通常使用很多自己的脚本。然而,我认为Openzeppelin的Defender[146]和Tenderly[147]是你应该100%熟悉的工具。它们都是允许你监控你的生产代码并确保它们保持安全的工具!
如果你还没有,我强烈建议你尝试一下这两个工具,并让我知道你的想法。
总结
这是我迄今为止最大的一篇文章,它包含了一个庞大的工具清单。我知道有很多,但是你在这个领域建立的越多,你就越能意识到这些工具中的每一个对于快速建立应用程序是多么重要。
2022年将是疯狂的一年,我希望我已经给了你一些想法,让你知道今年应该尝试什么,以建立你的惊人的、独特的、鼓舞人心的web3应用程序。
让我知道你认为我错过了什么工具,请在评论部分告诉我!祝你在新的一年里过得愉快!让我们把它搞个大的!
如果你想在今年开始你的区块链之旅,请查看如何成为一名区块链工程师[148],以及这份有10个优质的资源的清单[149]。
原文地址:Top 10 Smart Contract Developer Tools You Need for 2022
翻译:团长
参考资料
[1]
团长: https://learnblockchain.cn/people/320
[2]
顶级的智能合约开发者框架: https://betterprogramming.pub/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04?sk=e7e2b2fb5b34d58e3cd20877fa33df51
[3]
Chainlink: https://chain.link/
[4]
我自己的区块链基础设施公司: https://alphachain.io/
[5]
solidity: https://learnblockchain.cn/docs/solidity/
[6]
以太坊虚拟机(EVM): https://learnblockchain.cn/2019/04/09/easy-evm
[7]
前十的Defi项目: https://defillama.com/
[8]
yul/assembly: https://docs.soliditylang.org/en/v0.8.9/yul.html
[9]
Vyper: https://vyper.readthedocs.io/en/stable/
[10]
前10个Defi项目: https://defillama.com/
[11]
Curve.fi: https://curve.fi/
[12]
Rust: https://www.rust-lang.org/
[13]
Solana: https://solana.com/
[14]
Terra: https://docs.terra.money/Tutorials/Smart-contracts/Overview.html
[15]
Polkadot: https://polkadot.network/
[16]
区块链预言机: https://learnblockchain.cn/article/587
[17]
混合智能合约: https://blog.chain.link/hybrid-smart-contracts-explained/
[18]
DeFipulse: https://defipulse.com/
[19]
资产定价: https://docs.chain.link/docs/get-the-latest-price/
[20]
随机数: https://docs.chain.link/docs/get-a-random-number/
[21]
事件驱动的自动化执行: https://docs.chain.link/docs/chainlink-keepers/introduction/
[22]
不管是什么语言或区块链: https://docs.chain.link/
[23]
闪电贷攻击: https://www.coindesk.com/tech/2020/11/11/flash-loans-arent-the-problem-centralized-price-oracles-are/
[24]
黑客行为: https://rekt.news/leaderboard/
[25]
Openzeppelin: https://docs.openzeppelin.com/openzeppelin/
[26]
部署NFT/ERC721: https://www.youtube.com/watch?v=p36tXHX1JD8
[27]
ERC20: https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58
[28]
可升级合约: https://www.youtube.com/watch?v=bdXJmWajZRY
[29]
DAO/治理: https://github.com/brownie-mix/dao-mix
[30]
专门针对这个类别的: https://betterprogramming.pub/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04
[31]
Hardhat: https://learnblockchain.cn/docs/hardhat/getting-started/
[32]
Brownie: https://eth-brownie.readthedocs.io/en/stable/
[33]
DappTools: https://learnblockchain.cn/article/3118
[34]
Remix: https://remix.ethereum.org/#optimize=false&runs=200
[35]
Truffle: https://trufflesuite.com/
[36]
Apeworx: https://www.apeworx.io/
[37]
Foundry: https://github.com/gakonst/foundry
[38]
Waffle: https://github.com/EthWorks/Waffle
[39]
sbt-ethereum: https://www.sbt-ethereum.io/
[40]
web3j: https://www.web3labs.com/web3j-sdk
[41]
Embark: https://framework.embarklabs.io/
[42]
Saddle: https://github.com/compound-finance/saddle
[43]
Anchor: https://project-serum.github.io/anchor/getting-started/introduction.html
[44]
TerraSDK: https://docs.terra.money/
[45]
hardhat-starter-kit: https://github.com/smartcontractkit/hardhat-starter-kit
[46]
ethers.js: https://docs.ethers.io/v5/getting-started/
[47]
一个新的高级开发平台: https://medium.com/nomic-labs-blog/slang-rethnet-2ad465fd7880
[48]
怪异之处: https://www.youtube.com/watch?v=3se2-thqf-A
[49]
brownie: https://eth-brownie.readthedocs.io/en/stable/
[50]
web3.py: https://web3py.readthedocs.io/en/stable/
[51]
Curve.fi: https://curve.fi/
[52]
yearn.finance: https://yearn.finance/
[53]
Badger: https://badger.com/
[54]
brownie-starter-kit: https://github.com/smartcontractkit/chainlink-mix
[55]
Brownie Mixes: https://github.com/brownie-mix
[56]
Dapptools: https://dapp.tools/
[57]
华丽的logo: https://github.com/dapphub/dapptools/issues/903
[58]
MakerDAO: https://makerdao.com/en/
[59]
Unix: https://en.wikipedia.org/wiki/Unix
[60]
Dapptools: https://learnblockchain.cn/article/3118
[61]
Dapptools的入门套件: https://github.com/smartcontractkit/dapptools-starter-kit
[62]
makefiles: https://www.gnu.org/software/make/manual/html_node/Introduction.html
[63]
fuzzing: https://en.wikipedia.org/wiki/Fuzzing
[64]
@transmissions11: http://twitter.com/transmissions11
[65]
Remix: https://remix.ethereum.org/
[66]
IDE: https://www.redhat.com/en/topics/middleware/what-is-ide
[67]
在本地主机上搭建一个Remix开发环境: https://ethereum.stackexchange.com/a/60118/57451
[68]
Truffle: https://learnblockchain.cn/docs/truffle/
[69]
Consensys: https://consensys.net/
[70]
Ganache: https://trufflesuite.com/ganache/
[71]
Drizzle: https://trufflesuite.com/drizzle/
[72]
truffle teams: https://trufflesuite.com/blog/sunsetting-truffle-teams/
[73]
Truffle的入门套件: https://github.com/smartcontractkit/truffle-starter-kit
[74]
文档: https://trufflesuite.com/docs/truffle/testing/writing-tests-in-javascript.html
[75]
第七版的Ganache: https://github.com/trufflesuite/ganache/releases
[76]
Hardhat: https://learnblockchain.cn/docs/hardhat/getting-started/
[77]
提到过: https://betterprogramming.pub/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04
[78]
ApeWorX: https://www.apeworx.io/
[79]
brownie: https://eth-brownie.readthedocs.io/en/stable/
[80]
Doggie: https://twitter.com/fubuloubu
[81]
Foundry: https://www.paradigm.xyz/2021/12/introducing-the-foundry-ethereum-development-toolbox/
[82]
dapptools: https://dapp.tools/
[83]
Paradigm: https://www.paradigm.xyz/
[84]
Georgios: https://twitter.com/gakonst
[85]
发布文章: https://www.paradigm.xyz/2021/12/introducing-the-foundry-ethereum-development-toolbox/
[86]
Waffle: https://ethereum-waffle.readthedocs.io/en/latest/
[87]
Saddle: https://github.com/compound-finance/saddle
[88]
Compound: https://compound.finance/
[89]
sbt-ethereum: https://www.sbt-ethereum.io/
[90]
sbt-ethereum.io: https://www.sbt-ethereum.io/
[91]
web3j: http://docs.web3j.io/latest/
[92]
Embark: https://framework.embarklabs.io/docs/
[93]
git提交了: https://github.com/embarklabs/embark
[94]
Anchor: https://project-serum.github.io/anchor/getting-started/introduction.html
[95]
Anchor: https://solana.com/
[96]
Terra: https://docs.terra.money/SDKs/
[97]
Terra.js: https://terra-money.github.io/terra.js/
[98]
python SDK: https://terra-money.github.io/terra.py/
[99]
Metamask: https://docs.metamask.io/guide/
[100]
Phantom: https://phantom.app/
[101]
热钱包: https://www.gemini.com/cryptopedia/crypto-wallets-hot-cold
[102]
Genosis safe: https://learnblockchain.cn/article/2980/
[103]
Snapshot: https://snapshot.org/#/
[104]
Ledger: https://learnblockchain.cn/article/3359
[105]
Trezor: https://trezor.io/
[106]
Etherscan: https://learnblockchain.cn/docs/etherscan/
[107]
Polygon: https://docs.polygon.technology/docs/develop/getting-started/
[108]
ETH 2: https://learnblockchain.cn/article/572
[109]
Binance Smart Chain: https://bscscan.com/
[110]
Etherchain: https://etherchain.org/
[111]
ETH 2 : https://learnblockchain.cn/article/572
[112]
Ethplorer: https://ethplorer.io/
[113]
Alchemy: https://alchemy.com/?a=673c802981
[114]
Infura: https://infura.io/
[115]
Moralis: https://moralis.io/
[116]
QuickNode: https://www.quicknode.com/
[117]
Web3js: https://learnblockchain.cn/docs/web3.js/
[118]
Ethersjs: https://docs.ethers.io/v5/
[119]
Moralis: https://moralis.io/
[120]
Etherscan: https://etherscan.io/
[121]
Opensea: https://opensea.io/
[122]
模板: https://github.com/ethereum-boilerplate/ethereum-boilerplate
[123]
Usedapp: https://github.com/EthWorks/useDApp
[124]
Drizzle: https://trufflesuite.com/drizzle/
[125]
Dapp大学关于使用Drizzle的视频: https://www.youtube.com/watch?v=puiS6unu-GE
[126]
create-eth-app: https://github.com/paulrberg/create-eth-app
[127]
scaffold-eth: https://github.com/scaffold-eth/scaffold-eth
[128]
基本路线图: https://docs.chain.link/docs/getting-help/
[129]
好问题: https://stackoverflow.com/help/how-to-ask
[130]
StackOverflow: https://stackoverflow.com/
[131]
Stack Exchange ETH: https://ethereum.stackexchange.com/
[132]
Discord: https://discord.com/
[133]
Openzeppelin论坛: https://forum.openzeppelin.com/
[134]
charingane: https://medium.com/@charingane
[135]
Matt Solomon: https://medium.com/@msolomon44
[136]
Slither: https://github.com/crytic/slither
[137]
静态分析: https://www.securecodewarrior.com/blog/what-is-static-analysis
[138]
Trail of Bits: https://www.trailofbits.com/
[139]
MythX: https://mythx.io/
[140]
Mythril: https://github.com/ConsenSys/mythril
[141]
Manticore: https://github.com/trailofbits/manticore
[142]
符号执行: https://en.wikipedia.org/wiki/Symbolic_execution
[143]
Echidna: https://github.com/crytic/echidna
[144]
fuzzer: https://en.wikipedia.org/wiki/Fuzzing
[145]
Securify: https://github.com/eth-sri/securify2
[146]
Openzeppelin的Defender: https://openzeppelin.com/defender/
[147]
Tenderly: https://tenderly.co/
[148]
成为一名区块链工程师: https://betterprogramming.pub/how-to-become-a-blockchain-engineer-fa4386a0504f?sk=745ae4e8f9389907eb98e68b736afaf1
[149]
10个优质的资源的清单: https://dev.to/patrickalphac/top-10-smart-contract-solidity-developer-learning-resources-46db