本体技术视点 | Python智能合约开发学起来

01前言

在之前的技术视点文章中,我们介绍了目前本体主网支持的智能合约体系以及相应的智能合约开发工具SmartX。很多小伙伴都想上手练一练。在本期的本体技术视点中,我们将正式开始讲述智能合约语法部分。本体的智能合约API分为7个模块,分别是Blockchain&BlockAPI、RuntimeAPI、StorageAPI、NativeAPI、UpgradeAPI、ExecutionEngineAPI以及Static&DynamicCallAPI。本期我们将介绍?Blockchain&BlockAPI,这是本体智能合约体系中最基础的部分。其中,BlockchainAPI支持基本的区块链查询操作,如获取当前块高等;BlockAPI支持基本的区块查询操作,如查询指定区块交易数等。同时,文末将提供视频讲解。

戴姆勒公司将与本体合作建立可追踪车辆信息的区块链平台:梅赛德斯-奔驰的母公司戴姆勒(Daimler AG)今日宣布,它将与开源区块链本体(Ontology)合作,建立一个基于区块链的移动平台。该平台允许用户从不同地区同时获得港口识别信息和车辆信息。(Coindesk)[2020/9/24]

在这之前,小伙伴们可以在本体智能合约开发工具SmartX中新建一个合约,跟着我们进行操作。

02?BlockchainAPI使用方法

智能合约函数的引用与Python的引用如出一辙。开发者可以根据需要引入相应的函数。例如,下面语句引入了获取当前最新块高函数GetHeight和获取区块头函数GetHeader。

本体区块链与社交创建者平台OGQ合作进行数字版权保护:区块链平台本体(Ontology)宣布与社交创建者平台OGQ合作,使用本体区块链来确保通过平台创建的内容的版权保护。OGQ允许用户上传和出售独特的数字内容,包括表情符号、表情包、字体、音乐和视频。此次合作将有2.5亿个数字内容实例被上传到本体区块链。(Cointelegraph[2020/5/2]

2.1?GetHeight

开发者可以使用GetHeight来获取当前最新块高,具体例子如下。在后面的例子中,为了节省空间,我们将省略Main函数,小伙伴在练习的时候可以根据需要加入。

2.2?GetHeader

开发者可以使用GetHeader来获取区块头,参数是某个块的块高。具体例子如下:

本体将于23时迁移Phecda节点,期间或出现区块产出延迟:本体(Ontology)官方发推称,我们计划于美东时间11时(北京时间23时)将共识节点Phecda迁移到BisonTrails平台。在此期间可能会出现区块产出延迟,预计将在15分钟内恢复。[2020/3/12]

2.3GetTransactionByHash

开发者可以使用GetTransactionByHash函数通过交易哈希获取交易。交易哈希以bytearray的格式,作为参数传入GetTransactionByHash。这个函数的关键在于如何转换将十六进制格式的交易哈希转变为bytearray格式的交易哈希。我们以16进制格式的交易哈希为例,实现将十六进制格式的交易哈希转变为bytearray格式的交易哈希。示例哈希如下:

动态 | 本体将与形式化验证公司CertiK共筑可信区块链生态:今日,本体宣布与美国形式化验证公司CertiK展开战略合作,双方将通过深度规范技术及时检测到开源代码的安全漏洞,在智能合约发布前确保安全性与可靠性。CertiK的自动化形式化验证能够避免人为检测的思维局限,最大限度上降低智能合约的验证成本,实现低成本与高安全。[2018/7/17]

首先,将该交易哈希反序得到:

开发者可以通过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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

币赢女侠灵魂拷问第十五期:原力协议是DEFI中的什么神秘力量

9月1日晚上八点,女侠区块链“灵魂拷问”活动第十五期在线上正式开始,并由20家媒体、30多个社群同步进行转播。本次活动女侠请到了原力协议CEO雷宇,就项目的发展方向、优势和近期规划等进行灵魂拷问。主持人:陈女侠,"女侠区块链"创始人.

[0:15ms0-1:7ms