一、创建合约账户

# 16位数字组成的字符串
./xchain-cli account new --account 1111111111111111 

# 增加fee参数,重新执行
./xchain-cli account new --account 1111111111111111 --fee 1001

命令运行后就会调用xchain的系统合约功能 NewAccount 创建一个名为 XC1111111111111111@xuper (如果链名字为xuper)的账号

给该账户充钱,以便对后面的合约进行部署

./xchain-cli transfer --to XC1111111111111111@xuper --amount 100000000000 --keys data/keys/

查询余额

./xchain-cli account balance XC1111111111111111@xuper -H 127.0.0.1:37101

二、开启evm合约功能

1. 修改每个节点的conf/xchain.yaml

确保evm合约功能开启

vim conf/xchain.yaml

2. 重启每个节点

暂时没有停止命令,所以使用

ps -ef | grep xchain

查找到进程号,然后kill。

本文直接采用重启机器。

然后,启动每个节点

nohup ./xchain &

等一会确认每个节点是否连上

./xchain-cli status -H 192.168.92.129:37101

三、编译

1. 安装solc编译器

请参见https://solidity-cn.readthedocs.io/zh/latest/installing-solidity.html。

sudo snap install solc
solc --version
// solc, the solidity compiler commandline interface
// Version: 0.5.9+commit.c68bc34e.Darwin.appleclang

2. 编写智能合约

我们以contractsdk/evm/example中的counter合约为例

pragma solidity >=0.0.0;contract Counter {address owner;mapping (string => uint256) values;constructor() public{owner = msg.sender;}function increase(string memory key) public payable{values[key] = values[key] + 1;}function get(string memory key) view public returns (uint) {return values[key];}function getOwner() view public returns (address) {return owner;}}

3. 编译合约

cd ../core/contractsdk/evm/example/counter
// 通过solc编译合约源码
solc --bin --abi Counter.sol -o .
// 合约二进制文件和abi文件分别存放在当前目录下,Counter.bin和Counter.abi

四、部署合约

cd ~/xuper/xuperchain/output
./xchain-cli evm deploy --account XC1111111111111111@xuper --cname counterevm  --fee 5200000 ../core/contractsdk/evm/example/counter/Counter.bin --abi ../core/contractsdk/evm/example/counter/Counter.abi
  • --abi Counter.abi :表示部署需要使用的abi文件,用于合约方法参数编解码

  • ``-a ``:如果合约需要构造函数,通过-a进行指定。与c++、golang等合约的部署和调用方式相同。

counterevm为自定义的合约的名字,后面查询时也是使用这个名字

五、合约调用

调用solidity合约。通过合约名直接发起合约调用和查询。

# 调用solidity合约,increase方法,counterevm为合约名
./xchain-cli evm invoke --method increase -a '{"key":"test"}' counterevm --fee 22787517# 调用solidity合约,get方法,counterevm为合约名
./xchain-cli evm query --method get -a '{"key":"test"}' counterevm
# 调用结果,其中0表示返回值的次序,1为返回值
# key,value: 0 1

参考

1. 合约账号 — xuperchain-doc 文档

区块链 xuperchain 命令行 部署使用EVM solidity合约 教程相关推荐

  1. 10.区块链系列之hardhat部署抵押赎回Fund合约

    本文继续通过笔者学习到的抵押赎回智能合约Fund来进一步学习solidity语言,加深对开发的理解,其中通过storage节省gas是需要重点实践的,毕竟涉及到资产 代码已提交至https://git ...

  2. 万字解析——区块链hyperledger fabric2.2部署实战教程

    导航 一.前言 二.hyperledger fabric介绍 三.测试网络示例 3.1 搭建开发环境 3.2 安装示例.二进制和 Docker 镜像 3.3 使用Fabric测试网络 3.4 使用认证 ...

  3. 百度区块链 XuperChain开发教程(第二部分)

    百度区块链 XuperChain开发教程(第二部分) 第一部分编译完成后,现在开始进入测试部分: $ cd output/ $ ./xchain-cli createChain msg="c ...

  4. 交通运输、房地产——区块链在住行方面的独特应用 | 链塔区块链产业年鉴精选...

    "距离链塔年会仅剩5天,扫码立即报名" 实体经济,指一个国家生产的商品价值总量,包括物质的.精神的产品和服务的生产.流通等经济活动.实体经济的范畴既包括农业.工业.交通通信业.商业 ...

  5. 区块链技术最佳的监管方式是智能合约监管智能合约

    区块链最新消息 1.在国内首部<区块链安全生存指南>发布 最新消息:比特大.长亭科技和ConsenSys陆联手发布了全国首部<区块链安全生存指南>.该指南围绕区块链技术安全,对 ...

  6. 视频教程-区块链项目:基于以太坊开发拍卖系统DApp教程(含资料)-区块链

    区块链项目:基于以太坊开发拍卖系统DApp教程(含资料) 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动 ...

  7. GRE:区块链将引领传统保险走向风险智能合约的时代变革

    点击上方 "蓝色字" 可关注我们! 编辑:铅笔盒 北京时间3月28日,每月两次的行业盛会[ ICT创新创业"深度脑洞聚会"]在上海举行,目前已举办235期.历时 ...

  8. 通过kubeless命令行部署Kyma Lambda Function

    除了在Kyma的浏览器控制台里部署Lambda Function外,也可以使用Kubeless命令行: kubeless function deploy hello --label app=hello ...

  9. 区块链之开发命令行操作模块

    文章目录 功能介绍 go语言中flag用法简介 项目命令行具体实现 链接: 区块链项目github地址 项目目前进度: 功能介绍 利用命令行操作区块链相较于图形用户界面来说,编写代码简单,同时也可以实 ...

  10. 区块链学习(8) EOS环境安装和智能合约部署实战(绝对干货!)

    硬件配置 操作系统要求 1. Amazon 2017.09 and higher 2. Centos 7 3. Fedora 25 and higher (Fedora 27 recommended) ...

最新文章

  1. poj 2337 Catenyms 【欧拉路径】
  2. idea package自动生成_懒人必备,IntelliJ IDEA中代码一键生成
  3. 启动与停止mysql服务的命令
  4. npm run report,打包,包资源 ,vue大小,vue资源大小
  5. mysql c null_MySQL中NULL字段的比较问题
  6. 防SQL注入代码(ASP版)
  7. mysql锁的基本类型_Mysql的锁
  8. Java NIO编程基础
  9. 推荐系统评价指标综述
  10. Js + Css的msn式的popup提示窗口的实现 (转自:月牙儿)
  11. 『Linux』ArchLinux与VirtualBox的结合「二」
  12. csrf跨站请求伪造问题解决
  13. 终端运行python报联网_终端里为什么无法运行python
  14. JavaScript的==和Java的==比较
  15. es统计有多少个分组_ElasticSearch 分组查询的几个例子
  16. linux php-cli,php cli - shell语言的扩展利器 - Linux进阶, PHP技术 - freemouse-笔记-感悟-成长...
  17. 基于Java的线上诊疗系统毕业设计源码1617411
  18. 幼师资格证综合素质计算机知识点,教师资格证 | 综合素质基本能力13个必备知识点...
  19. 丧心病狂的外挂:透视穿墙,带老板坐飞机,打不过就炸房
  20. [生存志] 第145节 班固著汉书

热门文章

  1. ccflow 驰骋工作流引擎的共享任务,应用背景,设置,设计,sdk接口
  2. 自绘GroupBox控件
  3. cisco帧中继实验
  4. MyBatis自动生成步骤
  5. P2661 信息传递
  6. CSRmesh Application
  7. python入门书?
  8. Win7(x64)升级到Win10
  9. PMP 第十章 项目沟通管理
  10. linux怎么启动程序路径,linux查找启动程序的路径