月亮链 月亮链
Ctrl+D收藏月亮链
首页 > SHIB > 正文

ONT:本体技术视点 | 使用C 进行Wasm合约开发_WAS

作者:

时间:1900/1/1 0:00:00

OntologyWasm?自从上线测试网以来便受到了社区开发人员的极大关注。OntologyWasm的上线将使得业务逻辑复杂的dApp合约上链成本降低,极大丰富dApp生态。在进行OntologyWasm合约开发时,开发者不仅可以使用Rust,还可以使用C作为合约开发语言。本期我们将通过两个简单的示例来示范如何使用C进行OntologyWasm合约开发。

一、HelloWorld

按照惯例,我们还是从一个Helloworld开始

1.1合约入口

在上面的例子中,我们暂时只支持?sayHello?这个方法:这个“Helloworld!”会在节点的日志中以调试信息打印出来。在实际的应用中,?printf?只能用作调试的目的,一个实际的智能合约,需要实现更多更复杂的功能。

本体设立1000万美元EVM专项基金,激励开发者进行DID等Web3与元宇宙开发:3月7日消息,本体官方宣布本体链平台已完成以太坊虚拟机(EVM)集成,成为支持虚拟机数量最多的公链平台。与此同时,1000万美元的EVM基金同步面向全球开发者重磅推出,将用于支持基于本体平台构建的DID等Web3和元宇宙相关的去中心化应用。据悉,参与基金计划的项目在获得资金支持的同时,还可以直接部署本体生态中ONT ID(ont.id)相关DID数字身份解决方案以及集成ONTO Wallet(onto.app),实现数百万用户的直接触达,获得流量扶持,从而更高效便捷地融入Web3生态。[2022/3/7 13:42:43]

1.2智能合约API

OntologyWasm提供如下API与区块链的底层进行交互:

二、红包合约

Gate.io上线抵押本体ONT获得DeFi挖矿收益WING理财产品:据官方消息,Gate.io现已上线锁仓ONT获得WING收益DeFi流动性挖矿理财项目,锁仓期限为18天,认购金额 (最小/最大):10 -500000 ONT总仓位为6000000 ONT,由于DeFi项目价格波动较大,DeFi流动性挖矿的收益波动风险同样较高,请务必注意投资风险,理财收益最终将根据实际收益情况调整分发,ONT DeFi挖矿参与地址详情点击原文链接。[2020/9/13]

下面我们通过一个更加复杂的例子来演示如何通过这些API来开发一个完整的Wasm智能合约。

很多情况下我们都会通过各种App,如微信等聊天工具发红包。我们可以给朋友发送红包,也可以抢其他人发送的红包,收到的钱会记入到个人微信账户中。

类似于微信的流程,我们将尝试创建一个智能合约。用户使用该合约,可以发送ONT,ONG或者是标准的OEP-4的Token资产红包给他的朋友们,而朋友们抢到的红包可以直接转入到他们的钱包账户中。

动态 | 天秤座协会成员Bison Trails已增加对本体节点的支持:据CryptoGlobe 2月17日消息,天秤座协会成员Bison Trails已宣布支持其平台上的本体(Ontology)节点。 该成员正在将Triones Node基础架构集成到其平台中,这将允许为企业公司无缝部署Ontology节点。[2020/2/17]

2.1创建合约

首先,我们需要新建合约的源文件,暂且命名为redEnvelope.cpp。这个合约我们需要三个接口:

?createRedEnvelope:创建红包

?queryEnvelope:查询红包信息

?claimEnvelope:抢红包

我们需要在存储中保存一些关键的数据。在智能合约中,数据以KV的形式保存在该合约的上下文空间中,这些数据的KEY需要设置前缀以便于后面的查询。下面定义了三个不同的前缀供使用:

声音 | 本体首席战略官:“百花齐放”后可能会形成完整的操作系统应用链:本体首席战略官季宙栋表示:“每个行业的发展都会经历波峰和波谷,区块链还处于婴儿时期,经历一波大洗牌对行业长期良性发展有促进作用。现在是时候聚焦在那些能够解决痛点的实体应用上,区块链作为通用基础设施,可能不一定仅仅出现一个Killer App,可能是在百花齐放中又通过某种催化剂产生生态化学反应,形成一个完整的操作系统应用链。”[2019/2/27]

因为我们的合约支持ONT和ONG这两种Ontology的原生资产,我们可以预先定义好这两种资产的合约地址。不同于标准的智能合约,Ontology原生合约的合约地址是固定的,而不是根据合约代码的hash计算而来的。

我们需要在合约中保存红包的信息,如红包的资产信息。

其中,

动态 | 微软和亚马逊为其在线市场添加本体:据blokt消息,Microsoft Azure和Amazon AWS近日已添加本体(Ontology)ONT。[2018/12/27]

是由OntologyWasmCDT定义的宏操作,用于在将struct存储前进行序列化的操作。

2.2创建红包

准备工作差不多了,下面我们开始开发具体的接口逻辑。1.创建红包需要指定创建者地址,红包数量,红包金额和资产的合约地址:2.检查是否有创建者的签名,否则交易回滚退出:

3.如果红包资产是ONT,由于ONT的不可分割性,红包的金额要大于或等于红包的数量,保证每个红包最少有1个ONT:

4.对于每个红包的创建者,我们需要记录一下他发送红包的总数量:

5.生成红包hash,这个hash就是之后标识这个红包的唯一ID:

6.根据token资产的类型,将资产转入合约中,self_address()可以取得当前执行的合约地址,我们根据用户输入的token类型,将指定数量的token转入合约:

7.将合约的信息保存在存储中:

8.发送创建红包的事件。对于智能合约的调用是一个异步的过程,合约会在执行成功后发送一个事件来通知客户端执行结果,这个事件的格式可以由合约的编写者来指定。

一个简单的红包就创建完成了,下一步我们需要实现如何查询这个红包的信息.

2.3?查询红包

查询红包的逻辑非常简单,只需要将存储中的红包信息取出并格式化返回即可:

2.4?领取红包

我们已经把资产成功地转入到智能合约中了,接下来就可以把这个红包的ID发送给你的朋友们让他们去抢红包了。

1.领取红包需要输入领取人的账户和红包的hash:

2.同样,我们需要验证领取账户的签名,不允许替其他人抢红包,而且每个账户每个红包只能抢一次:

3.按照hash从存储中取出红包的信息,判断这个红包是否没有被抢完:

4.新建一条领取的记录:

5.计算本次领取红包的资产数量。如果是最后一个红包,数量为剩余的金额,否则根据当前区块hash计算随机数,确定本次领取的数量,并更新红包信息:

6.根据计算结果,将对应资产从合约中转到领取的账户:

7.记录领取的信息,将更新后的红包信息写回存储并发送通知事件:

如前面所说,这个合约只能通过claimEnvelope这个接口将资产转出合约。所以,合约中的资产是安全的,任何人都无法随意的取走里面的资产。至此,一个简单的红包合约逻辑完成,完整的合约代码如下:https://github.com/JasonZhouPW/pubdocs/blob/master/redEnvelope.cpp

2.5?合约测试

合约测试可以有两种方法:

使用CLI

请参考:https://github.com/ontio/ontology-wasm-cdt-cpp/blob/master/How_To_Run_ontologywasm_node.md

使用GolangSDK

请参考:https://github.com/ontio/ontology-wasm-cdt-cpp/blob/master/example/other/main.go

三、总结

本示例只是为了展示如何编写一个完整的OntologyWasm智能合约,如何通过调用API和底层的区块链进行交互。如果要作为正式的产品,还需要解决红包的隐私问题:所有人都可以通过监控合约的事件来取得红包的hash,意味着每个人都可以抢这个红包。一种比较简单的解决方法,就是在创建红包时指定哪些账户能够领取。如果有兴趣,您也可以尝试修改测试一下。

Ontology作为领先公链,率先支持Wasm合约,为Wasm技术的成熟贡献自己的一份力量。我们欢迎更多的Wasm技术爱好者加入本体开发社区,共同打造技术生态。

*详细代码信息可能显示不全,可参考:https://mp.weixin.qq.com/s/LlvuX4NzZackasuvQyBDlg

标签:ONTWASASMNTOContentosSWASHjasmy币热度过去了吗Fantom

SHIB热门资讯
KEX:BKEX Global 关于Fair Dollars (FDS) - TRIBE首期为BKEX TRIBE BKK部落酋长发放BNB收益的公告_TRIB

亲爱的BKEXer:为了促进以FDS价值为核心的区块链生态圈的建设,FairDollars(FDS)-TRIBE于2019年7月1日入驻BKEXTribe生态,目前已成功完成了1期锁仓.

1900/1/1 0:00:00
Kucoin:KuCoin已完成EMOGI表情币 (LOL)创世空投分发_UCO

亲爱的KuCoin用户:KuCoin已完成EMOGI表情币(LOL)创世空投分发,用户可通过资产中心>我的福利>其他获赠查看分发记录.

1900/1/1 0:00:00
STO:行业观察 | 区块链的未来在哪里,美国证监会STO开闸的机遇与挑战_REGU币

欢迎关注:DigitInsight,我们将持续输出优质行业研究报告。7月11日,美国证券交易委员会已批准区块链公司Blockstack根据RegA规则出售价值2800万美元的代币.

1900/1/1 0:00:00
VIP:中币(ZB.com)公布全新 VIP 体系 交易费低至 0.03%_COM

8月12日,中币官网公布全新VIP会员体系征集意见稿。在经过广泛意见征集,获得大量用户跟合作伙伴的建议之后,ZB.com新版VIP会员体系开始正式实施.

1900/1/1 0:00:00
OTCoin:关于涨跌停制度期间SNCE交易时间说明_Bitcoin Pay

尊敬的用户:????Hotcoin?Global已于2019年8月24日10:00?开放SNCE充提业务,在8月24日14:00在主板开放SNCE/USDT交易.

1900/1/1 0:00:00
COM:关于ZT“启航”计划正式上线的公告_区块链

ZT.COM全新推出“启航”计划,面向全世界征集区块链优质项目,为其提供高质量、高效率的项目服务和优质资源.

1900/1/1 0:00:00