ETH智能合约测试

ETH的智能合约一般用Solidity语言编写,懂点基本solidity语法会更好地测试

测试中需要用到的工具:

下图为remix在线IDE的页面:

测试合约的三个步骤:

1.编译合约代码 (需要翻墙)

  • 开发智能合约,一般使用Truffle框架,合约写好后的目录结构如下。其中,contracts目录放的就是合约文件!

  • 下图是contracts目录下的文件。

  • 如果不在本地测试,而是想在remix上测试。除了“Migrations.sol”,其他文件内容,全部复制粘贴到Remix上。

  • 然后就可以选择编译器版本,开始编译了。编译后,没有红色的异常提示!说明编译成功,可以开始测试了!

2.合约初始化

  • 先登录_metamask_钱包,因为初始化合约,需要一个有ETH余额的地址!用来消耗gas!

  • 看个例子:

    /关键字:contract表明这是个合约/ contract JtakToken is StandardToken {

    string public constant name = "Just Test And Known"; string public constant symbol = "JTAK"; uint8 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 1000000000 * (10 ** uint256(decimals));

    /**

    • contract里面的关键字:constructor,表明这是合约的初始化方法!"_master"是一个地址类型的初始化参数! */ constructor(address _master) public { require(master != address(0)); totalSupply = INITIAL_SUPPLY; master = _master; paused = false; coinbase = msg.sender; balances[coinbase] = INITIAL_SUPPLY; } }
  • 开始部署合约,点击deploy!

  • 此时metamask,就让你支付手续费了,直接确认!

  • 几秒之后,部署成功,然后就可以愉快地调用合约方法了!

3.调用合约方法。

所谓的智能合约测试,说白了!就是合约方法的测试!

  • 展开合约,可以看到该合约的所有方法!

  • 红色表示是写入链上的方法,需要消耗手续费!蓝色表示是查询的方法,不需要消耗手续费!

  • 让我们通过调用合约方法,转一笔账,就清楚了!

  • 若手动调用方法测试觉得太麻烦,ETH框架Truffle可以用来做做单元测试!

一般的测试要点:

  • 合约初始化后,Token总量、名称、小数位、分发比例、分发前后的余额等等。

  • 合约方法是否调用SafeMath做运算。(防止上溢、下溢等运算问题)

  • 合约方法的调用权限控制。

  • 高级点的合约,可能还有锁仓、定时分发功能。这些具体业务,具体分析。不展开了~

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )