01前言
在之前的技术视点文章中,我们介绍了目前本体主网支持的智能合约体系以及相应的智能合约开发工具SmartX。很多小伙伴都想上手练一练。在本期的技术视点中,我们将正式开始讲述智能合约语法部分。
本体的智能合约API分为7个模块,分别是Blockchain&BlockAPI、RuntimeAPI、StorageAPI、NativeAPI、UpgradeAPI、ExecutionEngineAPI以及Static&DynamicCallAPI。本期我们将介绍
?Blockchain&BlockAPI
,这是本体智能合约体系中最基础的部分。其中,BlockchainAPI支持基本的区块链查询操作,如获取当前块高等;BlockAPI支持基本的区块查询操作,如查询指定区块交易数等。
在这之前,小伙伴们可以在本体智能合约开发工具SmartX中新建一个合约,跟着我们进行操作。
02?BlockchainAPI使用方法
智能合约函数的引用与Python的引用如出一辙。开发者可以根据需要引入相应的函数。例如,下面语句引入了获取当前最新块高函数GetHeight和获取区块头函数GetHeader。
fromontology.interop.System.BlockchainimportGetHeight,GetHeader
2.1?GetHeight
开发者可以使用GetHeight来获取当前最新块高,具体例子如下。在后面的例子中,为了节省空间,我们将省略Main函数,小伙伴在练习的时候可以根据需要加入。
58学院TIM:不要过分依赖技术指标:今晚,在58学院第二期《合约市场中的丛林法则(上)》的直播中,58学院研究员兼58COIN矿池高级产品经理TIM谈及技术指标时表示:技术指标虽然有一定作用,但其更容易成为交易者做决定的绊脚石。任何指标都是具有滞后性的,当你过分依赖使用各种指标,便容易忽视图表或价格如何在关键水平附近的走势形态。所以在判断走势时切记不要过分依赖技术指标,真正的能具有前瞻性往往就是基于裸K价格图表中的价格行为。[2020/6/4]
fromontology.interop.System.RuntimeimportNotify
fromontology.interop.System.BlockchainimportGetHeight
defMain(operation):
ifoperation=='demo':
returndemo()
returnFalse
defdemo():
height=GetHeight()
Notify(height)#打印height
returnheight#在函数运行结束后返回height
2.2?GetHeader
开发者可以使用GetHeader来获取区块头,参数是某个块的块高。具体例子如下:
fromontology.interop.System.RuntimeimportNotify
声音 | 彭博社:技术指标显示以太坊处于2019年5月以来最超买水平:彭博社发文称,根据衡量连续收盘价涨跌的GTI全球实力指标,以太坊处于自2019年5月以来的最超买水平。此外,以太坊今年以来的涨幅,也推动彭博银河加密指数进入超买区间。该指数追踪一些规模较大的数字资产,以太坊占指数的近30%。[2020/2/14]
fromontology.interop.System.BlockchainimportGetHeader
defdemo():
block_height=10
header=GetHeader(block_height)
Notify(header)
returnheader
2.3GetTransactionByHash
开发者可以使用GetTransactionByHash函数通过交易哈希获取交易。交易哈希以bytearray的格式,作为参数传入GetTransactionByHash。这个函数的关键在于如何转换将十六进制格式的交易哈希转变为bytearray格式的交易哈希。
我们以16进制格式的交易哈希为例,实现将十六进制格式的交易哈希转变为bytearray格式的交易哈希。示例哈希如下:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
首先,将该交易哈希反序得到:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
动态 | Libra技术指导委员会将于2020年第一季度发布技术治理框架:Facebook 领导的稳定币项目 Libra 发布最新公告宣布,其技术指导委员会 TSC 将在 2020 年第一季度发布技术治理框架及其相关文件,包括开源社区针对网络的技术升级如何进行提案的流程,以及评估这些提案的一系列透明流程。Libra 技术指导委员会 TSC 于 2019 年 12 月 16 日由 Libra 协会理事会投票决定成立,包括五名成员,分别是加密货币托管服务 Anchorage 联合创始人兼总裁 Diogo Monica、Calibra 核心产品负责人 George Cabrera III、Bison Trails 首席执行官兼创始人 Joe Lallouz、联合广场风投合伙人 Nick Grossman 和慈善组织 Mercy Corps 新兴技术总监 Ric Shreves。[2020/1/17]
开发者可以通过SmartX提供的转换工具HexNumber(littleendian)<-->Number实现这一步。
然后,将其转成bytearray格式:
{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}
开发者可以通过SmartX提供的转换工具String<-->ByteArray实现这一步。
动态 | IBM区块链高级技术人员当选Hyperledger技术指导委员会主席:随着IBM在Hyperledger技术指导委员会(TSC)的席位增加引发争议,该委员会又选定另一名IBM官员担任其主席。据报道,IBM区块链和Web开放技术的高级技术人员Arnaud Le Hors将接替英特尔首席工程师Dan Middelton担任主席。(coindesk)[2019/9/12]
最后,将得到的bytearray转换成相应的字符串:
\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f
GetTransactionByHash函数通过交易哈希获取交易的例子如下:
fromontology.interop.System.BlockchainimportGetTransactionByHash
defdemo():
#tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f")
声音 | Josh Rager:技术指标信号确认牛市:加密货币分析师Josh Rager 5月28日发推表示:“BTC的3天顾氏均线流翻绿。我已经等了几个星期这个信号出现来确认牛市趋势。1天顾氏均线流翻绿可能是假信号,但是3天顾氏均线流翻绿是一个很好的延续信号,建议逢低买入。要记得,上一次BTC历史价格的3天顾氏均线流的最后一次翻绿导致了之后长达25个月的上升趋势。”[2019/5/28]
tx=GetTransactionByHash(tx_hash)
returntx
2.4?GetTransactionHeight
开发者可以使用GetTransactionHeight函数通过交易哈希获取交易高度。我们还是以上个例子中的哈希为例:
fromontology.interop.System.BlockchainimportGetTransactionHeight
defdemo():
#tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f")
height=GetTransactionHeight(tx_hash)
returnheight
2.5?GetContract
开发者可以使用GetContract函数通过合约哈希获取合约。其中,合约哈希的转换过程与上面讲到的交易哈希转换过程一致。
fromontology.interop.System.BlockchainimportGetContract
defdemo():
#contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"\xfa\x98\x96\x21\x32\x32\xbb\xf0\x9f\x23\x91\xfa\xef\x95\x9b\xff\xa5\x75\x1a\xd8")
contract=GetContract(contract_hash)
returncontract
?2.6?GetBlock
开发者可以使用GetBlock函数获取区块。有两种方法可以获取指定区块:
1.通过块高获取区块:
fromontology.interop.System.BlockchainimportGetBlock
defdemo():
block=GetBlock(1408)
returnblock
2.通过区块哈希获取区块:
fromontology.interop.System.BlockchainimportGetBlock
defdemo():
block_hash=bytearray(b'\x16\xe0\xc5\x40\x82\x79\x77\x30\x44\xea\x66\xc8\xc4\x5d\x17\xf7\x17\x73\x92\x33\x6d\x54\xe3\x48\x46\x0b\xc3\x2f\xe2\x15\x03\xe4')
block=GetBlock(block_hash)
03?BlockAPI使用方法
BlockAPI中可供引用的函数有三个,它们分别是GetTransactions、GetTransactionCount和GetTransactionByIndex。我们依次介绍下这三个函数。
3.1?GetTransactionCount
开发者可以使用GetTransactionCount函数获取指定区块的交易数量。
fromontology.interop.System.BlockchainimportGetBlock
fromontology.interop.System.BlockimportGetTransactionCount
defdemo():
block=GetBlock(1408)
count=GetTransactionCount(block)
returncount
3.2?GetTransactions
开发者可以使用GetTransactions函数获取获取指定区块的所有交易。
fromontology.interop.System.BlockchainimportGetBlock
fromontology.interop.System.BlockimportGetTransactions
defdemo():
block=GetBlock(1408)
txs=GetTransactions(block)
returntxs
3.3GetTransactionByIndex
开发者可以使用GetTransactionByIndex函数获取指定区块的指定交易。
fromontology.interop.System.BlockchainimportGetBlock
fromontology.interop.System.BlockimportGetTransactionByIndex
defdemo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0)#indexstartsfrom0.
returntx
04?后记
Blockchain&BlockAPI在智能合约中起到查询区块链数据和区块数据的作用,是智能合约最不可缺少的一部分。在后面的技术视点中,我们将讨论如何使用其它API,探讨它们和本体区块链的交互。本期讲述的所有语法部分我们提供了中文视频,小伙伴们可以观看和学习。
标签:GETBLOCBLOLOCtogetherbnb作弊码LBLOCK价格blockchain安卓blocsport.one
区块链经济制度设计和区块链技术的发展方向一直是值得深入探讨的两个重要问题。在我们逐一拆解之前需要达成这样一个共识——金融作为区块链重要的落地应用,区块链技术在传统金融领域的应用和基于区块链核心思.
1900/1/1 0:00:008月24日,「2019海创链无边界创新论坛暨周年庆典」在青岛召开。海创链CEO张弢宣布了无边界、无限游戏、无问西东3个“无”的计划: 作为一个开放的区块链孵化加速平台,海创链计划让区块链融合物联.
1900/1/1 0:00:00Facebook数字货币Libra背后的非营利组织负责人表示,该公司将如期推出这款货币,并清除监管障碍.
1900/1/1 0:00:00什么是Lava?▲Lava是一个基于PoC的去中心化数字加密基础设施。▲Lava的角色定位是全球广义存储空间的信任凭证和顶层索引.
1900/1/1 0:00:00一、会同现有比特币交易所形成竞争作为一个可交易产品,比特币在美国证券市场中依然处于一个比较尴尬的地位。它现在普遍被认为是一个虚拟商品。所以对它提供实物交易的交易所被市场接受存在.
1900/1/1 0:00:00前言:区块链的治理跟传统的中心化治理不同,它是分布式的社区治理,但所有的治理都涉及到一个问题,如何确定身份?去中心化的身份是解决区块链治理的必要组成之一.
1900/1/1 0:00:00