使用Truffle助力Chainlink智慧合約開發

買賣虛擬貨幣

Chainlink是領先的區塊鏈專案之一,它構建了第一個為智慧合約提供外部資料的去中心化預言機網路。Truffle透過提供強大的開發框架,幫助智慧合約開發人員建立,測試和部署智慧合約。Chainlink在其的博文中表示,他們的Chainlink Truffle Box得到了一些重大的升級!如果你有幸參加了Trufflecon 2019,那麼你已經看到了這些改進,同時也感謝Chainlink的Thomas Hodges所帶來的演講。如果您想開始開發您自己的Chainlink智慧合約,您可以按照此處的指南獲取Chainlink的Truffle Box。

本文將從Truffle Scripts開始展示這些全新的產品。Truffle Scripts建立了一種更方便的與合約互動的方法,為合約轉入LINK,從而可以請求資料,並且在讀取合同的資料時只用三個命令。為了演示此功能,我們首先需要設定我們的環境變數:MNEMONIC和RPC_URL。

使用(以太坊)區塊鏈需要支援該鏈的錢包,其中最受歡迎的選擇之一是MetaMask。您可以非常方便的在幾分鐘之內擁有自己的以太坊錢包,輕鬆地與各種dApp互動。在帳戶生成期間,您將看到您的秘密12字種子短語,稱為助記詞。(請不要與任何人您的助記詞;如果有人知道你的助記詞,他們將會獲取到你的地址和私鑰)。請務必將此助記詞儲存在安全的地方,因為稍後我們還將要用到它來完成我們的示例。

此外,您還需要為MetaMask錢包提供測試網路Ropsten上的LINK和ETH資金,以便為Ropsten Ethereum Testnet上的交易提供交易費用。

注意:從測試水龍頭為您的帳戶轉入資金時,請確保從預設的以太坊主網路切換到Ropsten測試網路,以正確檢視您在Ropsten測試網路上的資金。您可以透過Etherscan跟蹤在Ropsten Testnet上進行的任何交易。

我們的第二個環境變數將需要(以太坊客戶端的)RPC URL。一些流行的RPC連線服務包括Infura,LinkPool和Fiews。在建立有效的RPC連線和向地址轉入資金後,您就可以將智慧合約部署到測試網路上了。

上面顯示的是將MetaMask錢包連結到Truffle所需的環境變數,可以在truffle-config.js中找到。

獲得所需的所有資料後,可以透過終端命令設定環境變數:

export RPC_URL=your_url_here export MNEMONIC=’your 12 words here’

部署

我們現在準備在公共測試網路上部署我們的智慧合約。

首先,執行命令:

npm run migrate:live

這將編譯所有智慧合約,然後開始部署它們。

注意:您可能會遇到Chainlink合約的一些編譯警告。這只是因為LINK token最初部署的是較舊版本的Solidity。鑑於此合約僅在您執行測試時部署,因此可以忽略這些警告。

我們的一個合約部署的控制檯輸出。這個交易可以在這裡找到。

部署我們的Migrations和MyContract花費了我們ETH,這就是為什麼我們需要提前從水龍頭中轉入資金。現在我們的合約已經部署,我們可以利用三個幫助指令碼為LINK(我們從Chainlink水龍頭獲得的)提供MyContract,建立請求和讀取狀態。

這是位於指令碼目錄中的3個幫助指令碼,用來與我們的合約進行互動:

fund-contract.js
request-data.js
read-contract.js

可以透過從npx truffle exec呼叫它們。首先,我們必須為合約轉入LINK資金,這可以透過執行以下命令來完成:

npx truffle exec scripts/fund-contract.js --network live

部署後,輸出顯示我們的合約地址以及交易地址。我們也可以在ropsten瀏覽器上檢視。

請注意,完成後,在交易過程中支付了1個LINK,表明我們的合約已得到資金。接下來,我們現在可以透過執行以下命令來請求合同中的資料:

npx truffle exec scripts/request-data.js --network live

這是您發出請求在Chainlink瀏覽器中的展示(在我們的示例中,我們使用Ropsten,但它對Rinkeby,Kovan和Mainnet也同樣適用)。正如您所見,Chainlink節點接收了我們的請求,並在執行作業之前等待3個塊確認。現在我們準備讀取Chainlink節點給我們回覆的合約狀態,由履約交易表示(以紅色突出顯示)。

最後,為了讀取資料,我們執行了read-contract指令碼。特別需要說明的是,這個操作會執行得很快,因為我們沒有建立交易,我們只是閱讀智慧合約的當前狀態。

npx truffle exec scripts/read-contract.js --network live

在閱讀資料時注意我們的輸出,我們得到一個數字,以USD * 100顯示LINK的當前價格(本文寫作時該值為22094)。這是由於我們的智慧合約request-data.js中指定的倍數。

_Request-data.js。TRUFFLE_CL_BOX_TIMES是一個環境變數,用於覆蓋預設值100。此值用於處理資料的精度(在這種這個例子中是,以美元為單位的ETH價格),因為Solidity無法處理小數。這些值可以根據您的實際情況來更改。

得益於Truffle的強大功能,開發智慧合約從未如此簡單。我們希望您喜歡使用我們的Chainlink Truffle Box,讓您可以在網路上進行完整的測試,部署和互動合約。感謝您的閱讀,並請繼續關注https://blog.chain.link/上的未來更新。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;