Dapps

如果一個不誠實的節點在 EVM 上執行不同的程序怎麼辦?

  • July 25, 2016

我想創建一個程序(在乙太坊虛擬機上),它可以在特定條件下訪問一些數據(僅在獲得授權的情況下)。所以程序檢查授權,然後(最終)訪問數據。

如果一個不誠實的節點執行一個不同的程序,在沒有檢查授權的情況下訪問數據怎麼辦?乙太坊是否對想要“單獨”執行程序的節點提供一些保護?或者我應該實現一些僅在大部分節點達成共識時才允許訪問該數據的東西?

我希望我解釋清楚。謝謝

說清楚:你在區塊鏈中沒有隱私。

您可以將一些數據儲存在智能合約中,然後提供一些訪問條件。但這只是限制了通過呼叫智能合約的程式碼可以看到的數據。

至少就目前而言,區塊鏈的工作方式是,每個挖礦的人都將區塊鏈的每一點資訊都儲存在他們的磁碟上。因此,沒有人會阻止他們在不使用任何函式呼叫或與智能合約互動的情況下直接在磁碟上查找儲存在區塊鏈上的任何內容。

有一些技術可以用來隱藏區塊鏈中的資訊,但它們並不是真正與區塊鏈相關的。預設情況下,區塊鏈不提供任何隱私。

回答另一個問題:如果一個節點執行的程式碼與儲存在智能合約中的程式碼不同,它將被網路檢測到,並且不會驗證執行。

如果您的數據位於合約中,則每個節點都可以讀取它而無需請求許可。乙太坊保證的只是你的合約描述的狀態變化是正確的。正確意味著它是由具有足夠氣體的交易發起的,並且執行結果正確地發佈在區塊鏈中。這是有保證的,因為每個節點都執行合約以正確探勘區塊。因此其他節點會看到攻擊者生成的狀態樹不正確,並將該塊視為無效而拒絕。

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