Skip to content
/ mcat Public

a framework for developing ethereum smart contracts

Notifications You must be signed in to change notification settings

luren5/mcat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mcat

一个基于Golang实现的以太坊智能合约开发框架

安装

Ubuntu

如果已经安装配置好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为项目配置文件,可以根据需求配置多种模式下的不同配置,默认有DevelopmentProduction 两种

    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

获取gasPirce

获取所连接节点的当前gas price

luren5@ubuntu:~/mcat-demo$ mcat gasPrice
The current gas price is 0x4a817c800

Releases

No releases published

Packages

No packages published

Languages