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函数,小伙伴在练习的时候可以根据需要加入。
观点:ADA技术指标可能会出现回落:8月7日消息,尽管在Shelley成功启动升级后,Cardano吸引了800多个股份池运营商和众多加密货币爱好者的兴趣,但由于近期ADA的价格表现过于平谈,一些散户对其并不看好,如果这个趋势继续下去,ADA的技术指标将会很快回落。(CryptoBriefing)[2020/8/8]
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
fromontology.interop.System.BlockchainimportGetHeader
58学院TIM:不要过分依赖技术指标:今晚,在58学院第二期《合约市场中的丛林法则(上)》的直播中,58学院研究员兼58COIN矿池高级产品经理TIM谈及技术指标时表示:技术指标虽然有一定作用,但其更容易成为交易者做决定的绊脚石。任何指标都是具有滞后性的,当你过分依赖使用各种指标,便容易忽视图表或价格如何在关键水平附近的走势形态。所以在判断走势时切记不要过分依赖技术指标,真正的能具有前瞻性往往就是基于裸K价格图表中的价格行为。[2020/6/4]
defdemo():
block_height=10
header=GetHeader(block_height)
Notify(header)
returnheader
2.3GetTransactionByHash
开发者可以使用GetTransactionByHash函数通过交易哈希获取交易。交易哈希以bytearray的格式,作为参数传入GetTransactionByHash。这个函数的关键在于如何转换将十六进制格式的交易哈希转变为bytearray格式的交易哈希。
我们以16进制格式的交易哈希为例,实现将十六进制格式的交易哈希转变为bytearray格式的交易哈希。示例哈希如下:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
首先,将该交易哈希反序得到:
声音 | 分析师:有技术指标显示比特币或将涨至6万美元:加密货币分析师Moon Overlord 6月16日发推称,比特币刚刚突破至非线性回归曲线中值线上方。在我看来,这样强劲的突破和收于此之上将引发牛市的全面爆发。比特币上一次打破这一纪录时,其价格从2500美元左右升至2万美元。如果这次走势类似,比特币将达到6万美元左右。[2019/6/17]
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
开发者可以通过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实现这一步。
最后,将得到的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
分析 | 彭博:GTI VERA技术指标在近两个月内首次出现卖出信号:据彭博消息,,随着比特币价格逼近5000美元,彭博对比特币的价格走势发出了新的警告。GTI VERA收敛发散技术指标自3月中旬以来出现了首个卖出信号。这一转变可能表明,未来价格可能还会进一步下跌。总部位于伦敦的区块链投资公司KR1 Plc首席执行官George McDonaugh称,比特币下跌是很自然的。“当比特币在几周前大幅上涨时,交易量足以突破主要阻力位进入一个新交易区间。目前的走势是在交易区间内的自然市场周期,只是市场在寻找下限,有关竞争产品的消息(Bitfinex事件)在市场上引发了一些戏剧性事件和不确定性。”[2019/4/30]
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")
tx=GetTransactionByHash(tx_hash)
行情 | 救赎说币:ONT目前不能买,要等技术指标出现才能买入:据救赎分析,本体就行情走势趋势来说,是不容乐观的。我们看技术指标macd从箭头处跌下0轴之后,大部分时间都在0轴之下,代表的是持续的空军优势。持续的空军优势,是不存在买入的理由的,是不管基本面如何利好都不能入场的。但是我们都知道,本体的基本面是很强的,所以我们就等一个买入点就好了。我们再看234处的下跌幅度不是很大,但是跌之后没有多大涨幅就接着跌,所以这个可以分析出ONT的买盘真的不强烈。所以要想买入这个币种,要等一个大跌就可以买了。[2018/7/16]
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,探讨它们和本体区块链的交互。本期讲述的所有语法部分我们提供了中文视频,小伙伴们可以观看和学习。
标签:RANDFIFINBlockchainRAN价格Goldfinchnoob.financeblockchain钱包app
知识付费持续处于风口。有咨询机构预计,到2020年,国内知识付费市场规模将达235亿元人民币。但这门好生意,却不太好做.
在上周五的核心开发者电话会议上,以太坊伊斯坦布尔硬分叉全系统升级的测试网激活日期已经确定。“我们选择的区块高度预计在10月2日左右达到,”以太坊基金会社区经理HudsonJameson上周五在以.
当大家聊起Dfinity这个项目的时候,短袖这个梗铁定是跑不开的。其实一件周边T恤衫没多少钱,主要是这个衬衫是当初通过撸空投才能获得的,你还得先交运费.
据《华尔街日报》今日报道,投资管理公司VanEckSecurities和SolidXManagement将于周四开始发行比特币ETF的份额.
据报道,韩国电子巨头三星电子(SamsungElectronics)将发布新版GalaxyNote10智能手机,这款特别版本的手机将预装加密货币钱包,以推动区块链技术的应用.
距离TelegramTON区块链正式发布还有一个多月的时间,Telegram的首个加密货币项目或将成为以太坊迄今面临的最大威胁之一.