一篇文档教会你使用truffle合约测试(迁移脚本和测试脚本)

本文档详细介绍了如何使用Truffle编写迁移脚本和测试脚本,包括智能合约的部署、重入攻击漏洞合约的示例。通过实际操作,阐述了迁移脚本在智能合约部署中的重要性和如何编写测试脚本来确保合约的安全性和可靠性。
摘要由CSDN通过智能技术生成

上篇文档写了如何使用truffle的基本命令,这篇文档来教大家如何写迁移脚本和测试脚本。

一,迁移脚本(migrate)

首先我们应该理解为什么要使用迁移脚本,没有迁移脚本会怎么样?

迁移脚本可以有效地管理和自动化智能合约的部署流程,特别是在开发过程中以及在不同的以太坊网络(如本地测试网络、Ropsten测试网络等)之间进行部署。迁移脚本提供了一种结构化、版本控制且可重复的方式,确保智能合约的部署按照预期顺序进行,并且能够应对智能合约代码的更新或升级。

假设没有迁移脚本的话合约就难以按照我们的预想来执行,必须要手动的去部署智能合约,而且合约执行起来一旦我们想升级也会变的很麻烦。

理论讲完了,我们来讲讲如何编写迁移脚本吧!

我们先用一个简单的合约来举例子吧!

智能合约

这是一个非常简单的拥有get,set方法的合约。get用于获取num的值,set用于设置num的值。接下来我们来看看如何写他的迁移脚本。(一般情况我们的迁移脚本会用数字开头,这样是为了让程序识别执行脚本的顺序)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.3;

contract Cont{
    uint256 private num;

    function set(uint256 x) public {
        num= x;
    }

    function get() public view returns (uint256) {
        return num;
    }
}

迁移脚本

迁移脚本是为了将我们的合约部署到以太坊的工具,而且没当我们部署的时候迁移脚本都会对先前的脚本进行记录在链上。

const Cont = artifacts.require("Cont");

module.exports = async function(deployer, network, accounts){

    await deployer.deploy(Cont);
}

// 定义一个常量Cont ,用来存储我们的合约
// artifacts.require用于在迁移脚本文件中加载和创建编译后的智能合约对象

// module.exports定义了一个匿名的异步函数作为模块的输出,这样就能被外部调用执行
// async用

  • 29
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值