一个基于Golang实现的以太坊智能合约开发框架
如果已经安装配置好golang
,可以使用golang
提供的工具快速安装
luren5@ubuntu:~$ go get github.com/luren5/mcat
luren5@ubuntu:~$ go install github.com/luren5/mcat
命令行下执行mcat
,打印如下信息则表示安装成功
luren5@ubuntu:~$ mcat
mcat is a development and testing framework for ethereum smart contract implemented through golang.
Usage:
mcat [command]
Available Commands:
compile compile contract
deploy deploy contract
help Help about any command
init init a new mc project
Flags:
--config string config file (default is $HOME/.mcat.yaml)
-h, --help help for mcat
-t, --toggle Help message for toggle
Use "mcat [command] --help" for more information about a command.
使用 mcat init
初始化一个新的项目,初始化项目前请确定已经安装git
,并且对当前目录有写权限,否则可能会造成初始化失败。
参数列表:
--project
项目名,也是项目的目录名
使用示例:
luren5@ubuntu:~$ mcat init --project=mcat-demo
Congratulations! You have succeed in initing a new mc project.
mcat.yaml
为项目配置文件,可以根据需求配置多种模式下的不同配置,默认有Development
和 Production
两种
ip: "localhost" # 节点ip
rpc_port: "8090" # 节点rpc_port
account: "0x6e423da3705daaa16a3cdef560293139bb277a3e" # 默认用来发交易的账户
password: "123456" # 默认账户的密码
使用mcat loadConfig
来加载配置文件
参数列表:
model
指定模式, 缺省情况下为Development
使用示例:
luren5@ubuntu:~/mcat-demo$ mcat loadConfig --model=Production
Succeed in loading mcat config.
使用mcat compile
命令编译合约源码,合约源码放在contracts
下, 比如示例项目中的contracts/Ballot.sol
参数列表:
sol
指定需要编译的合约文件名ext
当指定的合约源文件中有多个合约时,ext
参数可以排除不需要编译的合约, 多个用,
隔开,编译后的合约字节码及abi
存在在compiled
目录下
使用示例:
luren5@ubuntu:~/mcat-demo$ mcat compile --sol=Ballot.sol --exc=Test
Waiting for compiling contracts…
Succeed in compiling contract Ballot
使用mcat deploy命令部署合约
,部署合约前需要先启动节点,并且已完成配置加载
参数列表:
--contract
需要部署的合约
使用示例:
luren5@ubuntu:~/mcat-demo$ mcat deploy --contract=Ballot
Succeed in deploying contract Ballot, tx hash: 0xece1c87541d5cb16d81fa7fd055fa1bf259fac1e70221c2d5841145fed9e6474. Waiting for being mined…
Congratulations! tx has been mined, contract address: 0x0cf7ecedc79d011617da8144886c33caa799daa7
合约部署后,会返回交易的哈希值,mcat
会一直等待交易被打包,每5s检查一次,直到交易被打包,返回合约账户地址
调用合约方法前需要先编译部署,并得到合约账户的地址 参数列表:
--contract
被调用的合约名--addr
合约账户地址--function
被调用的合约方法名--params
参数列表,多个参数之间用&
隔开,如果是数组类型参数,成员之间用,
隔开 使用示例:
luren5@ubuntu:~/mcat-demo$ mcat call --contract Test2 --addr 0x23491c9c1b74bb15d988c495f945ec6e1b2720c2 --function cc --params 69
Succeed in calling cc, tx hash: 0xa15e4948a796136d9b461ce86b78f42b6a6ee13edd0aa00196a82e314641b63b
获取所连接节点的当前gas price
luren5@ubuntu:~/mcat-demo$ mcat gasPrice
The current gas price is 0x4a817c800