ETH智能合约测试
ETH的智能合约一般用Solidity语言编写,懂点基本solidity语法会更好地测试
测试中需要用到的工具:
一份智能合约
Remix(一个在线IDE,用来编译、编辑、部署智能合约,需要翻墙才能使用)点我跳转到Remix
ETH测试币-领取地址
ETH测试网络的区块浏览器
ETH钱包MetaMask(Chrome插件)
下图为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智能合约测试的更多相关文章
- Go语言打造以太坊智能合约测试框架(level1)
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- Go语言打造以太坊智能合约测试框架(level2)
传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. ...
- day02 智能合约
上午 1>部署智能合约网络 语法 require 2>利用第三方的节点 同步到以太坊 3>智能合约部署的步骤: 1.查看区块 2.发布合约 deploy后台经历的事情:就是部署合约的 ...
- 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发
智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...
- 智能合约bug以及修改方案
截取两篇文章:第一遍文章说的是智能合约能不能修改的问题: ETC转到ETH地址以及转币进ETH智能合约账户能不能转出来? 第0章 引言 如果ETC充值到了ETH地址上,能找回来吗?答案是不一定. ET ...
- 用Solidity在Truffle上构建一个HelloWorld智能合约
原文地址:石匠的blog Truffle的环境安装在前文已经整理,这次用Solidity在Truffle写一个HelloWorld以太坊智能合约,并在testrpc上进行测试.当前的软件版本信息如下: ...
- [币严区块链]简单易懂的以太坊(ETH)智能合约开发入门教程
以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用 ...
- 如何在Etherscan.io 部署ETH以太坊智能合约 如何在15分钟内创建你的加密货币
一.概述 ETH 网络这里就不介绍了,这篇文章主要记录在以太坊主网和测试网络部署一个智能合约,也就是如何发币. 二.部署合约需要的生产工具 准备工具前,建议大家准备个VPN,因为会访问国外网 ...
随机推荐
- Distributed PostgreSQL on a Google Spanner Architecture – Query Layer
转自:https://blog.yugabyte.com/distributed-postgresql-on-a-google-spanner-architecture-query-layer/ Ou ...
- C++的开源跨平台日志库glog学习研究(一)
作为C++领域中为数不多的好用.高效的.跨平台的日志工具,Google的开源日志库glog也算是凤毛麟角了.glog 是一个C++实现的应用级日志记录框架,提供了C++风格的流操作. 恰巧趁着五一我也 ...
- java数据结构之(堆)栈
(堆)栈概述栈是一种特殊的线性表,是操作受限的线性表栈的定义和特点•定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈•特点:先进后出(FILO)或后进先出(L ...
- 各种”xxx“ native gem required installed build tools 报错
报错情况:(类似毛病 提示native gem require installed builld tools的解决方法是一样的)) 解决方法:http://rubyinstaller.org/down ...
- Promise对象的含义和基本用法
1.Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理更强大. 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件 (通常是一 ...
- 【Express系列】第4篇——使用session
session 在 web 应用中使用很普遍,不过在 node 上面,要用 session 还真得折腾一番才行. 从加入中间件,到 session 的写入.清除,当时是遇到了不少坑的. 当然也可能是我 ...
- django中有外键关系两张表的相互查找方法
两张通过外键联系的表,如何在一张表上根据另一张表上的属性查找满足条件的对象集? 1 平常查找表中数据的条件是python中已有的数据类型,通过名字可以直接查找.如果条件是表中外键列所对应表的某一列, ...
- [经典]网关,DNS,DHCP三者关系详解
什么叫网关的精解 Sample Text转自(协议分析论坛)计算机主机网关的作用是什么?假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的 ...
- [转载]常见的移动端H5页面开发遇到的坑和解决办法
转过来,平时看看.虽然还有很多问题至今无解.比如:华为麒麟950的P8和meta打开我们的应用首页经常偶发白屏.!! 1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是 ...
- Linux skbuff注释笔记
SKB结构定义 /usr/src/linux/include/linux/skbuff.h sk_buff_head: struct sk_buff_head { //SKB的头结点 /* The ...