本体技术视点 | Python智能合约开发学起来_GET:PoolTogether USDC Ticket

01前言

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

本体Ontology将在波卡网络搭建平行链:本体Ontology(ONT)正在波卡网络上搭建平行链,参与平行链插槽竞拍,还将基于其去中心化身份跨链通信提供一系列征信类服务。[2020/8/27]

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

02?BlockchainAPI使用方法

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

2.1?GetHeight

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

声音 | 本体联合创始人季宙栋:区块链面临来自技术、生态、商业三方面的问题:杭州市金融办指导,巴比特主办的2019全球区块链(杭州)高峰论坛上,本体联合创始人季宙栋表示,目前区块链所面临的问题来自技术、生态、商业三方面。而可拓展性是区块链所面临的巨大难题,目前公链项目众多,而且尚处于社区治理的阶段,难以为企业服务,未来可伴随激励机制等服务的加成来为企业服务。区块链未来的机遇在数字资产、身份与数据、信任协作这三方面,比如供应链在多方协作的场景下可以引入区块链,提高效率。[2019/5/17]

2.2?GetHeader

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

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

2.3GetTransactionByHash

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

本体谴责拷贝代码者:若不改正 将公开项目名称:今日,本体团队与分布科技发布公告称,近期有部分区块链项目直接拷贝了本体和分布的开源代码,并删除了License信息和历史记录,变成自己的产出进行宣传。这种行为严重违背了开源代码协作与版权协议。若相关团队坚持不做正确的历史记录,以正确的方式fork代码并在宣传中声明代码来源,我们将保留公开项目名称与代码链接的权利。[2018/5/25]

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

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

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

水星链

[0:0ms0-0:470ms