目录
准备测试环境
编写智能合约
编写迁移文件
测试智能合约
Solidity 测试
JavaScript 测试
首页 科技周边 IT业界 松露:测试智能合约

松露:测试智能合约

Feb 16, 2025 am 09:14 AM

Truffle: Testing Smart Contracts

Truffle:高效自动化智能合约开发的利器,本文聚焦智能合约测试。

智能合约测试是高质量智能合约开发的核心环节。 为什么需要如此重视测试?因为智能合约处理的是价值,有时是巨额价值,这使得它们成为攻击者的目标。 您可不想看到您的项目最终沦为区块链墓地里的“幽灵”吧?

关键要点:

  • Truffle 是自动化编译、测试和部署智能合约的必备工具,确保高效的区块链开发。
  • 由于智能合约处理高价值交易,容易成为攻击目标,因此使用 Truffle 测试智能合约至关重要。
  • 使用 ganache-cli(以前称为 TestRPC)轻松搭建本地开发测试网络,该网络提供预加载以太币的账户,方便进行经济高效的测试。
  • Truffle 支持使用 Solidity 和 JavaScript 编写智能合约测试,根据开发者的编程偏好和测试复杂度提供灵活性。
  • Truffle 内置调试器,允许开发者单步执行代码并检查变量,从而高效地解决问题。

入门指南:

我们将创建一个名为 HashMarket 的简单基于智能合约的二手商品市场。

在终端中,定位到您要构建项目的文件夹。在该文件夹中,运行以下命令:

mkdir HashMarket
cd HashMarket
truffle init
登录后复制

您应该看到类似以下输出:

<code>Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!

Commands:

  Compile:        truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test</code>
登录后复制

您还会得到如下所示的文件结构:

<code>.
├── contracts
│   └── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
├── test
├── truffle-config.js
└── truffle.js</code>
登录后复制

关于这些文件,请参考之前的文章。简而言之,我们拥有基本的 truffle.js 文件以及用于进行初始区块链迁移的两个文件。

准备测试环境

最简单的测试方法是在本地网络上进行。强烈建议使用 ganache-cli(以前称为 TestRPC)工具进行合约测试。

安装 ganache-cli(需要 Node 包管理器):

npm install -g ganache-cli
登录后复制

之后,打开一个单独的终端窗口或标签页并运行:

ganache-cli
登录后复制

您应该看到类似以下输出:

<code>Ganache CLI v6.1.0 (ganache-core: 2.1.0)

... (账户和私钥信息) ...

Listening on localhost:8545</code>
登录后复制

这是 ganache-cli 为您创建的所有账户的列表。您可以使用任何您想要的账户,但这些账户将预加载以太币,这使得它们非常有用(因为测试需要以太币来支付 gas 费用)。

之后,转到您的 truffle.jstruffle-config.js 文件,并向您的配置中添加一个开发网络:

module.exports = {
    networks: {
      development: {
        host: "127.0.0.1",
        port: 8545,
        network_id: "*"
      }
    }
};
登录后复制

编写智能合约

首先,我们将编写 HashMarket 智能合约。我们将尽量保持其简单性,同时保留所需的功能。

HashMarket 是区块链上的 eBay。它允许卖家发布产品,买家使用以太币购买产品。它还允许卖家在产品未售出时将其移除。

在项目中的 contracts 文件夹中,创建一个新文件并将其命名为 HashMarket.sol。在该文件中,添加以下代码:(此处省略了与原文相同的合约代码,避免重复)

编写迁移文件

您需要编写一个迁移文件,让 Truffle 知道如何将您的合约部署到区块链。进入 migrations 文件夹,创建一个名为 2_deploy_contracts.js 的新文件。在该文件中,添加以下代码:(此处省略了与原文相同的迁移文件代码,避免重复)

测试智能合约

您可以使用 Solidity 或 JavaScript 进行智能合约测试。Solidity 在测试智能合约时可能更直观一些,但 JavaScript 提供了更多可能性。

Solidity 测试

为了开始测试,在项目中的 test 文件夹中,创建一个名为 TestHashMarket.sol 的文件。(此处省略了与原文相同的Solidity测试代码,避免重复)

JavaScript 测试

Truffle 允许我们使用 JavaScript 进行测试,利用 Mocha 测试框架。(此处省略了与原文相同的JavaScript测试代码,避免重复)

关于使用 Truffle 测试智能合约的常见问题解答 (FAQ): (此处省略了与原文相同的FAQ部分,避免重复)

以上是松露:测试智能合约的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
使用AWS ECS和LAMBDA的无服务器图像处理管道 使用AWS ECS和LAMBDA的无服务器图像处理管道 Apr 18, 2025 am 08:28 AM

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

21个开发人员新闻通讯将在2025年订阅 21个开发人员新闻通讯将在2025年订阅 Apr 24, 2025 am 08:28 AM

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

CNCF触发了ARM64和X86的平台平等突破 CNCF触发了ARM64和X86的平台平等突破 May 11, 2025 am 08:27 AM

Arm64 架构开源软件的 CI/CD 难题与解决方案 在 Arm64 架构上部署开源软件需要一个强大的 CI/CD 环境。然而,Arm64 和传统 x86 处理器架构的支持水平之间存在差异,Arm64 通常处于劣势。面向多种架构的基础设施组件开发人员对工作环境有一定的期望: 一致性:跨平台使用的工具和方法保持一致,避免因采用不太流行的平台而需要改变开发流程。 性能:平台和支持机制具有良好的性能,确保在支持多个平台时部署方案不会因速度不足而受影响。 测试覆盖率:对所有平台同时进行效率、合规性和

定制电信软件的好处 定制电信软件的好处 May 11, 2025 am 08:28 AM

定制电信软件开发无疑是一项相当大的投资。然而,从长远来看,您可能会意识到,这样的项目可能更具成本效益,因为它可以像市场上任何现成的解决方案一样提高您的生产力。了解构建定制电信系统的最重要优势。 获取您所需的确切功能 您可以购买的现成电信软件有两个潜在问题。有些缺乏可能显着改善您工作效率的有用功能。有时您可以通过一些外部集成来增强它们,但这并不总是足以使它们变得出色。 其他软件功能过多,使用起来过于复杂。您可能不会使用其中的一些(永远不会!)。大量的功能通常还会增加价格。 基于您的需求

为什么您的自动化需要AI决策(以及Wordware如何提供) 为什么您的自动化需要AI决策(以及Wordware如何提供) May 15, 2025 am 10:47 AM

我们都体验过传统自动化平台如Zapier和IFTTT的神奇之处。它们擅长连接应用程序并自动化简单的“如果这样,则那样”序列:新表单提交创建电子表格行,传入邮件触发Slack警报。简单、有效,且对于基本任务来说是巨大的时间节省者。但是,你的实际工作流程有多么简单?一旦你的工作流程需要理解细微的上下文、优雅地处理错误或处理非结构化数据,这些工具往往会遇到障碍。它们的简单性使其易于使用,但也成为一种限制。当简单规则不够用时:考虑一下客户支持。票务系统涌入非结构化数据——聊天片段、屏幕截图、复杂的用户描

See all articles