您的位置:首頁 > 區(qū)塊鏈 >

Truffle可提供易于使用的dApp框架 幫助Chainlinked正確運行

2019-08-09 11:16:02 來源: 區(qū)塊網(wǎng)

Truffle 是區(qū)塊鏈公司 ConsenSys 的一家子公司,它已經(jīng)為以太坊區(qū)塊鏈開發(fā)了一個開源區(qū)塊鏈開發(fā)環(huán)境和測試框架。近日,微軟和Truffle宣布結(jié)為

Truffle 是區(qū)塊鏈公司 ConsenSys 的一家子公司,它已經(jīng)為以太坊區(qū)塊鏈開發(fā)了一個開源區(qū)塊鏈開發(fā)環(huán)境和測試框架。近日,微軟和Truffle宣布結(jié)為伙伴關系,為微軟 Azure 生態(tài)系統(tǒng)引入?yún)^(qū)塊鏈開發(fā)者工具。這兩家組織正在進行的投資包括用于測試的本地區(qū)塊鏈節(jié)點,并提供測試數(shù)據(jù)、智能合約的撰寫和持續(xù)部署、調(diào)試及測試。

在使用Chainlink時,強大的開發(fā)工具可以幫助您的智能合約在鏈上安全地部署成功。Truffle旨在提供一個易于使用的dApp框架,以幫助開發(fā)人員更好地開展其dApp的開發(fā)工作。

Truffle非常易于上手,Truffle Boxes的特點決定了您可以直接在終端下載dApp樣板。為了幫助您使用Chainlink,我們提供Chainlink Truffle Box樣板。其中包含了一個名為“MyContract”的的Chainlinked智能合約示例以及預制的測試套件。首先需要打開終端并安裝Truffle。

npm install truffle -g

接下來,創(chuàng)建一個新的目錄,并通過下面的命令從box中獲取Chainlinked示例合約:

mkdir Chainlink

cd Chainlink

truffle unbox smartcontractkit/chainlink

開箱之后,您會發(fā)現(xiàn)有一些新目錄會自動創(chuàng)建。其中包含了很多非常有用的示例代碼,可以幫助您快速開始Chainlinked智能合約的開發(fā)。

本文我們主要會介紹“MyContract”合約,代碼文件可以在*contracts*目錄下找到。其中包含了一些基本的Chainlink功能,可以幫助我們深入理解Chainlinked合約是如何工作的。

## 測試

首先,測試合約以確保其一切正常。您可以通過以下命令執(zhí)行此操作:

npm test

這將在樣本合約上運行各種測試用例,例如創(chuàng)建帶有和不帶LINK代幣的請求,將這些請求發(fā)送到oracle合同地址以及測試合同所有權。

*注意:你可能會遇到一些LINK代幣合約的各種編譯警告,這是因為我們用的是最新的Solidity編譯器版本,而不是合約創(chuàng)建時候的編譯器版本,因此我們可以忽略這些警告。LINK代幣合約已經(jīng)部署,我們只是想這些合約提供給本地測試。

*需要注意的是,每次運行測試之后,我們都重新部署了每一個合約。這是為了我們可以進行真正的單元測試, 我們不想我們的測試依賴于其他測試的輸出。另外,重新部署每個合約需要時間,但這僅用于測試目的,不會影響我們的實際性能運行時間。

現(xiàn)在讓我們來看一下“MyContract”的這些測試用例的更多細節(jié),您可以在*test/MyContract_test.js*下找到。如果您之前使用過Mocha.js,您會發(fā)現(xiàn)語法很熟悉。Truffle基于Mocha測試框架,具有智能合約的特有功能。讓我們來看看其中的一些新功能。

定義MyContract合約所使用的變量。注意其中jobId值是演示所用的占位符,不是真正可用的JobId。您可以在這里找到真正可用的JobId。

contract()函數(shù)的功能和Mocha中describe()函數(shù)實現(xiàn)的功能類似,但它結(jié)合了Truffle中的clean-room-feature。在Truffle的文檔中這樣解釋:

- 在每個contract()函數(shù)運行之前,您的合約將重新部署到以太坊網(wǎng)絡,其中的測試以原始的合約狀態(tài)運行。

- contract()函數(shù)提供了可以用來編寫測試的可用帳戶列表。

此外,我們的示例“MyContract”需要來自其他智能合約的輸出。為此,我們將使用artifacts.require()方法,該方法實質(zhì)上將特定智能合約的輸出作為合同抽象導入。此數(shù)據(jù)存儲為Truffle可以使用的JSON 二進制對象查看到。閱讀更多有關artifacts.require()如何在這里工作的信息。

助手合約存儲為常量引用,現(xiàn)在我們可以開始創(chuàng)建測試用例。為此,我們需要正確理解關鍵的測試方法,例如*describe(),beforeEach(),it()和context()*。

- *describe()* 允許我們將測試用例組合在一起。它需要兩個參數(shù),第一個是我們的測試組名稱的字符串,第二個是回調(diào)函數(shù)。這個方法涉及的測試用例是創(chuàng)建請求,完成請求,取消請求以及取回LINK。

- *beforeEach()*在每個單獨的測試范圍之前運行。對于許多測試來說,在運行測試用例之前,必須首先執(zhí)行一些操作(例如等待鏈LINK的轉(zhuǎn)賬)。

- *it()*用于單個測試用例。這些用于測試我們在不同狀態(tài)下的合約以及明確他們想要完成的任務。你會注意到當我們運行npm test時,每個*it()函數(shù)*的參數(shù)中的字符串都會輸出為日志,這有助于我們清楚地看到我們的測試時間線。

- *context()*是*describe()*的別名,但是用于合同執(zhí)行的更具體的狀態(tài)。換言之,它提供了另一種更容易閱讀和更有條理的測試方法。

## 寫在最后

Truffle提供了一個功能強大的工具箱,可幫助您的Chainlinked智能合約正確的運行。得益于Mocha.js這樣的流行的且文檔豐富的世界級測試框架,開發(fā)人員會非常容易的實現(xiàn)相關的開發(fā)工作。使用Truffle boxes,dApp公司能夠輕松地為其開發(fā)人員提供有用的示例,幫助發(fā)展區(qū)塊鏈生態(tài)系統(tǒng)。(Chainlink)

關鍵詞: Truffle dApp框架 Chainlinked

精選 導讀

募資55億港元萬物云啟動招股 預計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當日啟動招股,預計發(fā)行價介乎每股47 1港元至52 7港元,預計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復深交所關注函 股份繼續(xù)沖高

回復交易所關注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權,交易雙方共同確定本次交易的標的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標利率2 10%。這已是央行連續(xù)7日每天僅進行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進加息的擔憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達克綜合指數(shù)下跌29 5%,標普500指數(shù)下跌20 6%。其中,納斯達克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強,滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17