我是此系列教程作者,eoswing团队肖南飞,区块链技术开发人员。
手把手教你玩eos系列教程,从最基础开始,一步一步教你学会用eos。比如发代币,开发DAPP等等。
本文是第十七篇。本篇教程讲解如何使用EOSFactory执行最简单的开发周期:创建新合约,编辑代码,构建合约,部署合约并与之交互。
- 创建新合约
- 编译和部署合约
- 测试合约
- 修改代码,重新编译部署
- 笔记本电脑
- 操作系统:Windows 10
首先进入WSL中的ubuntu的命令行,然后运行Python CLI。
python3进入Python shell后,导入EOSFactory库。
from eosfactory.eosf import *从预定义模板创建新合约,第一个参数为合约名称,第二个参数为模板名称。
contract = ContractBuilder(project_from_template("foo_bar", template="01_hello_world"))查看新建合约所在路径
contract.path()使用你常用的编辑器打开合约路径下的src/foo_bar.cpp。
我使用的是Notepad++编辑器。
这里我们简单修改一下。把权限验证的第16行代码注释掉。
可以逐个编译生成ABI文件和WAST文件。
也可以用contract.build()一次编译两个文件。
这里我们使用逐个编译。
contract.build_abi()
contract.build_wast()初始化本地testnet
reset()创建主账户master
create_master_account("master")使用master主账号创建合约账户host
create_account("host", master)将账户host和合约绑定。
contract = Contract(host, contract.path())部署合约。
contract.deploy() create_account("alice", master)
create_account("carol", master) contract.push_action("hi", {"user":alice}, permission=alice)
contract.push_action("hi", {"user":alice}, permission=carol)因为我们注释掉了权限验证代码行。
所以,用alice签名还是用carol签名User为alice,都能顺利通过。
打开合约路径下的src/foo_bar.cpp,这次将第16行的权限验证代码取消注释,使之生效。
contract.build() contract.deploy()再次调用合约
contract.push_action("hi", {"user":alice}, permission=alice)
contract.push_action("hi", {"user":alice}, permission=carol)会发现用alice签名User为alice通过。
而用carol签名User为alice,提示没有权限。
说明权限代码生效。
关闭本地testnet
stop()退出Python CLI
exit()在本文的学习中如果遇到问题,欢迎留言或者在如下链接寻找解决方案:
- 使用EOSFactory构建和部署智能合约: http://eosfactory.io/build/html/tutorials/03.BuildingAndDeployingEOSContractsInEOSFactory.html
如果觉得这系列教程有点意思,请投票给柚翼节点(eoswingdotio)。您的投票是本教程持续更新的动力源泉,谢谢。











