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
首先,將該交易哈希反序得到:
浩云科技回復深交所:兆物信連在區塊鏈核心技術指標上有領先優勢:3月17日消息,日前,深交所向浩云科技下發問詢函,要求浩云科技說明認為兆物信連是“國際領先的區塊鏈底層技術服務商”的原因及相關依據,信息披露是否審慎合理,是否誤導投資者。對此,浩云科技在3月17日披露的問詢函回復公告中表示,兆物信連全資子公司湖南宸瀚信息科技有限責任公司成立于2015年,為中國高科技產業化研究會區塊鏈產業聯盟常務理事單位等。兆物信連區塊鏈底層平臺MT在10分片純性能測試情況下,其TPS(注:每秒系統處理的交易數量)約為240萬次。對比國際上知名的Hyperledge Fabric以及國內的頭部企業,兆物信連在區塊鏈核心技術指標上有領先優勢。浩云科技認為,公司信息披露審慎合理,不存在誤導投資者的情形。不過,其也指出,目前,國內聯盟鏈主要廠商為螞蟻金服、騰訊、京東、百度等企業,隨著更多企業加入,市場競爭日趨激烈。(新京報)[2020/3/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}
分析 | 彭博:GTI VERA技術指標在近兩個月內首次出現賣出信號:據彭博消息,,隨著比特幣價格逼近5000美元,彭博對比特幣的價格走勢發出了新的警告。GTI VERA收斂發散技術指標自3月中旬以來出現了首個賣出信號。這一轉變可能表明,未來價格可能還會進一步下跌。總部位于倫敦的區塊鏈投資公司KR1 Plc首席執行官George McDonaugh稱,比特幣下跌是很自然的。“當比特幣在幾周前大幅上漲時,交易量足以突破主要阻力位進入一個新交易區間。目前的走勢是在交易區間內的自然市場周期,只是市場在尋找下限,有關競爭產品的消息(Bitfinex事件)在市場上引發了一些戲劇性事件和不確定性。”[2019/4/30]
開發者可以通過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
GetTransactionByHash函數通過交易哈希獲取交易的例子如下:
fromontology.interop.System.BlockchainimportGetTransactionByHash
defdemo():
#tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
行情 | 救贖說幣:ONT目前不能買,要等技術指標出現才能買入:據救贖分析,本體就行情走勢趨勢來說,是不容樂觀的。我們看技術指標macd從箭頭處跌下0軸之后,大部分時間都在0軸之下,代表的是持續的空軍優勢。持續的空軍優勢,是不存在買入的理由的,是不管基本面如何利好都不能入場的。但是我們都知道,本體的基本面是很強的,所以我們就等一個買入點就好了。我們再看234處的下跌幅度不是很大,但是跌之后沒有多大漲幅就接著跌,所以這個可以分析出ONT的買盤真的不強烈。所以要想買入這個幣種,要等一個大跌就可以買了。[2018/7/16]
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
開發者可以使用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:GETBLOCKBLOLOCKGet DogeSmart Block Chain CityBlocknetLucky Block
以太坊聯合創始人、25歲的VitalikButerin可以說是加密貨幣領域的開拓者。《財富》雜志在其最新的“40Under40”排行榜中,將這位“消瘦的夢想家”排在第22位.
1900/1/1 0:00:00通證曾被認為是區塊鏈系統的靈魂,是區塊鏈系統中不同主體所擁有權益的承載。但2017年以后,隨著區塊鏈上一波熱潮涌起,通證成為各種打著區塊鏈名義的項目方通過ICO等方式發行的融資代幣.
1900/1/1 0:00:006月18日,Facebook正式公布了其數字貨幣項目Libra,該項目旨在利用區塊鏈技術創造一種全世界人類都可以使用的跨境支付數字貨幣.
1900/1/1 0:00:00據Coindesk8月22日報道,如果超級賬本開源聯盟技術指導委員會批準采納ConsenSys的Pantheon項目,以太坊可能成為超級賬本的首個公鏈.
1900/1/1 0:00:00本文是作者在2019年8月18日陽明教育研究院舉辦的“新時代星火計劃”閉門研討會上的演講。本文經過作者依據錄音記錄稿的修訂后正式發表.
1900/1/1 0:00:00貿易戰風云再起,美股三大股指全線暴跌,黃金快速飆升,滬金甚至創出了反彈以來的新高,距離歷史新高指日可待,但反觀我們的加密貨幣市場,之前一直是跟隨黃金走勢的,但是自從黃金高位橫盤震蕩之后.
1900/1/1 0:00:00