創世區塊與第一個區塊相同嗎?
我正在玩一個私有區塊鏈,我意識到我不明白“創世區塊”與第一個區塊有何不同。我認為它必須像其他任何東西一樣被開採,是嗎?否則,為什麼在鏈規範的創世部分有“gasLimit”?
這僅僅是我手動進行的第一筆交易嗎?就像,如果我啟動幾個節點並在它們之間轉移一些 testETH,那是交換“創世塊”嗎?
我不得不問這個問題,因為如果沒有交易,區塊似乎不會自動發生。從我啟動 Parity 的那一刻起,我的網路上確實有一個礦工,但在我進行交易之前,我正在執行的資源管理器中看不到任何塊。
我認為這主要是一場命名辯論。我認為比特幣維基總結得很好(乙太坊也是如此,至少在命名方面):
創世區塊是區塊鏈的第一個區塊。現代版本的比特幣(或乙太坊)將其編號為區塊 0,儘管非常早期的版本將其計為區塊 1。創世區塊幾乎總是硬編碼到使用其區塊鏈的應用程序的軟體中。這是一個特殊情況,因為它不引用前一個塊……
現在回答你的問題:
就像,如果我啟動幾個節點並在它們之間轉移一些 testETH,那是交換“創世塊”嗎?
不,一旦你“轉移”,它就不再是創世區塊的一部分。
這僅僅是我手動進行的第一筆交易嗎?
從技術上講,它(創世區塊)是您進行的第一筆交易所引用的區塊(當然,這將發生在第一個區塊中)。
我認為它必須像其他任何東西一樣被開採,是嗎?
不,它不是開采的。它本質上是“系統”,或者更準確地說,是具有新鏈(或新鏈的副本)的節點開始時的 EVM 狀態。挖礦將從那時開始發生,並且很可能其他交易將引用它(就像您發送 testEth 的情況一樣。)
我不得不問這個問題,因為如果沒有交易,區塊似乎不會自動發生。
這很有趣。您是否嘗試從控制台檢查目前塊高度?我懷疑您的資源管理器可能有問題。否則,它似乎非常適合您的測試節點的特定配置。因為,**要探勘一個新塊,不必有交易。**礦工將繼續挖礦以滿足新的區塊挖礦間隔時間標準。我用 Geth 執行一個測試節點,無論是否存在交易,都會開採區塊;這基本上是礦工應該做的,也是礦工的理想行為。
更新:關於為什麼不開採創世塊的更多細節/理由。:在乙太坊網路的背景下,挖礦的基本定義有兩個:
- 處理和驗證交易(也包括智能合約)
- 使用工作量證明/ ethash 探勘區塊以獲得共識。
現在 genesis.json 文件,正如我之前回答的那樣,設置節點的狀態。***沒有實際交易,因此沒有挖礦。***在 genesis.json 的描述中實際上並沒有被轉移,它只是對錢包的描述。
限製欄位的問題
gasLimit
只是開始的一個初始參考點。它可能(並且確實)根據乙太坊主網中網路參與者的行為而改變。如果是私有鏈,您可以根據需要對其進行調整。但這與“探勘創世塊”無關。即使你將它設置得非常低,說只允許五次交易,並將一百個地址及其相應的餘額放在 genesis.json 中,創世塊也會像任何氣體一樣順暢地流動(對不起,雙關語不好)。我依靠黃皮書作為我的定義來源。