介绍直到一两个星期前,我才意识到智能合约的安全性和审计,但不是当前真正正确的流程,即在自动化部署和测试期间合约审计在汇编级别使用威胁分析器。.可以在此处找到所发生事件的摘要[1]。我深深地理解,我们必须使用一些工具来全面测试我们的合约,然后再将它们发布到外界,否则它们将被机器人利用,这些机器人的移动速度比你开始想象的要快得多。Python脚本可能会检查您的智能合约是否存在弱点,执行任何已知的攻击,并将虚拟KNOX堡垒中的NFT或货币保护转移到匿名钱包中,这在一分钟内完全值得。耗尽为零。当这种情况发生时,你无能为力,你胃里的那个坑会膨胀成深不可测的黑洞。我学会了如何在我用来部署它的环境中审计合同,我希望本教程能帮助人们,这样他们就不会成为我所做的同样攻击的受害者,事不宜迟,我向你介绍一种创建方法,在VSCode中审核和部署合约先决条件NodeNode对于运行Hardhat和本地链是必不可少的,因此它是本教程的必需品,可以从此处安装[2]。.Pythonstaticsolidityanalyzer需要Python和pip才能执行,在Windows、Mac和Linux上实现此目的的最佳方法是通过GUI安装程序,因为它会为您修改PATH环境变量,让您在CLI期间避免任何全局变量execution关键字问题。在这里能找到它。HardhatHardhat是一个优秀的本地链开发环境,允许您在将合约发布到主网之前对其进行彻底的测试、部署和验证。它是任何智能合约开发人员不可或缺的环境,可以从这里安装[3]。Slither有了合同、部署脚本和hardhat环境后,您现在可以为静态分析器安装Slither程序集库。.以管理员或root用户身份打开一个新的命令提示符或终端窗口,然后输入以下命令pipinstallslither-analyzerVisualStudioCode设置好slither和hardhat后,您现在就可以安装VisualStudioCode,可以在找到这里[4]。安装后,单击左侧菜单中的扩展图标并搜索slither。安装扩展后,重新启动VisualStudioCode并重新打开hardhat项目,您现在应该会在左侧任务栏中看到滑行图标。如果扩展没有加载,请检查输出控制台,这很可能是环境变量的路径问题,您可以通过键入slither来测试它。在任何合约目录的终端窗口中,如果它抛出命令未找到错误,则需要设置环境变量。编译您的合约contracts目录如果您将所有合约都放在一个文件夹中,那么维护起来会更容易,请记住,在删除、创建或更改任何合约后,您将需要使用这些命令来清理本地类型链工件。npxhardhatcleannpxhardhatcompileanalysis/audit要运行审计,只需导航到slither图标并单击播放按钮,这将扫描当前目录中所有已编译的合约以查找任何漏洞。研究修复通过使用谷歌查找slither标记的问题并研究和测试可能的修复来优先修复最严重的错误。请记住,每次更改solidity文件时,都必须在扫描之前再次清理并重新编译。这个阶段可能相当复杂,为了完全理解、测试和建模控制流,您需要具备良好的开发知识水平才能真正测试逻辑并确保其按预期工作。实现这一目标的最佳方法是通过自动化测试脚本,可以在此处找到一篇关于此的精彩文章[5]。部署和验证下面概述的是带有构造函数参数的721A[6]合约的示例部署脚本,将此文件放在hardhat项目的脚本目录中,可以对其进行修改以启动或部署任何类型的合约,而不仅仅是721A。https://gist.github.com/Arkay92/f0ec3ed3b866607802c3f2b69c83c135.js在我的示例中,测试网链接到以太坊的Goerli网络,但它可以命名并定向到您喜欢的任何网络。最后一个标志对应于您的网络名称,该名称在hardhat项目的config.ts文件中设置。对于身份验证,请务必在此配置文件中设置您的etherscan/polygonscanapi密钥。配置完成后,确保将部署脚本放入脚本目录并运行以下命令。npxhardhatrunscripts/myDeployScript.ts-这就是一个网络测试网,你现在已经学会了如何在一个地方部署、测试、审计和验证合约!
