01前言
在之前的技术视点文章中,我们介绍了目前本体主网支持的智能合约体系以及相应的智能合约开发工具SmartX。很多小伙伴都想上手练一练。在本期的本体技术视点中,我们将正式开始讲述智能合约语法部分。本体的智能合约API分为7个模块,分别是Blockchain&BlockAPI、RuntimeAPI、StorageAPI、NativeAPI、UpgradeAPI、ExecutionEngineAPI以及Static&DynamicCallAPI。本期我们将介绍?Blockchain&BlockAPI,这是本体智能合约体系中最基础的部分。其中,BlockchainAPI支持基本的区块链查询操作,如获取当前块高等;BlockAPI支持基本的区块查询操作,如查询指定区块交易数等。同时,文末将提供视频讲解。
本体网络质押ONT已接近1.5亿美元 占总流通量近三分之一:本体官方刚刚发布推文称,本体网络质押的ONT数量以达到200,868,016枚,价值已接近1.5亿美元,所质押的ONT数量几乎达到了ONT流通总量的三分之一。[2020/7/20]
在这之前,小伙伴们可以在本体智能合约开发工具SmartX中新建一个合约,跟着我们进行操作。
02?BlockchainAPI使用方法
智能合约函数的引用与Python的引用如出一辙。开发者可以根据需要引入相应的函数。例如,下面语句引入了获取当前最新块高函数GetHeight和获取区块头函数GetHeader。
2.1?GetHeight
本体将gas费从500上调至2500:本体(ONT)在电报群表示,根据最新发布经济模型,从7月7日(UTC)起,本体链上gas费将从500调整为2500,gaslimit保持不变。所有本体Triones节点将在此时间之前进行此项调整。如果上述调整未能及时进行,则链上用户可能无法正常进行ONT或ONG交易。节点申请的500ONG质押合约费用保持不变。[2020/7/3]
开发者可以使用GetHeight来获取当前最新块高,具体例子如下。在后面的例子中,为了节省空间,我们将省略Main函数,小伙伴在练习的时候可以根据需要加入。
2.2?GetHeader
开发者可以使用GetHeader来获取区块头,参数是某个块的块高。具体例子如下:
动态 | 本体宣布与美国形式化验证公司CertiK展开战略合作:7月17日消息,本体(Ontology)宣布与美国形式化验证公司CertiK展开战略合作,双方将深耕形式化验证领域,增强智能合约和区块链系统的安全性和可靠性。[2018/7/17]
2.3GetTransactionByHash
开发者可以使用GetTransactionByHash函数通过交易哈希获取交易。交易哈希以bytearray的格式,作为参数传入GetTransactionByHash。这个函数的关键在于如何转换将十六进制格式的交易哈希转变为bytearray格式的交易哈希。我们以16进制格式的交易哈希为例,实现将十六进制格式的交易哈希转变为bytearray格式的交易哈希。示例哈希如下:
本体创始人李俊:跨链不是一个单一协议的问题,而是协议群的问题:3月26日下午,在全球区块链(杭州)高峰论坛的圆桌会议上,本体创始人李俊表示我们对跨链理解以及技术战略性的考虑,跨链不是一个单一协议的问题,而是协议群的问题,跨链像国家与国家交往,对于本体当中跨链分成三个层次:一是松耦合的,包括分布式的身份映射和数据交换,还有资产层和事物层,最下面是共识层跨链,现在业界没有特别完整的方案,大家都在探索当中,这一层是最有价值也是难度最高的一层。[2018/3/26]
首先,将该交易哈希反序得到:
开发者可以通过SmartX提供的转换工具HexNumber(littleendian)<-->Number实现这一步。然后,将其转成bytearray格式:
开发者可以通过SmartX提供的转换工具String<-->ByteArray实现这一步。最后,将得到的bytearray转换成相应的字符串:
GetTransactionByHash函数通过交易哈希获取交易的例子如下:
2.4?GetTransactionHeight
开发者可以使用GetTransactionHeight函数通过交易哈希获取交易高度。我们还是以上个例子中的哈希为例:
2.5?GetContract
开发者可以使用GetContract函数通过合约哈希获取合约。其中,合约哈希的转换过程与上面讲到的交易哈希转换过程一致。
2.6?GetBlock
开发者可以使用GetBlock函数获取区块。有两种方法可以获取指定区块:1.通过块高获取区块:
2.通过区块哈希获取区块:
03?BlockAPI使用方法
BlockAPI中可供引用的函数有三个,它们分别是GetTransactions、GetTransactionCount和GetTransactionByIndex。我们依次介绍下这三个函数。
3.1?GetTransactionCount
开发者可以使用GetTransactionCount函数获取指定区块的交易数量。
3.2?GetTransactions
开发者可以使用GetTransactions函数获取获取指定区块的所有交易。
3.3GetTransactionByIndex
开发者可以使用GetTransactionByIndex函数获取指定区块的指定交易。
04?后记
Blockchain&BlockAPI在智能合约中起到查询区块链数据和区块数据的作用,是智能合约最不可缺少的一部分。在后面的技术视点中,我们将讨论如何使用其它API,探讨它们和本体区块链的交互。本期讲述的所有语法部分我们提供了中文视频,小伙伴们可以观看和学习。
视频观看链接:https://v.qq.com/x/page/x0822d6u8xl.html
*详细代码信息可能显示不全,可参考:https://mp.weixin.qq.com/s/t1sX3aDi5WVTthnc4sMHkQ
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。