比特幣不會從在每個節點上分配部分區塊鏈中受益嗎?
為什麼每個節點不只儲存區塊鏈的一部分?
例如,如果你有 100 個節點,每個節點將儲存 10% 的區塊鏈。這將相當於區塊鏈各個方面的顯著重疊,並且隨著節點的出現和離開,區塊鏈的共享將會增加或減少。
不可行嗎?如果是這樣,為什麼?我有興趣將其作為一個項目進行,因為我認為它可以解決很多比特幣的可擴展性/去中心化問題。
根據我對區塊鏈的理解,讓我們假設一個特定的節點從創世塊開始。讓我們假設另一個節點在創世塊之後儲存了 1% 的區塊鏈。多個節點不能以每 10 分鐘一次的速度驗證它們共享的 9% 的塊雜湊嗎?它不會真正使用那麼多數據——你可以將區塊鏈的 9% 散列到特定值,生成公鑰,然後查看其他節點是否可以將私鑰與所述公鑰匹配。
一個相關的問題:這就是 Electrum 所做的嗎?或者,Electrum 是否只是將整個區塊鏈儲存在可以連接的多個伺服器上?
為什麼每個節點不只儲存區塊鏈的一部分?
這之前已經提出過,並且在比特幣中是可能的,但目前尚不清楚它將如何執行。這些塊不是執行節點的重要組成部分,對於大多數人來說,一旦您將它們處理到您的 UTXO 數據庫中,您就可以將它們丟棄。
當決定儲存哪些部分以及向網路中的其他人發出信號表明您擁有某個塊子集時,問題就出現了。您不能宣傳散列列表,因為這將是龐大且低效的(每個對等點數兆字節),並且進行確定性隨機選擇是非常成問題的。選擇區塊範圍並不理想,因為大小不一致,鏈開頭的 1,000 個區塊比末端的伺服器小幾個數量級。在隨機選擇的簡單實現中,嘗試與網路同步的對等點可能需要建立數千個連接才能找到具有特定塊的單個對等點,這顯然是不可行的。
根據我對區塊鏈的理解,讓我們假設一個特定的節點從創世塊開始。讓我們假設另一個節點在創世塊之後儲存了 1% 的區塊鏈。多個節點不能以每 10 分鐘一次的速度驗證它們共享的 9% 的塊雜湊嗎?它不會真正使用那麼多數據——你可以將區塊鏈的 9% 散列到特定值,生成公鑰,然後查看其他節點是否可以將私鑰與所述公鑰匹配。
這不是必需的,而且很容易受到 Sybil 攻擊,一旦你看到它們就不需要驗證塊。修剪過的節點今天的工作方式是這樣的,只是它們丟棄了每個塊,並且絕對儲存的只是它們被指定為疼痛的東西。他們不宣傳他們擁有哪些區塊,因為沒有這樣的機制。
您可能想了解 autoprune 更新檔的工作原理,並更好地掌握此處需要解決的威脅模型。您稍微遺漏了一些操作,請注意,節點節點的修剪不是按照白皮書中描述的方式操作的,UTXO 是 0.8.0 時代比特幣核心中添加的一個新概念。
一個相關的問題:這就是 Electrum 所做的嗎?
根本不是,Electrum 伺服器是一個完整的節點和一個極其繁重的基於地址的索引,儲存大小幾乎翻了一番。客戶端很輕,但伺服器絕對不是。以分片方式維護這些索引沒有明智的方法,儘管您可以將地址分成多個池,並希望人們為每個分片維護足夠的量,以便客戶能夠請求訂閱所有地址。理想情況下,系統將被設計為不需要完整索引,因為它們越來越難以使用。