EOS开发 第二篇 创建一个currency智能合约实现转账的功能

EOS的测试网络已经具备了上传和运行智能合约的能力,下面我们参照github上的说明一步一步建立一个示例的智能合约。首先进入eosd目录,启动输入命令:./eosd,使能够产生区块。

测试EOS客户端是否可用:

区块运行起来后就可以使用eos的客户端eosc进行一些操作了,比如说查看区块链的信息

先进入eos/build/progrems/eosc目录,执行以下命令,并得到如下的结果,结果中就是区块的信息:./eosc get info

创建一个钱包并导入密钥:

如下命令: ./eosc wallet create

任何智能合约都要与一个账户关联,因此需要先创建一个钱包,执行该条命令会输出一个密码,需要保持下来,该密码是用来解锁钱包的,如图生产的密码为:PW5Jr57KkkuL9upnncrRUVtDVGUnq8o21SYhqsMm21GLjBvfgpL4t

这里仅仅是做的测试网络,inita账户的私钥导入。这个账户在genesis.json有定义,就会有权限发送API命令。该账户的私钥可以在config.ini文件中找到。config.ini文件在上一篇生成的data-dir中。

为currency创建一个账户

运行如下安排:./eosc create key #owner_key

                        ./eosc create key #active_key

先使用以下命令创建两把公私钥对,后续会将这两对密钥分配为owner_key和active_key。

目前仅仅是两个密钥而已,没有跟任何账户关联。注意:这两个密钥要保存下来,后面要用到。

执行如下的命令:

./eosc create account inita currency EOS5rtK7P1oc4NhJ5pK5FExbD8nVKJwiuF99HsCpujcaTN8NqS215 EOS87iB1zUi8dq4zPoSb3sy3B2CX4NjBEGEQ9fhqKrX8BmphxHQfM6

运行结果如下:

使用如下命令检查是否成功:

root@ubuntu:/home/devSoft/eos/build/programs/eosc# ./eosc get account currency

返回:

将active_key导入的钱包,还记得我们产生的两个公私钥对吗?将active_key私钥写到参数里面:

./eosc wallet import 5JT7PUxHN7UV7oFLmSBZPvqty8ixYRdJcu9zXmcxgV9wBRDAD3y


将currency合约上传到区块链

在上传之前先确认一下当前的合约是否已经在区块链上了./eosc get code currency

上面返回结果的是为0000000*,说明合约还未上传到区块链上,上次合约的命令如下:./eosc set contract currency ../../contracts/currency/currency.wast ../../contracts/currency/currency.abi

再次确认合约是否在区块链上:./eosc get code currency

上面返回的结果,说明合约已经在区块链上了,使用命令确认currency合约是否有余额。

命令如下:./eosc get table currency currency account

返回结果如下:

使用currency合约转移资金

任何人都可以在任何时间发送任何消息到任何合约上,但是合约可以拒绝那些没有给出任何权限的消息。消息不能被随意发送,而是需要带有权限等级一个或多个账号来发送。下面的命令说明一个“transfer”的消息是如何发送给currency合约的。

'{"from":"currency","to":"inita","quantity":50}' #从currency到inita账号,金额是50元

使用如下命令进行资金的转移:

./eosc push message currency transfer'{"from":"currency","to":"inita","quantity":50}'--scope currency,inita --permission currency@active

返回:


假如上述命令,你得到了一个错误的返回

An error occurred while submitting the transaction for this command!

The transaction requires permissions that could not be authorized by the wallet.

Missing authrizations:

- currency@active

Please make sure the proper keys are imported into an unlocked wallet and try again!

需要你打开钱包并解锁,解锁时会让你输入密码,就是我们最初产生钱包时的密码。然后重新执行上面的命令。

./eosc wallet open

./eosc wallet unlock

查询两个账户的余额

命令如下:

1》》》./eosc get table inita currency account


2》》》./eosc get table currency currency account

今天的讲解就到这里。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 账户与钱包1.1 创造并管理钱包1.2 生成EOS Keys并导入1.3 备份您的钱包1.4 创建账户 2....
    cenkai88阅读 4,014评论 1 7
  • 1 EOS智能合约的介绍1.1 所需背景知识1.2 EOS智能合约基础知识1.3 技术局限性 2 智能合约文件2....
    cenkai88阅读 30,602评论 5 28
  • 你不懂我,我不怪你。你不懂我,请不要轻易评判我的人生。――某年某月见于木子的某一篇日记! 木子跟所有女孩一样,有十...
    Eli可乐阅读 357评论 0 0
  • 1.1-一句话精简表达什么是CoreData? CoreData是iOS5之后苹果原生的用于对象化管理数据并且持久...
    uproject阅读 1,177评论 0 1
  • 在自我怀疑和焦虑中前行,现实的残酷赤裸裸地呈现在我面前。在现实目前,有尊严地生存下去好像是件很困难的事情。拿着一手...
    J的诗意人生阅读 475评论 0 50