腾讯云区块链服务平台 TBaaS 智能合约开发(TinyGo)

本章节主要描述使用 Go 进行 ChainMaker 合约编写的方法,主要面向于使用 Go 进行 ChainMaker 的合约开发的开发者。为了最小化 wasm 文件尺寸,应使用 TinyGO 编译器。

相关产品
腾讯云区块链服务平台 TBaaS 产品页,含版本规格、价格与购买入口。

一、使用 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)进行智能合约开发。

赞 (0)
上一篇 4天前
下一篇 4天前