EOSIO开发(二)运行合约样例

本文将介绍如何使用EOSIO自带的合约”Currency”,实现创建钱包-创建账户-执行合约 的完整流程

前言

本文将介绍如何在Docker环境下,使用系统自带的合约”Currency”,实现 创建钱包 - 创建账户 - 执行合约 的完整流程

在学习文章内容之前,建议先了解EOS中Account、Permission、Active以及Action的基本概念,文末有相关的参考资料。

由于本文是在Docker环境下开发,因此部分命令与官方文档不一致(主要是文件目录地址),但是执行步骤是一致的,使用本地环境的同学可以参考官方文档的命令。

执行步骤

  • 启动nodeos节点
  • 创建钱包
  • 加载Bios合约
  • 创建currency账户
  • 上传currency账户到区块链
  • 执行智能合约

启动nodeos节点

下载eosio/eos镜像

docker pull eosio/eos

启动nodeos节点

docker run --name nodeos -p 8888:8888 -p 9876:9876 -t eosio/eos /opt/eosio/bin/nodeosd.sh arg1 arg2

进入nodeos节点调试界面,后续的命令都在该界面中执行。

docker exec -it nodeos /bin/bash

创建钱包

通过cleos wallet create命令创建钱包。

cleos wallet create

创建成功后,会生成一个随机密码。

 20180413004

加载Bios合约

将Bios合约关联到eosio账户上,它将使eosio账户获得超级管理员权限,能够直接操控其它账户的资源以及执行特殊API。

cleos set contract eosio ../contracts/eosio.bios -p 

创建currency账户

为账户创建OwnerKey和ActiveKey,注意 create key 命令需要执行两次。

cleos create key # OwnerKey 
cleos create key # ActiveKey

这两次命令将生成两组private key和public key,分别对应OwnerKey和ActiveKey。

OwnerKey 20180413005

ActiveKey 20180413006

分别将两组private key导入钱包

cleos wallet import <private-OwnerKey>

cleos wallet import <private-ActiveKey>

20180413007

通过 cleos create account 命令创建 currency 账户,并由eosio 账户为其授权。

cleos create account eosio currency \<public-OwnerKey> \<public-ActiveKey> 

20180413008

验证currency账户是否创建成功。

cleos get account currency

看到下面的账户信息,则说明创建成功。

 20180413009

上传currency账户到区块链

上传之前,验证区块链中是否已经存在currency账户

cleos get code currency

如果返回hash code都为0,则说明账户不存在

屏幕快照 2018-04-14 上午11.00.47

上传currency账户

cleos set contract currency contracts/currency

屏幕快照 2018-04-14 上午11.01.16

再次验证currency账户是否已经存在

cleos get code currency

hash code不为0,上传成功。

 屏幕快照 2018-04-14 上午11.01.24

执行currency合约的create action与issue action,

cleos push action currency create '{"issuer":"currency","maximum_supply":"1000000.0000 CUR","can_freeze":"0","can_recall":"0","can_whitelist":"0"}' --permission currency@active 
cleos push action currency issue '{"to":"currency","quantity":"1000.0000 CUR","memo":""}' --permission currency@active

执行完毕后,验证currency账户中的余额(balance)是否已经正确初始化。

cleos get table currency currency accounts

可以看到balance的值为1000.0000 CUR,初始化成功。

 屏幕快照 2018-04-14 上午11.03.12

执行智能合约

现在我们通过智能合约来执行一次转账操作,从currency账户转账20.0000 CUR到eosio账户。

转账之前看看两个账户的余额。

cleos get table currency currency accounts 
cleos get table currency eosio accounts

currency账户的余额(balance)为1000.0000 CUR,而eosio账户没有余额。

 屏幕快照 2018-04-14 上午11.06.34

开始转账。

cleos push action currency transfer '{"from":"currency","to":"eosio","quantity":"20.0000 CUR","memo":"my first transfer"}' --permission currency@active

转账完成后,再次查询余额,currency账户是980,eosio账户则是20,转账成功。

屏幕快照 2018-04-14 上午11.08.07

至此,整个流程结束。

小结

通过官方提供的currency合约,我们体验了 创建钱包 - 创建账户 - 执行合约 的整个流程,这样可以让大家对EOS合约的执行步骤有一个初步印象。

至于在执行过程当中,涉及到一些更细节的问题,比如何编写智能合约,cleos命令的具体语法以及作用,如果暂时不明白也没有关系,后续的文章我们再一步步的深入学习。

转自:https://www.taowong.com/blog/2018/06/27/eos-develop-2.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值