GHOST 協議是如何工作的?
我正在嘗試圍繞 GHOST 協議進行思考……我知道閱讀內容太多,但不是我的錯。GHOST 很複雜(我猜)
當我閱讀時,有人說:
GHOST 不是最長鏈共識規則,而是遵循子樹的路徑,並結合了最難的工作/難度證明。
好的,所以讓我解釋一下我是如何理解的。每個節點都從 0 塊開始。然後其他節點挖了1B塊,攻擊者介意1A塊..攻擊者秘密解決他的塊(下面的一個)。他沒有廣播它。其他節點位於 1B,現在恰好有一個分叉(2D,2C,2B),因為同時開采了塊。然後一些節點繼續前進並獲得了以 5B 結尾的最長鏈(最頂層鏈)。其餘節點(L1)位於 2C 和 2B。這些剩餘節點(L1)中的一些節點(L2)位於 3E、3D、3C。L2 中的一個節點現在位於 4B。現在,讓我們花點時間說網路上的每個人都廣播了他們的區塊鏈。攻擊者的鏈不會被接受,因為只有 1 個子樹(只有一個路徑)。而且,最頂層的鏈只有一個。正如我們在圖像上看到的,最大的子樹是 3E、3D、3C。所以會發生一些節點共享 0->1B->2C->3E,一些共享 0->1B->2C->3D->4B,一些共享 0->1B->2C->3C。假設我是 nodeA,我收到了所有廣播的鏈。當我得到所有這些時,我必須從中選擇。既然我發現2C衍生出不同的鏈條,我就應該走那條路。我遵循它並嘗試在其中找到最長的一個,結果為 0->1B->2C->3d->4B,這就是我要接受的那個。
在這種情況下,攻擊者的鏈條注定要失敗。所以我認為問題的機會之一是擁有 51% 的雜湊率功率和廣播最長的鏈已經減少(這很好)。但我仍然看到幾個問題。
- 如果沒有同時開採塊,我們將沒有如圖所示的子樹,因此 GHOST 協議在這裡無能為力。並且我們仍然有 51% 的攻擊可能性,在這種情況下,攻擊者的秘密鏈會成功。
- 因此,如果塊同時被開採,那是 GHOST 協議將幫助我們的時候。我猜 GHOST 協議是在工作量證明的基礎上增加了一點額外的安全性。但是一旦節點遵循 GHOST 協議(這意味著,他們接受了鏈 - 從圖像來看它是 0->1B->2C->3D->4B),我們就回到了原來的位置(最長的鏈獲勝)。直到再次開始同時開採塊..
- 假設攻擊者廣播了他的鏈,我的節點收到了它。並且假設由於網路傳播延遲,我還沒有收到其他節點的鏈。我的節點如何知道它不應該接受攻擊者的鏈?如果我的節點已經收到所有其他節點的鏈,它會發現 0->1B->2C 中的子樹更大並且會拒絕攻擊者的鏈。任何想法 ?
我認為您錯過的主要問題是 GHOST 打算解決的問題。
它首先旨在作為可擴展性/速度升級。我們希望增加每個塊的大小和/或減少塊之間的間隔。這些中的任何一個都會增加傳播時間和塊間隔之間的比率。
比率越高,我們得到的同時開采的塊就越多。然後大量誠實的算力被浪費在孤立的區塊上。
這使得攻擊者更容易進行攻擊,因為他不需要比誠實網路擁有更多的算力 - 他只需要比誠實網路的未浪費算力更多的算力。
現在這不是什麼大問題,當塊相隔 10 分鐘並且大約 3MB 時。但是,如果我們嘗試將塊之間的間隔減少到 1 秒,那麼傳播塊的時間將是平均找到塊的時間的倍數,從而導致巨大的浪費和容易攻擊。
GHOST(以及最近的 SPECTRE)旨在讓我們在不浪費這種浪費的情況下增加塊大小或速度。
和你說的相反,簡單地採用GHOST不會導致塊樹的分支減少。這只是意味著我們不會因為這個分支而浪費算力。
關於問題 3 - 我認為你把事情搞反了。雙花攻擊的工作方式是:
- 攻擊者支付商家,tx 包含在誠實鏈中。
- 商家提供產品。
- 攻擊者發布秘密鏈,其中的 tx 被攻擊者的信用所取代。
- 攻擊者既有產品又有錢。
如果你不是最新的網路狀態,並且認為攻擊者的鏈正在獲勝,即使它不是,你實際上更好 - 你會看到攻擊者打算不支付,你會知道不發送產品。
在我發送產品後,我希望整個鏈都辨識支付給我的 tx。即使有節點不是最新的,並且簡單地認為攻擊者的鍊是有效的——這將在他們收到他們失去的塊後迅速解決(並看到誠實的鏈具有更大的權重)。