Dapps
關於 oraclize api 的問題
任何人都知道 oraclize api 是如何工作的。我閱讀了 github.com/oraclize/ethereum_api 上的原始碼文件。我的合約中需要一個“__callback”函式來接收結果,這是否意味著有一個離線應用程序可以觀看事件並提供結果?
Oraclize 使用後端程序來偵聽查詢並提供來自不同類型數據源的結果,包括 IPFS、random.org 等。
他們能夠提供證據證明返回的數據沒有被操縱。在 random.org 的情況下,他們提供結果的簽名,然後最終使用者可以使用該簽名恢復 random.org 的公鑰。
每次查詢的定價為幾美分,主題應承擔交易的 gas 成本。不幸的是,他們沒有辦法預先確定氣體,使用者應該提供足夠數量的乙太來支付氣體成本。如果不是,則不會執行查詢。此外,它們不會返回未使用的氣體,如果您的應用程序需要持續使用該服務,這是非常糟糕的。
結果被傳遞給一個應該與預期名稱匹配的函式,這是因為合約的介面應該是事先知道的,所以 oraclize 可以呼叫它。然後,使用者可以將想要執行的程式碼放入 callBack 函式中。
我希望這有幫助,
更新
有人評論說 oraclize 不會返回未使用的氣體並聲稱如果我刪除該聲明它將刪除反對票是錯誤的。
事情是 Oraclize 聲明他們不會在文件中返回未使用的氣體:
智能合約開發人員應正確估計並最小化他們的 __callback 方法的成本,因為任何未使用的 gas 都將返回給 Oraclize 並且不提供退款。
評論者錯了。但是,它添加了一條有價值的資訊,因為他/她表明 oraclize 接受其他支付方式,例如法幣的鏈下支付,其中收取的 gas 是花費的費用加上費用。