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

01前言

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

现场 | 本体去中心化数字身份解决方案DeID集成至波卡平台:金色财经现场报道,在10月29日由 Web3 基金会主办的Web3大会上,本体宣布正在波卡(Polkadot)链上进行开发,将本体去中心化数字身份(Decentralized Identity, DeID)集成到波卡链上,并计划搭建波卡平行链。该合作将加速本体与波卡链上生态的融合,为用户带来更深层次的信任和更为自主的数据管理体验。此外,本体信用分 OScore和DDXF 等技术也将逐步应用到波卡生态中,使其它区块链也可便捷地使用本体 DeID 解决方案。[2020/10/29]

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

本体加入由Coinbase发起的开源项目Rosetta:据官方推特消息,本体(Ontology)宣布加入由Coinbase发起的开源项目Rosetta,成为该开源项目中首个亚洲公链。本体表示,将不断为Rosetta贡献经验,协助完善其框架,助力更多数字资产相关企业及传统行业以更低门槛应用区块链技术。

据了解,开源项目Rosetta由Coinbase发起,其宗旨为实现任意区块链技术部署和交互的标准化,简化集成过程,从而降低对接过程中可能产生的成本。通过开放透明的Rosetta,符合区块链规范的项目可以高效便捷地与各类交易所、浏览器和钱包应用集成。[2020/6/18]

02?BlockchainAPI使用方法

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

声音 | 本体创始人李俊:公链发展不仅仅是技术问题 还有业务场景、商业机制的设计等问题:近日,本体(Ontology)创始人李俊接受采访时表示,公链目前都在做应用,但是实际落地的突破还不明显。公链发展到后面不仅仅是技术问题,还有业务场景、商业机制的设计以及在不同行业的拓展。这些难度都很大,挑战的东西很多,需要在不同的行业设计新的行业规则、新的商业流程,才能把区块链技术应用进去。[2019/1/2]

2.1?GetHeight

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

2.2?GetHeader

本体(ONT)今日涨幅达15.22%:本体(ONT)今日涨幅达15.22%,目前在创新区BTC交易对中排名第一,ONT现全球均价2.43美元。据悉,ONT于今日代码开源。[2018/3/30]

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

2.3GetTransactionByHash

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

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

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

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

金星链

USDTINS:BTC震荡蓄势 后续可能将涨破14000美元

目前BTC大概率处于减半预期拉升前的吸筹阶段,对比前两次历史上的减半走势,可看出BTC每轮熊市触及大底后,均开启下一轮大牛市的初级上涨阶段,并一直涨至上一轮牛市顶点斐波那锲0.618点位再回落.

TUSDSDT:涨幅600% 矿池币凭什么跑赢比特币?

“矿池发币我认为会是未来矿池的标配,但是不是依靠发行通证就一定能突围,显然是否定的。”在矿业中,作为算力集合的矿池备受巨头喜爱,引得火币、OK争相入局.

[0:0ms0-0:510ms