松露:测试智能合约
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.js
或 truffle-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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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