Solidity

如何在 truffle 合約中在 github 上導入智能合約?

  • April 24, 2018

我正在使用一個智能合約,它在https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.4.sol導入和使用 Oraclize 合約,如果在混音編輯器中可以按如下方式完成:

import "http://github.com/oraclize/ethereum-api/oraclizeAPI_0.4.sol";

但是,如果我使用要使用 Truffle 編譯的契約執行此操作,則會出現此錯誤:

無法 從任何來源找到http://github.com/oraclize/ethereum-api/oraclizeAPI_0.4.sol ;

我嘗試簡單地將整個 Oraclize 契約複製並粘貼到我的 Truffle 契約文件中,但這會導致“無法儲存契約程式碼,請檢查您的氣體量”錯誤,無論我使用多少氣體(即使是絕對最大) - 我的猜測是因為 Oraclize 合約的程式碼長度超過 1000 行。

這應該怎麼做?

我將 Oraclize 合約複製粘貼到我的 Truffle 中,然後我能夠通過在本地執行 Parity 節點將合約遷移到 Kovan。你在執行一個有乙太幣的賬戶嗎?

查看 Truffle 文件,他們建議使用 EthPM 系統資料庫安裝依賴項:http: //truffleframework.com/docs/getting_started/packages-ethpm。在 EthPM 上,我看到有一個 Oraclize 包。我試過truffle install oraclize了,但它似乎沒有做任何事情。我不確定此功能是否正常工作。

編輯:truffle install oraclize確實正在工作並將契約放入名為installed_contracts.

將 Oraclize 與 Truffle 一起使用可以做的另一件事是在本地複制http://github.com/oraclize/ethereum-api/oraclizeAPI_0.4.sol文件並將該文件導入到您想要使用它的契約中。

Truffle 需要將合約命名為與文件相同的名稱才能編譯它,因此您需要將 Oraclize 文件重命名為 UsingOraclize.sol。

引用自:https://ethereum.stackexchange.com/questions/27332