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

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

作者: 为技术发烧 | 来源:发表于2018-03-20 19:19 被阅读55次

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

今天的讲解就到这里。

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/bbgbqftx.html