合约开发入门

xuperchain 支持使用 java go c++ solidity 等语言进行合约开发,我们以 golang 和 java 的 native 合约, c++ 的 wasm 合约以及 solidity 的 evm 合约为例展示合约的基本操作。完整的语言-合约相容矩阵见 合约开发详解

开启运行时支持(可选)

XuperChain 默认情况下只启用了 wasm 合约,如果想要尝试 evm 合约和 native 合约,需要修改 conf.xchain.yml 设置 native 和 evm 的 enable 字段为 true,然后重启节点程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
evm:
    driver: "evm"
    enable: false

# 管理native合约的配置
native:
    enable: false

    # docker相关配置
    docker:
        enable: false
        # 合约运行的镜像名字
        imageName: "docker.io/centos:7.5.1804"
        # cpu核数限制,可以为小数
        cpus: 1
        # 内存大小限制
        memory: "1G"

编译合约

在命令行执行:

git clone https://github.com/xuperchain/contract-sdk-java.git
cd contract-sdk-java/example/counter && mvn package

合约部署

xchain-cli native deploy –account XC1111111111111111@xuper -a ‘{“creator”:”XC1111111111111111@xuper”}’ –fee 15587517 –runtime go counter –cname counter

合约调用

命令行执行:

xchain-cli native invoke --method Increate -a '{"key":"xuper"}' counter --fee 100
xchain-cli native invoke --method Get counter --fee 100