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做运算。(防止上溢、下溢等运算问题)

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

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

ETH智能合约测试的更多相关文章

  1. Go语言打造以太坊智能合约测试框架(level1)

    传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...

  2. Go语言打造以太坊智能合约测试框架(level3)

    传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...

  3. Go语言打造以太坊智能合约测试框架(level2)

    传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. ...

  4. day02 智能合约

    上午 1>部署智能合约网络 语法 require 2>利用第三方的节点 同步到以太坊 3>智能合约部署的步骤: 1.查看区块 2.发布合约 deploy后台经历的事情:就是部署合约的 ...

  5. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

  6. 智能合约bug以及修改方案

    截取两篇文章:第一遍文章说的是智能合约能不能修改的问题: ETC转到ETH地址以及转币进ETH智能合约账户能不能转出来? 第0章 引言 如果ETC充值到了ETH地址上,能找回来吗?答案是不一定. ET ...

  7. 用Solidity在Truffle上构建一个HelloWorld智能合约

    原文地址:石匠的blog Truffle的环境安装在前文已经整理,这次用Solidity在Truffle写一个HelloWorld以太坊智能合约,并在testrpc上进行测试.当前的软件版本信息如下: ...

  8. [币严区块链]简单易懂的以太坊(ETH)智能合约开发入门教程

    以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用 ...

  9. 如何在Etherscan.io 部署ETH以太坊智能合约 如何在15分钟内创建你的加密货币

    一.概述 ETH 网络这里就不介绍了,这篇文章主要记录在以太坊主网和测试网络部署一个智能合约,也就是如何发币. 二.部署合约需要的生产工具      准备工具前,建议大家准备个VPN,因为会访问国外网 ...

随机推荐

  1. (转)MySQL 线程池内幕

    原文:http://blog.jobbole.com/109695/ http://mysqllover.com/?p=826 http://blog.csdn.net/hsuxu/article/d ...

  2. 编译vs下可调试的ffmpeg和x264

    以前随手记的笔记,翻出来,整理下哈 ffmpeg 在windows上的编译还是比较麻烦的,而且如果mingw-gcc编译的话,是无法在vs下调试的 所以以前刚开始玩ffmpeg的时候,费了一些功夫,用 ...

  3. Boosting和Bagging的异同

    二者都是集成学习算法,都是将多个弱学习器组合成强学习器的方法. 1.Bagging (主要关注降低方差) Bagging即套袋法,其算法过程如下: A)从原始样本集中抽取训练集.每轮从原始样本集中使用 ...

  4. koa2开发入门

    一.koa2入门 1.创建koa2工程 首先,我们创建一个目录hello-koa并作为工程目录用VS Code打开.然后,我们创建app.js,输入以下代码: // 导入koa,和koa 1.x不同, ...

  5. mysql中难以理解的sql

    工作中遇到这样的例子, CASE type WHEN 1 THEN '普通红包' WHEN 2 THEN '普通礼包加油卡' WHEN 3 THEN '优 惠码兑换加油卡' WHEN 4 THEN ' ...

  6. elasticsearch(一):JAVA api操作

    1.创建一个mavan项目,项目的以来配置如下. <?xml version="1.0" encoding="UTF-8"?> <projec ...

  7. ABP-JavaScript API (转)

    转自:http://www.cnblogs.com/zd1994/p/7689164.html 因经常使用,备查 一.AJAX 1,ABP采用的方式 ASP.NET Boilerplate通过用abp ...

  8. IE浏览器TAB清空设置

    1.Regedit 2.HKEY_USERS——搜索NewTabPage 3.清空除了Default之外的所有东西 4.也可以添加NumRows——TAB的行数 可以参考:http://tieba.b ...

  9. C# 数据库增加新表怎么更新ef

    找到dbmx文件,打开,右键,更新模型 也可以 右键从模型中删除 重新更新过来,感觉说了句废话 哈哈

  10. [转]使用C#进行图像处理的几种方法

    最近做监控图像由彩色变灰处理的时候发现图像处理过程中,很慢很慢代码如下: int Height = this.picInfo.Image.Height;                    int ...