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函數,小伙伴在練習的時候可以根據需要加入。
天啟資本首席交易員TraderT:高頻交易不止于技術指標,應多觀察和思考:7月2號19:00,合約帝金牌講師、天啟資本首席交易員TraderT做客MXC抹茶社區,就個人在數字貨幣合約市場的投資心得進行分享。
TraderT表示,投資主要分為三個步驟:倉位管理;嚴格的止損;嚴格的提款本金固定及充值紀律。交易員進行一次交易的判斷流程通常是制定計劃,包括預判行情、開單計劃、止盈止損的點位、突發事件下是否入場等綜合因素。每個人都有自己的哈姆雷特,每個人對于技術分析的理解都不同。我做高頻交易的思路是,作為“Day Trader”每天需要觀察什么,做什么,如何進行高頻交易,而不是完全通過技術指標去分析。[2020/7/2]
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來獲取區塊頭,參數是某個塊的塊高。具體例子如下:
聲音 | 彭博社:比特幣勢將錄得年內最差單月表現 技術指標陷入超賣:比特幣勢將錄得今年最糟糕的單月表現,不過技術信號表明其最近的下滑可能即將結束。上周末,比特幣重新測試了其五月份錄得的跳空高開缺口,隨后出現反彈,這可能表明其價格的回撤正在失去動力。隨著缺口被填補,比特幣來到了5月反彈之前的相同價格水平。這意味著比特幣可能會在6500美元左右找到支撐,比目前價格低約8%。此外,根據14天RSI指標(目前位于25),比特幣目前已嚴重超賣。一旦該指標跌至30或更低,就會被視為超賣。(彭博社)[2019/11/28]
fromontology.interop.System.RuntimeimportNotify
fromontology.interop.System.BlockchainimportGetHeader
defdemo():
block_height=10
header=GetHeader(block_height)
Notify(header)
returnheader
2.3GetTransactionByHash
開發者可以使用GetTransactionByHash函數通過交易哈希獲取交易。交易哈希以bytearray的格式,作為參數傳入GetTransactionByHash。這個函數的關鍵在于如何轉換將十六進制格式的交易哈希轉變為bytearray格式的交易哈希。
我們以16進制格式的交易哈希為例,實現將十六進制格式的交易哈希轉變為bytearray格式的交易哈希。示例哈希如下:
動態 | IBM區塊鏈高級技術人員當選Hyperledger技術指導委員會主席:隨著IBM在Hyperledger技術指導委員會(TSC)的席位增加引發爭議,該委員會又選定另一名IBM官員擔任其主席。據報道,IBM區塊鏈和Web開放技術的高級技術人員Arnaud Le Hors將接替英特爾首席工程師Dan Middelton擔任主席。(coindesk)[2019/9/12]
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實現這一步。
最后,將得到的bytearray轉換成相應的字符串:
動態 | 彭博:GTI Vera技術指標自6月份以來首次發出買入信號,可能預示著新的高點:近日比特幣在全球金融市場中的避險屬性已逐步顯現。8月7日,彭博社發文稱,基于上周末的交易活動,追蹤正面和負面趨勢的GTI Vera Convergence-Divergence指標產生了新的買入信號,這是該指標自6月份以來的首次買入信號,可能預示著比特幣將達到新的高點。彭博分析師Mike McGlone表示,與其他風險資產相比,比特幣的漲勢正在上升,比特幣應該仍然是其存儲價值需求增長的主要受益者,與黃金相似。[2019/8/7]
\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")
美國聯邦政府和民間部門聯合發布區塊鏈技術指引: 美國聯邦政府和民間部門的官員們聯合發布指引,以指導政府和承包商如何采用區塊鏈技術來改善運營。[2018/4/4]
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,探討它們和本體區塊鏈的交互。本期講述的所有語法部分我們提供了中文視頻,小伙伴們可以觀看和學習。
備受爭議的加密貨幣支付處理器BitPay駁回了一筆向亞馬遜雨林慈善機構捐款10萬美元的資金。 BitPay深陷監管漩渦Uniswap關于“部署v3至BNBChain”的提案投票已開啟投票:1月1.
1900/1/1 0:00:008月31日,滬深兩市的上市公司的2019半年報基本披露完畢,巴比特整理了其中涉及“區塊鏈概念股”的披露信息,供讀者參考。本篇是從上市公司提及區塊鏈次數的維度拆解.
1900/1/1 0:00:00對于大多數習慣了法定貨幣的人來說,把價格高度不穩定的加密貨幣作為勞動報酬的工資,實在有些難以接受.
1900/1/1 0:00:00本文介紹了區塊鏈激勵制度的演變。 最近有很多文章在討論以太坊2.0的路線圖、研究建議和現狀。但關于2.0背后的設計理念和不變量的消息卻沒有什么公開文章透露.
1900/1/1 0:00:008月26日,國務院印發6個新設自貿區總體方案,區塊鏈、供應鏈建設被重點提及。同天,51家央企在北京進行了央企商業承兌匯票互認聯盟簽約,互認聯盟成員單位代表現場還簽署了“企票通”合作公約,該平臺將.
1900/1/1 0:00:00據CoinDesk消息,美國食品和藥物管理局可能會采用區塊鏈來改進藥品和醫療產品的審查和召回。 美國法官批準對SBF父母的手機進行嚴格監控:金色財經報道,根據一份新的法院命令,美國法官批準對SB.
1900/1/1 0:00:00