一、使用 Docker 镜像进行合约开发
ChainMaker 已经将容器发布至 docker hub。
1. 拉取镜像
docker pull chainmakerofficial/chainmaker-go-contract:2.1.0
请指定你本机的工作目录 $WORK_DIR,例如 /data/workspace/contract,挂载到 docker 容器中以方便后续进行必要的一些文件拷贝。
docker run -it –name chainmaker-go-contract -v $WORK_DIR:/home chainmakerofficial/chainmaker-go-contract:2.1.0 bash# 或者先后台启动docker run -d –name chainmaker-go-contract -v $WORK_DIR:/home chainmakerofficial/chainmaker-go-contract:2.1.0 bash -c "while true; do echo hello world; sleep 5;done"# 再进入容器docker exec -it chainmaker-go-contract bash
2. 编译合约
cd /home/# 解压缩合约SDK源码tar xvf /data/contract_go_template.tar.gzcd contract_tinygo# 编译main.go合约sh build.sh
生成合约的字节码文件位置如下:
/home/contract_tinygo/chainmaker-contract-go.wasm
chainmaker-contract-go.wasm 文件可在 TBaaS 控制台 上传并部署。
3. 合约开发框架描述
解压缩 contract_go_template.tar.gz 后,文件描述如下:
/home/contract_tinygo# ls -ltotal 64-rw-rw-r– 1 1000 1000 73 Jul 2 12:45 build.sh # 编译脚本-rw-rw-r– 1 1000 1000 4306 Jul 2 12:44 bulletproofs.go # 合约SDK基于bulletproofs的范围证明接口实现-rwxr-xr-x 1 root root 36276 Jul 6 07:22 chainmaker-contract-go.wasm # 编译成功后的wasm文件-rw-rw-r– 1 1000 1000 19834 Jul 2 12:44 chainmaker.go # 合约SDK主要接口及实现-rw-rw-r– 1 1000 1000 4378 Jul 2 12:44 chainmaker_rs.go # 合约SDK sql接口实现-rw-rw-r– 1 1000 1000 11761 May 24 13:27 easycodec.go # 序列化工具类-rw-rw-r– 1 1000 1000 3655 Jul 2 12:44 main.go # 存证示例代码-rw-rw-r– 1 1000 1000 2149 Jul 2 12:44 paillier.go # 合约SDK基于paillier的半同态运算接口实现
用户使用 Go(TinyGo) 编写智能合约后,可以把源代码更新到 main.go 文件中并重新编译,可得到新的智能合约的字节码,并前往 TBaaS 控制台 上传并部署。更多关于使用 Go(TinyGo) 开发长安链智能合约的详情,可参考长安链页面 使用 Go(TinyGo)进行智能合约开发。