介绍
使用任何新技术都可能既令人兴奋又令人恐惧。一方面,您可能会对使用一套新工具进行构建感到兴奋。但是,了解如何在所有可用工具中选择正确的工具也可能让人不知所措。
无论您是刚刚开始学习 Web3 还是经验丰富的构建者,您都会很好地理解这种令人生畏的经历。开发人员不仅需要了解特定于 Web3 的概念,如区块链和智能合约,还需要了解一个全新的工具堆栈来开发这些概念。然而,通过正确的步骤和适当的工具,开发人员可以相对快速有效地构建 Web3 技术。
在本文中,我们将简要概述创建 Web3 智能合约所需的步骤。同时,我们将了解如何使用您已知的工具——Visual Studio Code (VS Code) 和 Truffle for VS Code 扩展编写、部署和测试智能合约,从而成功完成这些步骤。
选择合适的工具
在学习了区块链和以太坊的基础之后,您可能会受到启发,开始应用您的知识来构建您自己的 Web3 项目。在此过程中,您可能已经从各种项目和教程中收集了一长串工具。不要迷失在该列表中,让我们专注于探索使用其中一种工具(用于VS Code 的 Truffle扩展)启动新智能合约项目所需的步骤,并探索它如何帮助完成智能合约的一些步骤合约的开发,例如:创建、调试、部署和安全。
项目创建
首先,让我们看看创建您的初始项目。
一个成功的项目通常始于良好的设置和文件结构。由于未正确设置项目会引起许多问题,因此确保文件结构一致且命名直观至关重要。
使用 Truffle for VS Code 扩展的一个好处是,您可以从一开始就快速构建具有正确结构的新项目,方法是创建一个具有模板文件结构和起始文件的新文件夹,或者简单地从一个松露盒。
要查看正确的文件结构是什么样的,让我们开始一个新项目。首先,您需要安装 Truffle for VS Code 扩展。有关详细的安装说明并获取有关其功能的更多信息,请查看这篇文章。
安装扩展后,按SHIFT + CTRL/CMD + P键打开命令面板。接下来,输入命令Truffle New Solidity Project并选择选项Create basic project。选择项目路径后,将创建一个具有正确文件结构的新项目。
如您所见,模板项目有一个包含智能合约的文件夹,另一个用于迁移到区块链环境,第三个文件夹用于脚本,还有另一个文件夹用于测试。该项目还包括一个用于存储您不想推送到存储库的信息的.gitignore 、一个开源许可协议和一个truffle-config.js文件。
这种文件结构使所有内容保持整洁有序,因此从一个文件导入到另一个文件或运行Truffle 命令非常简单且不易出错。
调试合约
不幸的是,我们并没有生活在一个代码没有错误的完美世界中。并且在构建智能合约时,您会遇到以前可能从未见过的错误消息。如果您总是需要参考像Etherscan这样的区块链浏览器来获取信息,那么调试这些交易可能会很棘手。
一种解决方案是通过 Truffle for VS Code 扩展使用Debug Transaction功能。要使用调试器,请再次打开命令面板并键入Truffle Debug Transaction。从那里,您可以查看交易消息并逐步处理它们。这对开发人员来说很重要,因为通常情况下,某笔交易中可能会出现错误,导致下一次交易尝试失败(比如特定钱包中的资金不可用)。
选择事务后,调试器将可用。在这里您可以执行典型的调试功能,例如步进/步出/步过、查看调用堆栈、监视窗口等。
部署合约
在您拥有一个有效的智能合约之后,就可以进行部署了。这里有三种途径。最佳实践是先部署到本地区块链实例进行测试,例如Ganache。之后,您可能希望部署到测试网以验证它在实时环境中是否正常工作。然后,只有在所有测试完成后,您才能将项目启动到主网。所有这些测试将帮助您避免在智能合约中出现代价高昂且有时无法挽回的错误。
在 Truffle 扩展中,您可以部署到所有三种类型的网络,而无需离开 VS Code。您可以通过右键单击要部署的 .SOL 文件并选择Deploy Contracts来执行此操作。
本地区块链:使用 Ganache 服务是一种创建具有多个钱包地址的本地区块链并测试可用于与智能合约交互的 Eth 的简单方法。从扩展中,您可以在VS Code 的Truffle - Networks窗格下创建一个新的 Ganache 网络。创建网络后,您可以根据需要启动/停止和重启服务器。
测试网:测试网旨在以类似于以太坊主网的方式工作,没有直接部署到主网的财务成本和风险。使用测试网是更好地了解您的合约一旦部署到主网后将如何运作的好方法。
有几个以太坊测试网可供选择,它们都可以通过使用节点提供商服务(例如Infura)连接到。在扩展中设置 Infura 帐户后,您可以访问现有的 Infura 项目,也可以轻松创建新项目。
主网:如果测试网就像智能合约代码的暂存服务器,那么部署到主网就像将代码推送到生产环境。测试智能合约代码的重要性怎么强调都不为过。如果有任何错误或漏洞,它们可以而且将会被攻击者利用。这些错误对于组织和用户来说可能代价高昂。
让我们看看在部署到主网之前如何使用正确的工具和最佳实践来保护我们的合约。
保护合同
在开发智能合约时,安全性始终是首要任务。
通过Diligence Fuzzing或他们的开源替代品Scribble等工具运行智能合约可以帮助您捕获许多常见的安全漏洞。但是,如果您的项目旨在处理数百万用户的资金,最好对您的智能合约进行专业审计。
尽管如此,开发人员在构建项目时仍应注意常见的漏洞。Web3 中一种常见的攻击媒介是黑客使用机器人扫描已部署的合约以寻找潜在漏洞和秘密信息,例如测试代码中留下的钱包私钥。使用像Truffle Dashboard这样的工具是避免因开发错误而损失资金和资产的一种方法。
Truffle Dashboard 让开发人员无需将私钥存储在 Solidity 项目的配置文件中。开发人员可以执行一次性设置过程,将他们的 Metamask 钱包连接到浏览器上本地托管的仪表板。完成此操作后,使用dashboard关键字而不是将密钥复制并粘贴到配置文件中就足够了。它也与其他开发框架兼容,例如 Hardhat。
要使用 Truffle 仪表板,请安装最新版本的 Truffletruffle dashboard
并在终端中输入命令。现在,任何需要您的私钥的操作都可以通过仪表板进行路由。例如,要部署您的合约,请确保在您的truffle-config.js文件中指定了正确的端口(默认情况下为24012),然后只需右键单击您的合约进行部署并选择dashboard: 24012:
正确的工具
构建 Web3 项目并不一定很复杂。有了正确的工具,前进的道路就会变得清晰。有很多方法可以改善您的工作流程,但是使用 Truffle for VS Code Extension 可以帮助您在您可能已经熟悉的环境中高效地工作。这个空间移动得非常快,并且一直在创建新工具。希望本文能让您了解一种在浏览 Web3 工具堆栈时简化开发过程的简单方法。