Solidity
在solidity智能合約中呼叫現有的python程式碼
我想在我的乙太坊智能合約(用 Solidity 編寫)中呼叫一些現有程式碼(用 Python 編寫)。有可能這樣做嗎?如果是這樣,我們該怎麼做?
EVM 是隔離的,這意味著沒有外部世界的 I/O。但是,您可以按照您的 python 程式碼對鏈上發布的事件做出反應的方式對其進行程式。這不會為您提供鏈上交易的 ACID 屬性,但它可能是一個有效的解決方案,具體取決於案例。
無論現在還是將來,EVM 都是內部一致的、確定性的和可複制的。它唯一的輸入是簽名交易。其中包括來自使用者的消息和來自礦工的交易排序塊。
契約無法檢查外部來源,因為將來無法確認此類步驟的正確性。也就是說,沒有辦法使用 API 來獲取數據,因為沒有辦法在保證節點將來能夠複製和確認數據的情況下建構這樣的東西。
該問題的解決方案是 Oracle,它是一個定期簽署輸入的使用者。契約不是諮詢外部來源,而是諮詢 Oracle 的輸入。預言機可以是特定案例設計中的特權使用者,也可以是通用中繼,它們通過回調過程(例如 Oraclize)諮詢源和報告。
預言機將數據推送到契約中,這與諮詢外部事物的契約相反。
希望能幫助到你。