从零学本体dApp开发(17):本体分片技术理解与实战
原创 | 工匠 (来自本体社区的技术人员)
---------------
写在前面
最近在利用业余时间学习本体的开发。我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通过笔记的共享,能使本体后来的开发者少走弯路。
由于是初学者,学习本体开发的过程中遇到了很多问题,在此,特别感谢本体社区的各位老师(宏雷、楚笙、Mickey、雪飞的逆袭、Andy季、周佩文等)耐心地为我解答各种各样的问题,本体有你们,真好!
学习本篇的目的:
在本体主网上线一周年纪念日之际,经过研发人员半年多来紧锣密鼓的筹备与反复测试,本体分片测试网终于正式上线,开发者们可以开始体验和测试了。
采用了分片技术的智能合约就是分片合约,官方介绍分片合约的调用由两种方式:一是使用本体CLI命令行,另一个是 ontology-go-sdk。
这一篇我们就来学学如何用CLI部署和调用智能合约。
目录:
1. 分片合约的编译
2. 用CLI部署分片合约
3. 用CLI调用分片合约
1.分片合约的编译
我们知道本体CLI不能编译合约,所以我们需要在SmartX中近些合约编写和编译,编译出来的AVM字节码是我们需要的,
我们把它的内容copy到一个文本文件中,待用。
2.用CLI部署分片合约
部署之前我们需要先确认钱包中是否由充足的ONG,在CLI中执行如下命令(查询之前需要启动solo-chain,即启动私有网,执行命令会出错,也不然查不到):
可以看到我们钱包中的ONG是充足的
执行部署命令 ./ontology contract deploy,参数 -- code需要写我们之前保存的AVM字节码的文本文件的路径,其他参数可以随便填写,如下图:
输入密码成功后,返回这部署的状态,如下图:
我们再通过根据哈希值查询状态的命令查询部署是否成功,如下图:
看到State为“1”,说明部署合约成功了。
2.用CLI调用分片合约
调用通过如下命令
./ontology contract invoke --address=XXX --params=XXX --return=XXX --p
参数--address=后面填写刚刚部署的合约的地址,--params后面填写函数名即demo,执行过程如下图:
然后我们再通过根据哈希值查询状态的命令查询执行是否成功,如下图:
可以看到state是“1”,所以我们合约调用成功了。
写在最后
希望有更多的小伙伴参与到本体开发学习中来,让我们共同为本体的生态建设添砖加瓦!感兴趣的小伙伴可以联系我,共同学习!