EOS

EOS智能合约-编写、发布、调用、删除

简介

此篇将编写一份以录入资产信息为业务的智能合约,包含创建、通过ID更新、通过user更新三个方法,一个主键,一个索引,来介绍智能合约的编写、发布、调用方面的内容。

智能合约的编写主要还是参考官方C++文档,用eosio的官方合约作为样板逐步掌握。

编写

合约详解请看代码内部注释。
digital_asset.hpp

digital_asset.cpp

之后需要使用源码生成.abi和.wams文件,使用官方的eosiocpp工具即可;不过官方说在未来将会弃用此工具,新的版本将使用eosio.cdtGitHub

至此部署智能合约前的工作已经完成。

发布

发布智能合约的过程就是提交一笔交易到eos节点上,并上传对应的.wasm与.abi文件。
方便一点可以使用eosjs,它可以自动签名并构造消息,以下是使用eosjs发布合约:

注意完整的发布合约是setcode+setabi,两个步骤虽然是独立分开的,但是如果abi缺少或错误会导致无法查询到multi-index DB的数据等等情况出现。

调用

同样的使用eosjs调用合约

由于eos智能合约中没有返回值,所以我们不能通过智能合约查询到我们插入的数据,但是官方提供了一个方法直接查询multi-index DB:

这里的查询使用到了之前生成的.abi文件。

删除

目前官方还没有提出删除智能合约的方法。

但是在操作中,总会出现部署合约到错误的账号上,等等情况;而且合约一旦部署是占用RAM等资源的,如果合约没有人使用那么及时释放这部分RAM也是很有必要的。

所有只有一个方法,就是使用一个空的合约替换掉原有的智能合约,这样原有的资源即可释放;但是要注意释放掉的数据应该是无法恢复的。
(空的只能就是就是想hello word一样,甚至删除print,一个空方法)

.
.
.
.
.
.
.
【本文章出自NM1024.com,转载请注明作者出处。】

1 thought on “EOS智能合约-编写、发布、调用、删除”

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据