Blocks

如果所有節點都執行智能合約,為什麼只有區塊創建者才能獲得 gas 費?

  • March 27, 2018

我有一個關於智能合約執行的問題。

據我了解,當使用者請求智能合約時,礦工將執行智能合約,並將其輸出捆綁在一個塊中,然後廣播到網路。

但隨後所有其他完整節點/礦工將不得不檢查接收到的塊內的交易,這樣做還需要執行智能合約以查看輸出是否與礦工的相同。因此,所有完整節點最終都會執行使用者請求的智能合約。

但是,只有礦工才能獲得與智能合約執行相關的 gas。這是否意味著在礦工驗證其結果之後執行智能合約的所有節點都不會賺取任何燃料?

我理解為什麼在比特幣中只獎勵礦工並沒有什麼問題,因為大部分計算都用於解決工作量證明。但是驗證一個塊是“容易的”(驗證交易、pow 解決方案和其他一些事情)。所以公平地說,塊創建是大部分計算所在,而不是塊驗證(每個節點的成本;塊創建的能耗與驗證網路範圍內的能量消耗是我猜的另一個問題……)

然而,在乙太坊中,這並不完全相同,因為驗證一個區塊可能包括執行許多智能合約。這比我假設的僅驗證使用者<=>使用者交易成本更高。

我錯過了什麼嗎?

所有節點都執行聯繫是否會擔心智能合約的可擴展性?

考慮到所有節點都將執行此加法,通過乙太坊智能合約將兩個整數加在一起的能量程式碼是什麼?

如果對節點來說成本高昂,如何說服節點成為完整節點並驗證區塊?在乙太坊上可以合理擁有的計算量最大的智能合約是什麼?

我想我剛剛意識到每個節點都在某個時候執行智能合約的含義,因此我有很多問題。如果有人能在這方面給我一些啟發,我會很高興的!

乾杯!

但是,只有礦工才能獲得與智能合約執行相關的 gas。這是否意味著在礦工驗證其結果之後執行智能合約的所有節點都不會賺取任何燃料?

正確的。

我理解為什麼在比特幣中只獎勵礦工並沒有什麼問題,因為大部分計算都用於解決工作量證明。但是驗證一個集團是“容易的”(驗證交易、pow 解決方案和其他一些事情)。所以公平地說,區塊創建是大部分計算所在,而不是區塊驗證(每個節點的成本;區塊創建的能耗與驗證網路範圍內的能源消耗是我猜的另一個問題……)然而,在乙太坊中,這並不完全是同樣的事情,因為驗證一個集團可能包括執行許多智能合約。這比我假設的僅驗證使用者<=>使用者交易成本更高。

在乙太坊中也是如此:挖礦的大部分工作都在工作量證明中,相比之下,驗證是相當微不足道的。塊中允許的計算量和/或儲存量非常小。

如果你將系統擴展得非常大,這會有所改變——比特幣的區塊大小要大得多,乙太坊的gas限制要大得多。在乙太坊中處理這個問題的一個建議是分片,這樣每個節點只需要執行交易的一個子集。

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