Remix

為什麼使用 Remix JavaScript VM 部署的 Oraclize 合約會給出“無效的操作碼錯誤”,而不是在 main/testnet 上?

  • March 16, 2021

為什麼使用 Remix JavaScript VM 部署的 Oraclize 合約會給出“無效的操作碼錯誤”,而不是在 main/testnet 上?

我想過為什麼 Remix JavaScript VM 會報錯:

Exception during execution. (invalid opcode). Please debug the transaction for more information.

對於任何Create通過 Remix 介面的 Oraclize 合約,當同一個合約可以完美地部署在主/測試網上時?

最後,solc編譯合約,所以如果字節碼包含無效的操作碼,在主/測試網上一定也是這樣嗎?那麼,當合約部署在例如 Rinkeby 上時,為什麼乙太坊不抱怨呢?

有沒有人有技術洞察力來描述為什麼只有 Remix JavaScript VM 看到無效的操作碼?

Oraclize 的工作原理是:

  • 您將交易發送到 Oraclize 已部署到區塊鏈上的合約
  • 該合約將一條消息記錄到區塊鏈上,表示您已請求一些數據
  • 在 Oraclize 總部的某個地方,有一台伺服器可以監控這些消息的區塊鏈
  • 該伺服器讀取消息、獲取數據並創建將數據發送到您的合約的事務

這在主網和所有公共測試網上都可以正常工作(Oraclize 也有監控這些區塊鏈的伺服器,並在其上部署了合約)。但是,他們無法監控 Remix JavaScript VM 的區塊鏈,因為它只存在於您的瀏覽器中,因此沒有部署 Oraclize 合約。

我正在使用 javascript VM,但沒有收到任何錯誤或消息。但是

--callback

方法永遠不會被呼叫。我找到了這個答案為什麼 Oraclize 不起作用?哪種帶有 Oraclize 的 JS VM 可能無法在瀏覽器 Remix 中執行。因此,您可以使用位於https://dapps.oraclize.it/browser-solidity/的 Oraclize Remix IDE並端到端地測試您的程式碼。我還沒有嘗試過那個 IDE,如果我能夠在那裡執行我的程式碼,我會更新。

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