合约开发入门¶
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
在命令行执行:
git clone https://github.com/xuperchain/contract-sdk-cpp.git
cd contract-sdk-cpp/example/counter && xdev build
在命令行执行:
git clone https://github.com/xuperchain/contract-sdk-go.git
cd contract-sdk-go/example/counter && go build main.go
在命令行执行:
git clone https://github.com/xuperchain/contract-sdk-evm.git
cd contract-sdk-emv/example/counter && solc --abi --bin counter.sol
敬请期待
合约部署¶
xchain-cli native deploy –account XC1111111111111111@xuper -a ‘{“creator”:”XC1111111111111111@xuper”}’ –fee 15587517 –runtime go counter –cname counter
xchain-cli evm deploy –account XC1111111111111111@xuper -a ‘{“creator”:”XC1111111111111111@xuper”}’ –fee 15587517 –runtime go counter –cname counter
xchain-cli native deploy –account XC1111111111111111@xuper -a ‘{“creator”:”XC1111111111111111@xuper”}’ –fee 15587517 –runtime go counter –cname counter
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
命令行执行:
xchain-cli wasm invoke --method Increate -a '{"key":"xuper"}' counter --fee 100
xchain-cli wasm invoke --method Get -a '{"key":"xuper"}' counter --fee 100
命令行执行:
xchain-cli native invoke --method Increate -a '{"key":"xuper"}' counter --fee 100
xchain-cli native invoke --method Get -a '{"key":"xuper"}' counter --fee 100
命令行执行:
xchain-cli native invoke --method Increate -a '{"key":"xuper"}' counter --fee 100
xchain-cli evm invoke --abi --method Get -a '{"key":"xuper"}' counter --fee 100
敬请期待