Contract-Development

為什麼智能合約必須是確定性的?

  • July 11, 2022

我想知道為什麼智能合約必須是確定性的。據我了解,要部署智能合約,您只需將其作為交易的有效負載發送,而無需指定收件人。然後將其編譯為字節碼以在 EVM 上執行。所有礦工都有一些從完整鏈(一直到創世塊)派生的數據集,他們將其用作解決一些複雜數學問題的基礎,而這些數學問題只能通過蠻力來解決。解決這個問題的礦工獲得區塊獎勵(直到 ETH 切換到 PoS)。

我不明白如果契約是非確定性的,為什麼無法達成共識。它是否與契約生成的交易的驗證方式有關,而不是與契約本身的驗證有關?謝謝。

那是對的。重要的是交易執行可以由公正的一方進行驗證。這意味著任何人都必須能夠“處理”交易並獲得相同的結果。如果智能合約部署交易是不確定的,那麼我們將無法相信 EVM 和其中的智能合約會按預期執行。

要在區塊鏈上部署智能合約,您必須使用有效負載作為智能合約的字節碼和收件人作為 0 地址(銷毀地址)進行交易。如果您必須更改智能合約中的任何狀態(變數、數組等),則您必須支付 gas,因為有效負載被提供給智能合約以更改狀態。你能在確定部分更具體嗎?

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