手把手教你玩eos:使用EOSFactory构建和部署智能合约

in #eos6 years ago (edited)

文章由EOS节点EOSWing(柚翼)首发于eoswing.io博客,内容将不定期更新,仅供学习交流之用。
手把手-公众号.png
0.引言
0.1教程概况
手把手教你玩eos系列教程,从最基础开始,一步一步教你学会用eos。比如发代币,开发DAPP等等。
本文是第十七篇。本篇教程讲解如何使用EOSFactory执行最简单的开发周期:创建新合约,编辑代码,构建合约,部署合约并与之交互。

0.2 学习内容
1.创建新合约
2.编译和部署合约
3.测试合约
4.修改代码,重新编译部署

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

1 创建新合约
1.1 进入环境
首先进入WSL中的ubuntu的命令行,然后运行Python CLI。
python3
进入Python shell后,导入EOSFactory库。
from eosfactory.eosf import *

1.2 使用模板创建新合约
从预定义模板创建新合约,第一个参数为合约名称,第二个参数为模板名称。
contract = ContractBuilder(project_from_template("foo_bar", template="01_hello_world"))
eost17-01.png
查看新建合约所在路径
contract.path()
eost17-02.png

1.3 编辑源代码
使用你常用的编辑器打开合约路径下的src/foo_bar.cpp。
我使用的是Notepad++编辑器。
这里我们简单修改一下。把权限验证的第16行代码注释掉。
eost17-03.png

2 编译和部署合约
2.1 编译合约
可以逐个编译生成ABI文件和WAST文件。
也可以用contract.build()一次编译两个文件。
这里我们使用逐个编译。
contract.build_abi()
contract.build_wast()
eost17-04.png

2.2 部署合约上链
初始化本地testnet
reset()
eost17-05.png
创建主账户master
create_master_account("master")
eost17-06.png
使用master主账号创建合约账户host
create_account("host", master)
eost17-07.png
将账户host和合约绑定。
contract = Contract(host, contract.path())
部署合约。
contract.deploy()
eost17-08.png

3 测试合约
3.1 创建测试账号
create_account("alice", master)
create_account("carol", master)
eost17-09.png

3.2 调用合约
contract.push_action("hi", {"user":alice}, permission=alice)
contract.push_action("hi", {"user":alice}, permission=carol)
eost17-10.png
因为我们注释掉了权限验证代码行。
所以,用alice签名还是用carol签名User为alice,都能顺利通过。

4 修改代码,重新编译部署
4.1 修改代码
打开合约路径下的src/foo_bar.cpp,这次将第16行的权限验证代码取消注释,使之生效。
eost17-11.png

4.2 重新编译合约
contract.build()
4.3 重新部署合约
contract.deploy()
4.4 测试合约
再次调用合约
contract.push_action("hi", {"user":alice}, permission=alice)
contract.push_action("hi", {"user":alice}, permission=carol)
eost17-12.png
会发现用alice签名User为alice通过。
而用carol签名User为alice,提示没有权限。
说明权限代码生效。

4.5 清理环境
关闭本地testnet
stop()
退出Python CLI
exit()

5 后记
延伸阅读
在本文的学习中如果遇到问题,欢迎留言或者在如下链接寻找解决方案:
使用EOSFactory构建和部署智能合约: ●http://eosfactory.io/build/html/tutorials/03.BuildingAndDeployingEOSContractsInEOSFactory.html

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

Sort:  

Congratulations @eoswing! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 20 posts. Your next target is to reach 30 posts.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.028
BTC 63177.41
ETH 2439.37
USDT 1.00
SBD 2.58