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函數,小伙伴在練習的時候可以根據需要加入。
分析師:技術指標顯示,以太坊或將回調:加密貨幣分析師Cold Blooded Shiller分享關于以太坊行情走勢的圖表,并表示打算在未來幾天做空ETH。圖表顯示,12小時圖上的ETH價格走勢和動量指標之間形成了一個熊市背離,表明多頭正在失去力量。歷史表明,ETH正處于為期6個月的回調邊緣,這進一步加劇了看跌情緒。(Bitcoinist)[2020/6/20]
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
動態 | 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]
defdemo():
block_height=10
header=GetHeader(block_height)
Notify(header)
returnheader
2.3GetTransactionByHash
開發者可以使用GetTransactionByHash函數通過交易哈希獲取交易。交易哈希以bytearray的格式,作為參數傳入GetTransactionByHash。這個函數的關鍵在于如何轉換將十六進制格式的交易哈希轉變為bytearray格式的交易哈希。
聲音 | 分析師:比特幣已在CME和現貨交易所爆發,技術指標顯示看漲:加密貨幣分析師Filbfilb今日發推稱,“在我看來,比特幣已經在CME和現貨交易所爆發,OBV(On-balance volume,平衡交易量)已經得到確認,而宏觀TFs正在等待更高的價位。也許會有一些橫盤和后測,但是所有的一切都讓我對市場看漲。”[2020/1/13]
我們以16進制格式的交易哈希為例,實現將十六進制格式的交易哈希轉變為bytearray格式的交易哈希。示例哈希如下:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
首先,將該交易哈希反序得到:
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實現這一步。
聲音 | 分析師:關鍵技術指標顯示BTC首次出現2015年以來的強勁長期勢頭:據CCN消息,技術分析師Eric Thies表示,一個關鍵的技術指標可能預示著比特幣出現了自2015年以來的首次強勁長期勢頭。上一次月MACD達到交叉信號時,比特幣價格在三年內從400美元最終上漲至2萬美元。[2019/6/13]
最后,將得到的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")
百人圓桌 鈦云科技/招股科技鄢傲:EOS的最大價值在于未來生態與技術指標:在金色財經百人圓桌EOS系列問題上,對于“最近,與EOS相關的系列消息好壞參半,有人力挺、有diss,您對此持有何種看法”的問題,金色財經記者有幸采訪鈦云科技/招股科技董事長鄢傲先生。鄢傲表示:一個行業高速發展的標志就是非常多不同意見的人參與進來,對于EOS來說是好事。我認為目前對于EOS的任何定論都為之過早,EOS最大的價值還是在于它的未來生態和技術指標,這些東西需要時間和市場去檢驗,有人力挺、有diss,很可能是處于大家不同的立場而已。[2018/6/20]
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,探討它們和本體區塊鏈的交互。本期講述的所有語法部分我們提供了中文視頻,小伙伴們可以觀看和學習。
Tags:GETBLOBLOCBLOCK2023togetherbnb全部攻略blockchain安全嗎blockchain是什么軟件smarthomeblock
據Trustnodes.com8月31日報道,比特幣閃電網絡的開發者RustyRussell表示:許多閃電網絡相關的項目都存在安全問題,這可能會導致用戶資金的損失.
1900/1/1 0:00:00前言:本文簡單明了地闡述了達成共識的兩個主要流程:區塊的提議和區塊的共識達成。區塊的提議主要涉及到PoW和PoS機制,也就是工作量證明和權益證明的機制,用以抵抗女巫攻擊,安全地選出可靠的區塊提議.
1900/1/1 0:00:00譯者注:提前說明以下信息,也許可以幫助讀者更好地理解本文的內容以及我們在翻譯用詞上的選擇:在以太坊2.0中,驗證者的職責之一是提交attestation.
1900/1/1 0:00:00據Cointelegraph8月30日報道,比特幣編程BootCamp的組織者發布了一個概念驗證,為硬件錢包和完整節點打造易用的多重簽名用戶界面.
1900/1/1 0:00:009月5日消息,Dapp數據和分發平臺DappRadar在立陶宛考納斯宣布完成233萬美元的種子輪融資.
1900/1/1 0:00:00“我們目前最怕的是,平臺上的應用撐不過今年,無法存活下去。”近期互鏈脈搏在與行業人士交流時,某知名聯盟鏈平臺的負責人透露其對區塊鏈應用發展的擔憂.
1900/1/1 0:00:00