WASM智能合约开发指南

技术文档网 2021-06-24

WASM智能合约开发指南


1. 系统软件需求

Ubuntu 14.x/Ubuntu 16.x/Ubuntu 18.x/

2. 安装Docker(跳过此步骤如果你安装了docker)

https://docs.docker.com/install/linux/docker-ce/ubuntu/

3. 拉取镜像

docker pull wicc/waykicoind:test

4. 运行容器

 docker run --name waykicoind-wasm \
  -p 6968:6968 -p 18920:18920 \
  -v `pwd`/conf/WaykiChain.conf:/root/.WaykiChain/WaykiChain.conf \
  -v `pwd`/data:/root/.WaykiChain/regtest \
  -v `pwd`/wasm:/tmp/wasm \
  -v `pwd`/lua:/tmp/lua \
  -d  wicc/waykicoind:test sh -c "./coind -contracts_console"
Args description
pwd/conf/WaykiChain.conf config file
pwd/data data directory
pwd/wasm wasm contract file
pwd/lua lua contract file
sh -c -contracts_console to cover the containner default start CMD - "./coind",can output the debug info of wasm

5. 持续查看容器内的日志输出方式

 docker logs -f waykicoind-wasm

6. 更新coind时的操作

 docker cp “coind路径” waykicoind-wasm:/opt/wicc/

 docker restart waykicoind-wasm

7. 编译源代码

git clone --recurse-submodules https://github.com/xiaoyu1998/wasm.cdt.git
cd wasm.cdt
./build.sh
sudo ./install.sh

8. 编写合约代码

cd examples/hello/src
vim hello.cpp

9. Build wasm from c++ project

cd examples/hello
mkdir build
cd build
cmake ..
make

10. 把wasm的合约代码复制到容器的挂载目录里

cp hello.* /root/datadir/

11. 生成一个新地址

 docker exec -it waykicoind-wasm bash
./coind -datadir=. getnewaddr

12. 转账获得提交交易所必须的矿工费

./coind -datadir=. submitsendtx 0-1 wN8JrLk4u8EmYBGs9PqoBnahkjSJXnTY7b "WICC:1000:wi" "WICC:100000:sawi" "Hello, WaykiChain!”

13. 注册NickID(支持免激活)

./coind -datadir=. submitnickidregistertx "wN8JrLk4u8EmYBGs9PqoBnahkjSJXnTY7b" alicexxxxxxx 1000000

14. 部署合约

./coind -datadir=. submitwasmcontractdeploytx "alicexxxxxxx" "alicexxxxxxx"  "/data/datadir/hello.wasm" "/data/datadir/hello.abi" 110000000
Args description example
sender 发送者 alicexxxxxxx
contract 合约 alicexxxxxxx
wasm_code 合约代码 /data/datadir/hello.wasm
wasm_abi abi文件 /data/datadir/hello.abi

15. 调用合约

./coind -datadir=. submitwasmcontractcalltx "alicexxxxxxx" "alicexxxxxxx" "hi" '["tiger"]'

16. 获取账户信息

./coind -datadir=. getaccountinfo alicexxxxxxx

相关文章

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod

随机推荐

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod