Contract-Verification
礦工如何驗證智能合約的輸出?
我是乙太坊和智能合約的新手。我理解乙太坊被建模為狀態機,智能合約作為“代理”通過交易改變狀態。然而,除非他理解智能合約中編碼的邏輯,否則礦工似乎不太可能驗證智能合約的輸出。
考慮以下範例
- 將車輛所有權從 A 轉移到 B 的智能合約。本地帳戶使用足夠的汽油和輸入作為汽車註冊號來執行此合約,從和作為數據(參數)到智能合約。礦工在這裡驗證什麼?他/她無權訪問政府車輛登記數據庫。
- 智能合約呼叫 2 或 3 個其他合約,並根據這些合約的輸出,確定接下來的步驟,例如進行預訂。礦工將如何驗證此輸出?
請告訴我。
謝謝。
除非他了解智能合約中編碼的邏輯,否則礦工似乎不可能驗證智能合約的輸出。
礦工確實了解智能合約中編碼的邏輯。編譯後的表格最初是由外部擁有的帳戶簽名的部署交易的一部分,然後字節碼成為鏈的一部分,每個人都可以看到它。
非正式地,“Alice 說‘用這個字節碼部署合約,0x123…’”,因此,0x123… 是“程式碼”,協議給了它一個地址——Alice 智能合約的地址。
礦工在這裡驗證什麼?他/她無權訪問政府車輛登記數據庫。
這是一個業務邏輯問題。也許契約一步一步地處理事情。它可以首先記錄賣家想要出售某輛車。然後它可以按照 Oracle 模式等待來自系統資料庫的簽名。這將代表業務流程中的一些重要事項,即“授權”參與者已經簽署了一些重要事項。這是所有節點都可以並且將通過檢查合約對該輸入的反應來驗證的事情。
智能合約呼叫 2 或 3 個其他合約,並根據這些合約的輸出,確定接下來的步驟,例如進行預訂。礦工將如何驗證此輸出?
只要提供了足夠的氣體,在一個互動鏈中涉及多少合約都沒有區別。無論複雜程度如何,都可以考慮立即執行它們。整個事情是確定性的,並且在一個“gulp”中處理。全有或全無。只有原始交易等待被探勘。
希望能幫助到你。