Contract-Design
如何在 dapp 前端顯示 Oraclize 的 _callback 函式返回的結果?
我使用 testrpc 作為客戶端,使用 truffle 作為開發框架。並且還使用 ethereum-bridge 進行 Oraclize。
這是契約程式碼。我已經從 Oraclize github repo 下載了“Oraclize API”(oraclizeAPI_0.4.sol)。我已將此文件添加到 truffle contracts 文件夾中,並將文件重命名為 usingOraclize.sol。它是在給定的契約中導入。
pragma solidity ^0.4.0; import "./usingOraclize.sol"; contract ApiCall is usingOraclize { uint public DieselPriceUSD; function ApiCall() { OAR = OraclizeAddrResolverI(0x9851eb2d10b765d8857e7e1b060bc1eb166e89f2); } function __callback(bytes32 myid, string result) { if (msg.sender != oraclize_cbAddress()) throw; DieselPriceUSD = parseInt(result, 2); } function update() payable { oraclize_query("URL", "xml(https://www.fueleconomy.gov/ws/rest/fuelprices).fuelPrices.diesel"); } }
連結“ https://www.fueleconomy.gov/ws/rest/fuelprices ”中的 XML 文件如下。
<fuelPrices> <cng>2.06</cng> <diesel>2.57</diesel> <e85>1.93</e85> <electric>0.13</electric> <lpg>2.68</lpg> <midgrade>2.58</midgrade> <premium>2.82</premium> <regular>2.33</regular> </fuelPrices>
我使用“truffle”編譯了契約 Oraclize 使用 ethereum-bridge 將結果柴油價格返回為“2.57”。
我想使用 index.js 文件中的結果在前端顯示。如何在 dapp 前端使用結果?
當您在契約中獲得結果時,將其記錄為事件。使用 web3.js 或 ethjs,編寫 JavaScript 程式碼來偵聽該事件(請參閱
watch
或的文件filter
),並將其顯示在您的 HTML 頁面上。