Blockchain

什麼時候創建一個新塊?

  • April 7, 2019

我目前正在閱讀一本關於 Solidity 的有趣書籍,並且正在閱讀有關塊創建的書籍。這提供了一個很好的概述:

在此處輸入圖像描述

書中提到,區塊的最大大小由gas上限和區塊大小決定。

對於何時需要創建新塊,我有點困惑。

在另一個例子中,他們給出了一個例子,其中 gas 值甚至沒有達到gasUsed區塊的屬性,甚至沒有接近gasLimit.

因此,在添加的範例中,Sam 想要將 $$ 添加到 Mark。但我不清楚如何決定需要創建一個新塊。

我的意思是,一個區塊由多個交易組成,那麼為什麼不將這個交易附加到一個已經存在的區塊上呢?

相關的是,我在任何地方都讀到,礦工根據不斷變化的隨機數“解決難題”創建了一個新塊。那麼是誰創造了這個謎題呢?

同樣相關的是,他們提到了“創世”區塊,它是區塊鏈中的第一個區塊,但對此沒有疑問,那麼誰創建了第一個區塊?在區塊鏈中,如何決定我們需要一個新的創世塊?因此,“乙太坊區塊鏈”是區塊鏈的組合(每個區塊都有自己的創世區塊)嗎?

我知道,有很多問題…如果您希望我將這些問題分開,我會的。但由於它們密切相關,我希望一個單一的答案可以立即澄清這些問題。

以不同的順序回答您的問題。我想我涵蓋了所有內容,但請隨時在評論中提出後續問題。

  1. 創世區塊是簡單商定的,而且只有一個。在同一個創世區塊工作的任何人都是同一個區塊鏈的一部分。
  2. 如您所說,要向鏈中添加一個塊,礦工“解決了一個難題”。這稱為採礦。他們從一組交易中建構一個塊。這完全取決於他們,但他們通常會使用他們知道的所有適合的交易。這個新塊有一堆標題,包括對鏈中前一個塊的引用。然後,他們嘗試找到一個nonce,以便將該 nonce 與所有其他標頭一起散列產生一個小於難度門檻值的值。
  3. 一旦礦工找到一個有效的隨機數,他們就開采了一個新區塊。這個塊被發送到網路的其餘部分。現在有了一個新區塊,每個人都在此基礎上轉向挖礦。那麼“誰創造了這個謎題?” 有點像“每個人”。謎題由前一個區塊的雜湊值和正在探勘的新區塊的內容定義。
  4. 為什麼不直接將交易添加到現有區塊的答案是區塊是不可變的。改變一個就意味著改變它的雜湊值,這意味著它必須再次被探勘。一個礦工可以嘗試這樣做,但與此同時,所有其他礦工都已經移動到下一個區塊,因此他們將擁有更長的區塊鏈,而最長的區塊鏈始終是“正確”的區塊鏈。

需要注意的是,難度會不時根據公式自動調整,目標是以一定的速度開採區塊。如果塊的開採速度過快,則調整難度以使開採更加困難,反之亦然。

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