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
分析 | 技術指標顯示XRP正在向0.25- 0.28美元的水平移動:加密貨幣交易員Joker日前發推稱,從艾略特波浪理論和圓底(Rounding Bottom)模式的角度來看,XRP的價格看起來不錯。后一個指標往往出現在長期下降趨勢即將結束的時候。該交易員表示,這兩種選擇都表明XRP正在向0.25- 0.28美元的水平移動。(U.Today)[2020/1/13]
defdemo():
block_height=10
header=GetHeader(block_height)
Notify(header)
returnheader
2.3GetTransactionByHash
開發者可以使用GetTransactionByHash函數通過交易哈希獲取交易。交易哈希以bytearray的格式,作為參數傳入GetTransactionByHash。這個函數的關鍵在于如何轉換將十六進制格式的交易哈希轉變為bytearray格式的交易哈希。
我們以16進制格式的交易哈希為例,實現將十六進制格式的交易哈希轉變為bytearray格式的交易哈希。示例哈希如下:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
首先,將該交易哈希反序得到:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
動態 | Hyperledger技術指導委員會提交5項提案 以提高投票率:據CoinDesk消息,區塊鏈聯盟Hyperledger的技術指導委員會(TSC)正在討論選舉中可能出現的變化,以期提高投票率。IBM區塊鏈部門員工、2019-2020年TSC主席Arnaud Le Hors將五項提案提上了委員會議程,這些提案旨在提高人們的意識,鼓勵人們參與年度選舉。提案包含2019-2020年任期內增加4個TSC席位、增加一名副主席等內容。[2019/10/7]
開發者可以通過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
動態 | CME公司創始人趙易天:“區塊鏈+AI”等新技術指引未來音樂市場的發展走向:據中國文化報消息,日前,第二十八屆中國國際專業音響·燈光·樂器及技術展覽會(樂器展)在北京舉辦。CME公司創始人趙易天在會上表示,無論產品硬件研發還是音樂軟件開發,都需要符合市場潮流與方向。他提到,MIDI新標準、“區塊鏈+AI”等新技術指引著未來音樂市場的發展走向。例如,MIDI新標準將建立起智能化樂器互聯,云服務能建立起無地域限制的雙向連接,區塊鏈可以實現節點間的價值傳遞等。[2019/6/14]
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)
returntx
2.4?GetTransactionHeight
美國聯邦政府和民間部門聯合發布區塊鏈技術指引: 美國聯邦政府和民間部門的官員們聯合發布指引,以指導政府和承包商如何采用區塊鏈技術來改善運營。[2018/4/4]
開發者可以使用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,探討它們和本體區塊鏈的交互。本期講述的所有語法部分我們提供了中文視頻,小伙伴們可以觀看和學習。
Tags:GETBLOBLOCKLOCKtogetherbnb手游下載LaunchblockVeriBlockArt Blocks Curated Full Set
摘要 事件:8月23日AmazonAWS云服務出現故障,致使幣安等多家幣圈交易所受影響,甚至個別出現數據錯亂的問題。幣圈交易所監管和資產托管安全的灰犀牛急需得到解決.
1900/1/1 0:00:00基于區塊鏈的加密數字貨幣在全球范圍內逐漸得到應用,作為一種顛覆式的支付手段,人們在世界任何地方僅靠互聯網就可以完成交易,擺脫了地理空間的限制和傳統法幣的主權政府等因素.
1900/1/1 0:00:00摘要:昨日BTC突然被拉升之后小幅震蕩下行,目前市場似乎進入了一個不溫不火的階段。無聊行情很可能還要持續一段時間,短時或將再探10000美元.
1900/1/1 0:00:00自2009年誕生以來,比特幣的價格經歷了從無到有,從幾美分到最高點2萬美金。驚人的漲幅讓不少早期投資者賺得盆滿缽滿,也引來了成千上萬后來者趕來“接盤”.
1900/1/1 0:00:008月18日,中共中央、國務院發布了《關于支持深圳建設中國特色社會主義先行示范區的意見》,其中提到,支持深圳進行數字貨幣研究與移動支付的創新探索.
1900/1/1 0:00:00在Web2.0的世界里,運營、產品經理和老板經常會盯著日活,月活,留存轉化等數據試圖不斷迭代產品.
1900/1/1 0:00:00