未标题-3
Cover image

介绍

使用任何新技术都可能是一种既令人兴奋又令人恐惧的体验。一方面,我们可能对使用一组新的工具进行构建感到兴奋。另一方面,知道如何在所有可用工具中选择正确的工具也可能令人不知所措。

无论我们是刚开始学习Web3还是一个有经验的构建者,我们都会很好地理解这种令人生畏的体验。开发人员需要了解特定于web3的概念,如区块链和智能合约,以及开发这些概念的全新工具栈。但是,通过正确的步骤和适当的工具,开发人员可以相对快速和有效地构建Web3技术。

本文将简要概述创建Web3智能合约所需的步骤。同时,我们将看到使用Visual Studio Code (VS Code)和Truffle for VS Code Extension来编写、部署和测试智能合约,从而成功地完成这些步骤。

选择合适的工具

在学习了区块链和以太坊的基础知识之后,我们可能会受到启发,开始应用我们的知识来构建自己的Web3项目。在此过程中,我们可能已经从各种项目和教程中收集了一长串工具列表。与其迷失在该列表中,让我们专注于探索使用其中一种工具(Truffle for VS Code Extension)启动新智能合约项目所需的步骤,并探索它如何帮助智能合约被创建、调试和部署等。

项目创建

首先,让我们看看如何创建初始项目。

View of the Truffle for VS Code Extension in the VS Code editor

Truffle for VS Code Extension

Truffle for VS Code Extension

一个成功的项目通常始于良好的设置和文件结构。没有正确设置项目可能导致许多问题,因此确保文件结构的一致性和命名的直观性是至关重要的。

使用Truffle for VS Code Extension的好处是,我们可以从一开始就迅速建立一个新的项目与正确的结构,方法是创建一个具有模板文件结构和启动文件的新文件夹,或者简单地从一个Truffle box。

让我们开始一个新项目,看看正确的文件结构是什么样的。首先,我们需要安装Truffle for VS Code扩展。

一旦安装了扩展程序,按下键SHIFT + CTRL/CMD + P打开命令面板。接下来,输入命令Truffle New Solidity Project 并选择“创建基本项目”。选择项目路径后,将创建一个具有正确文件结构的新项目。

The file structure from a project started with the Truffle for VS Code Extension

正确的文件结构

如我们所见,模板项目有一个包含智能合约的文件夹,另一个用于迁移到区块链环境,第三个用于脚本,还有一个用于测试的文件夹。该项目还包括一个.gitignore,用于存储我们不想推送到存储库的信息,一个开源许可协议,以及一个truffle-config.js文件。

这个文件结构使所有内容保持整洁有序,因此从一个文件导入到另一个文件或运行Truffle命令是简单直接的,并且不容易出错。

调试我们的合约

不幸的是,我们并不是生活在一个代码没有错误的完美世界。在构建智能合约时,我们可能会遇到以前从未见过的错误消息。如果我们总是需要引用像Etherscan这样的区块链浏览器来获取信息,那么调试这些交易可能会很棘手。

一个解决方案是通过Truffle for VS Code Extension使用调试交易特性。要使用调试器,请再次打开命令面板并输入Truffle Debug Transaction。从那里,我们可以查看交易消息并逐步处理它们。这对开发人员来说很重要,因为某个交易中的错误通常会导致下一个交易失败(比如特定钱包中的资金不可用)。

Transactions to choose from after typing the command: Truffle Debug Transaction

选择交易后,调试器将变得可用。在这里,我们可以执行典型的调试功能,如进入/退出/结束、查看调用堆栈、监视窗口等。

The debug tools that are available through the Truffle for VS Code Extension

选择交易后可以使用调试工具

部署我们的合约

有了智能合约之后,就该部署了。这里有三种方法。最佳实践是首先部署到本地区块链实例进行测试,例如Ganache。之后,我们将希望将它部署到一个测试网络,以验证它在实际环境中是否正常工作。然后,只有在所有测试完成后,才能将项目启动到主网。所有这些测试将帮助我们避免在我们的智能合约中出现代价高昂且有时不可逆转的错误。

在Truffle扩展中,我们可以部署到所有三种类型的网络,而不需要离开VS Code。我们可以通过右键单击想要部署的. sol文件并选择“deploy Contracts”来实现这一点。

The option to build or deploy a smart contract appears after right-clicking a .sol file

右键单击 .sol 文件后轻松构建或部署智能合约

本地区块链:使用Ganache Service是创建带有多个钱包地址的本地区块链和测试Eth的简单方法,我们可以使用它与我们的智能合约进行交互。我们可以在VS Code的Truffle – Networks窗格下创建一个新的Ganache网络。网络创建完成后,可以根据需要启动/停止和重启服务器。

The Truffle for VS Code extension enables users to create or connect to a network directly from the editor

测试网:测试网的工作方式与以太坊主网类似,但它们没有直接部署到主网的财务成本和风险。使用测试网是更好地了解我们的合约部署到主网后将如何发挥作用的好方法。

有几个以太坊测试网可供选择,它们都可以通过使用节点提供商服务(如Infura)进行连接。在设置我们的Infura帐户内的扩展,可以访问我们现有的Infura项目,或可以创建新的。

The list of networks a user can deploy to via the extension

主网:如果测试网就像我们的智能合约代码的暂存服务器,那么部署到主网就像把代码推向生产。测试智能合约代码的重要性再怎么强调都不为过。如果有任何错误或漏洞,攻击者就会利用它们。这些错误对组织和用户来说都是昂贵的。

让我们看看在部署到主网之前如何使用正确的工具和最佳实践来保护我们的合约。

确保我们的合约

在开发智能合约时,安全性应该始终是一个优先事项。作为Web3开发人员,我们需要不断地了解最新的安全最佳实践。

通过Diligence Fuzzing或其开源替代品Scribble等工具运行智能合约,可以帮助我们抓住许多常见的安全漏洞。然而,如果我们的项目旨在处理数百万用户的资金,最好的做法是对我们的智能合约进行专业审计。

尽管如此,开发人员在构建他们的项目时应该意识到常见的漏洞。Web3中一个常见的攻击载体是黑客使用机器人扫描部署的合约,以寻找潜在的漏洞和秘密信息,例如测试代码中遗留的钱包私钥。使用像Truffle Dashboard这样的工具是避免因开发错误而损失资金和资产的一种方法。

An image of the Truffle Dashboard interface. It allows a user to connect their MetaMask wallet.

Truffle Dashboard消除了开发者在Solidity 项目的配置文件中存储私钥的需要。开发人员可以做一个一次性的设置过程,将他们的Metamask钱包连接到浏览器上本地托管的仪表板。完成此操作后,使用dashboard关键字而不是将键复制和粘贴到配置文件中就足够了。它也与其他开发框架兼容,比如Hardhat。

要使用Truffle Dashboard,需安装最新版本的Truffle,并在终端中输入命令Truffle Dashboard。现在,任何需要我们的私密的操作都可以通过仪表板进行路由。例如,要部署我们的合约,请确保在truffle-config.js文件中指定正确的端口,然后右键单击我们的合约来部署它,并选择dashboard: 24012。默认值为24012。

The port 24012 is highlighted in the network configuration file, truffle-config.js

确保在 truffle-config.js 文件中选择了正确的端口

The dashboard option is highlighted in the list of networks to deploy to

部署合约时选择仪表板选项

A MetaMask transaction pops up and is routed through the Truffle Dashboard. No more sharing private keys!

所有交易都通过 Truffle Dashboard 进行路由,因此我们不再需要共享私钥!

正确的工具,正确的前进道路

构建Web3项目并不复杂。有了正确的工具,前进的道路就会变得清晰。有很多方法可以改善我们的工作流程,但是拥有Truffle for VS Code Extension可以帮助我们在一个我们可能已经熟悉的环境中高效地工作。这个领域发展很快,新工具不断出现。因此,希望本文为我们提供了一种简化开发过程的简单方法,同时导航Web3工具堆栈。

Source:https://medium.com/better-programming/creating-web3-projects-with-the-truffle-for-vs-code-extension-6e784070a5f3

关于

ChinaDeFi – ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。

Layer 2道友 – 欢迎对Layer 2感兴趣的区块链技术爱好者、研究分析人与Gavin(微信: chinadefi)联系,共同探讨Layer 2带来的落地机遇。敬请关注我们的微信公众号 “去中心化金融社区”

img