手把手教你玩eos:使用EOSFactory与EOS交互

in #eos5 years ago

文章由EOS节点EOSWing(柚翼)首发于eoswing.io博客,内容将不定期更新,仅供学习交流之用。
手把手-公众号.png

0.引言
0.1教程概况
手把手教你玩eos系列教程,从最基础开始,一步一步教你学会用eos。比如发代币,开发DAPP等等。
本文是第十六篇。本篇教程讲解如何使用EOSFactory及其Python CLI轻松直观地与EOS进行交互。

0.2 学习内容
启动本地测试节点
管理账户和智能合约
运行测试合约
清理环境

0.3 机器环境
●笔记本电脑
●操作系统:Windows 10

1 启动本地测试节点
1.1 进入环境
首先进入WSL中的ubuntu的命令行,然后运行Python CLI。
Python3
eost16-01.png
进入Python shell后,导入EOSFactory库。
from eosfactory.eosf import *

1.2 启动本地测试节点(testnet)
启动单节点本地testnet。
reset()
eost16-02.png
获取testnet当前状态的信息。
info()
eost16-03.png

1.3 管理本地testnet
要停止当前的testnet。
stop()
eost16-04.png
要继续运行当前的testnet。
resume()
eost16-05.png
停止当前的testnet并启动一个新的。
reset()
eost16-06.png

2 管理账户和智能合约
2.1 创建主账户
首先,确保本地testnet正在运行。
info()查看,没有就reset()启动一个。
创建一个可以创建其他帐户的主帐户,名称为master。当然,你也可以取其他名称:
create_master_account("master")
eost16-07.png
注意:名称master只是全局变量的名称,而不是区块链上创建的帐户的实际名称。
您无需担心锁定或解锁钱包,管理其密码或将私钥导入其中。所有这一切都由EOSFactory来处理。
查看master主账户信息。
master.info()
eost16-08.png

2.2 创建子账户
使用master创建测试帐户:
create_account("charlie", master)
eost16-09.png
查看账户信息:
charlie.info()
eost16-10.png
和上面的master一样,名称charlie只是全局变量的名称,而不是区块链上创建的帐户的实际名称。
如果你想命名EOS链上的账号名,可以使用参数account_name。
下面创建一个命名链上账号名的账户charlie2。
create_account("charlie2", master, account_name="charlie22eos")
eost16-11.png
查看charlie2的账户信息:
charlie2.info()
eost16-12.png

2.3 管理智能合约
定义contract
创建一个部署智能合约用的账户host
create_account("host", master)
eost16-13.png
定义contract,将账户和智能合约所在文件夹绑定。
contract = Contract(host, "/mnt/f/EOS/eosfactory/contracts/02_eosio_token")
构建合约
contract.build()
eost16-14.png
部署合约
可以使用code()来检查合约。首先我们看下没有部署合约的code()提示。
contract.code()
eost16-15.png
部署合约:
contract.deploy()
eost16-16.png
再次查看合约hash:
eost16-17.png

3 运行测试合约
3.1 创建代币
首先创建10亿的EOS代币。
host.push_action(
"create",
{
"issuer": master,
"maximum_supply": "1000000000.0000 EOS",
"can_freeze": "0",
"can_recall": "0",
"can_whitelist": "0"
}, [master, host])
eost16-18.png
注意:该push_action方法有三个参数:操作的名称,JSON格式的操作参数以及需要权限的帐户。
注意:如果您想要在不广播的情况下查看实际交易,请使用show_action方法代替push_action。

3.2 发放代币
发给charlie代币100EOS。
host.push_action(
"issue",
{
"to": charlie, "quantity": "100.0000 EOS", "memo": ""
},
master)
eost16-19.png
查看下charlie当前账户信息
host.table("accounts", charlie)
eost16-20.png

3.3 代币转账
现在charlie的代币转账25EOS给charlie2。
host.push_action(
"transfer",
{
"from": charlie, "to": charlie2,
"quantity": "25.0000 EOS", "memo":""
},
charlie)
eost16-21.png
再次查看charlie账户信息
host.table("accounts", charlie)
eost16-22.png
查看charlie2账户信息
host.table("accounts", charlie2)
eost16-23.png
可以看出,已经转账到位。

4 清理环境
4.1 关闭本地testnet
stop()
eost16-24.png

4.2 退出Python CLI
exit()
eost16-25.png

5 后记
延伸阅读
在本文的学习中如果遇到问题,欢迎留言或者在如下链接寻找解决方案:
●使用EOSFactory与EOS交互: http://eosfactory.io/build/html/tutorials/02.InteractingWithEOSContractsInEOSFactory.html

如果觉得这一系列教程有点意思,请投票给柚翼节点(eoswingdotio)。您的投票是本教程持续更新的动力源泉,谢谢。

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64678.67
ETH 3086.68
USDT 1.00
SBD 3.87