首頁科技 > 正文

一文看懂以太坊日食攻擊的底層邏輯以及叔塊機制

2021-06-26由 火星財經 發表于 科技

一文看懂以太坊日食攻擊的底層邏輯以及叔塊機制

免責宣告:本文旨在傳遞更多市場資訊,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

小編:記得關注哦

日食攻擊是一種攻擊去中心化網路的手段,攻擊者試圖透過這種手段來隔離和攻擊一個或多個特定使用者,而不是攻擊整個網路。

在本文中,我將解釋以太坊的一些特性,包括其叔塊堵塞機制,如何使其更容易受到這種攻擊。

區塊鏈中的資料結構

區塊鏈是一種去中心化協議,它將資料庫分佈在其網路中的多個節點上,為過去、當前和未來的交易建立共識機制。區塊鏈中的資料結構表示為區塊。

在去中心化的區塊鏈網路中,參與者同意什麼是正確的,而不是中央權威。區塊鏈也是透明和不可變的,所有網路參與者都可以看到網路上發生的事情,除非透過商定的機制,否則交易日期無法更改。

比特幣區塊鏈中的區塊型別

創世區塊

創世區塊是任何區塊鏈的第一個區塊,該區塊是系統的基本起點,並與所有未來的交易相關聯。世界上第一個創世區塊是由 中本聰 建立的,並以此創造了比特幣。

創世區塊的存在使區塊鏈能夠透過允許新建立的區塊與以前的區塊相關聯來生成其交易歷史。此外,創世區塊在同步網路節點方面具有重要作用——它們的資料庫中必須具有相同的創世區塊。這確保了區塊鏈的分散式交易簿對每個人都是相同的,從而提供了安全性。

主鏈區塊

主鏈區塊是所有經過驗證幷包含在區塊鏈中的區塊。為了實現這一點,區塊必須透過一個節點解決其分配的加密難題來獲得網路的同意。一旦網路達成共識,區塊就會包含在區塊鏈中,並由所有節點傳播。這樣,該網路的每個節點都有新的區塊,並作為它的驗證點。

每個有效區塊都包含一系列與該區塊一起驗證的交易。例如,在比特幣中,每個有效區塊平均承載2100筆交易。確認有效區塊中的每筆交易。

所有有效區塊繼續確認之前的交易,完全保護網路上的所有區塊和交易。當然,每個有效區塊包括允許驗證的資料結構。該結構包括區塊的雜湊值、時間戳、nuncio和區塊交易資料。搜尋候選解決方案的過程稱為挖礦,參與節點稱為 礦工 。每個為區塊的加密難題生成有效解決方案的礦工都成為領導者,並被允許確定未確認的交易集,然後將這些附加到區塊鏈。

孤立區塊

一文看懂以太坊日食攻擊的底層邏輯以及叔塊機制

孤立區塊或陳舊區塊是不屬於區塊鏈的有效區塊。當兩個礦工幾乎同時驗證區塊時,或者當具有足夠雜湊能力的攻擊者試圖逆轉交易時,可以建立這些資料。在這些情況下,網路共識協議將發揮作用,以決定哪些區塊將被包含在區塊鏈中,哪些區塊將被孤立。

實際上, 區塊鏈 網路被程式設計為始終支援最長的區塊鏈。也就是說,它會選擇包含更多資訊或處理過交易的區塊。在比特幣區塊鏈中,孤立區塊被丟棄,礦工所做的工作是無用的。

此外,正是由於這種型別的區塊,大多數 交易所 和一些錢包會在提供資金之前自動等待額外的確認。他們透過計算您正在接收的交易和當前塊之間開採了多少塊來做到這一點。

>eth。getBlock(blockNumber)}>eth。syncing。highestBlock-eth。getTransaction(““)。blockNumber

區塊是如何驗證的?

一文看懂以太坊日食攻擊的底層邏輯以及叔塊機制

區塊鏈系統使用Merkle樹資料結構執行,這使得它們(在理論上)不可變。Merkle樹是RalphMerkle在1979年申請專利的,在加密學中被廣泛使用。Merkle樹是驗證共享資料未更改、損壞或更改的基本方法,並且非常適合區塊鏈,因為它是輕量級的。例如,由於比特幣的Merkle樹結構,使用者的移動錢包不需要下載所有的比特幣交易來驗證它們。

給區塊中的每筆交易對應於Merkle樹中的一個葉子,透過雜湊單筆交易從這些葉子遞迴構建。

交易對(葉子)被雜湊以建立可能對應於區塊鏈網路中的交易的其他葉子節點。儘管可以從大量交易中建立Merkle樹,但Merkle根始終對應一個32位元組或256位的字串(例如SHA256雜湊演算法總是輸出32位元組的固定長度,無論輸入中的大小)。透過這種方式,我們可以使用小至32位元組的資料來驗證多達數千筆交易。

根據案例,任何更改,無論多麼微小,都會阻止Merkle根的驗證,並使區塊鏈的部分或全部歷史失效。

以太坊區塊鏈中的區塊型別

以太坊與比特幣的不同之處在於是它具有更快的區塊建立機制,旨在加快交易過程。但是,當區塊生成之間的時間間隔很短(大約15秒)時,會建立大量的孤立區塊,因為將所有這些區塊都包含在區塊鏈中是低效的。

這導致了礦工浪費時間在區塊上工作而得不到報酬的問題。為了解決這個問題,以太坊的開發者推出了GHOST協議。

GHOST代表Greedy Heaviest Observed Subtree,概念很簡單。它獎勵驗證孤立區塊的礦工,儘管其獎勵低於標準區塊。為了釋放獎勵,該區塊必須被主鏈中的區塊或叔塊引用。

該機制的另一個優點是解決了網路中心化的問題。當區塊被快速建立時,大型 礦池 很容易壟斷區塊驗證,從而導致較小的競爭對手建立無窮無盡的孤塊區塊。

以太坊區塊鏈中有兩種型別的區塊:

主鏈區塊是包含在以太坊區塊鏈中的區塊。發現它的礦工將獲得獎勵。

叔塊是經過身份驗證但未包含在主鏈中的區塊。礦工為此獲得的獎勵低於有效區塊。

想象一下,世界不同地區的兩個礦工同時挖出同一個區塊。然後他們在網路中傳播他們的區塊。這可能會在區塊鏈中造成的分歧,因此必須選擇一個,而較大的區塊將永遠獲勝。未選中的區塊成為孤立區塊(在比特幣中)或叔塊(在以太坊中)。與比特幣不同,以太坊礦工挖礦將獲得整個區塊的1/8獎勵。

叔塊獎勵如何運作?

主鏈區塊的礦工可以參考叔塊,當他們這樣做時,額外的獎勵分配給主鏈區塊的礦工和叔塊的礦工。主鏈中包含的每個區塊最多可以引用兩個叔塊,併為每個引用的叔塊提供1/32的完整區塊獎勵。然而,支付給叔塊礦工的獎勵會隨著時間的推移而減少。

透過保證對否則會浪費的計算工作進行補償,並透過使獎勵隨著時間的推移而減少,競爭鏈上的礦工有動力重新加入主鏈。這些叔塊有助於區塊鏈安全,也降低了51%的攻擊機率。

在以太坊礦池中,可以透過多種方式進行分佈:

按比例支付計劃

在這個簡單的方案中,礦工將根據在礦池發現的兩個區塊之間的時間間隔內提交的代幣數量獲得相應的獎勵。因此,區塊獎勵B根據他們各自提交的代幣數量在 資金池 中的N個礦工之間進行分配。

按最後N股支付(PPLNS)

PPLNS計劃按照最近提交的N股成比例分配獎勵。

基於佇列的支付方案

Ethpool3是第一個引入基於佇列的獎勵機制的以太坊礦池。在該計劃下,礦工為提交給礦池運營商的每份代幣累積信用。每當礦池挖出一個完整的區塊時,區塊獎勵就會分配給礦池中累積信用餘額最高的礦工。然後,頂級礦工將其信用餘額重置為他們自己與礦池中第二高信用餘額之間的差額。

引用關係建立了額外的薄荷獎勵,普通區塊所有者的完整區塊獎勵的1/32和叔塊的 (8-i)/8。根據引用的塊高度,變數 i的範圍從 1到6 。

除了完善區塊鏈的結構外,以太坊還有另外兩項安全改進。一種是隨機打破平局規則。一個節點不接受第一個接收的鏈,而是在所有接收到的相同長度的鏈中隨機選擇一個鏈。數γ不再固定,等於競爭鏈數的倒數。另一個目的是赦免叔塊挖礦的策略。

叔塊和日食攻擊

日食攻擊如何工作?

日食攻擊要求攻擊者控制主機節點的殭屍網路(每個節點都有自己的IP地址),並找出受害者的相鄰節點,基本上是透過反覆試驗。實現這一目標所需的努力取決於網路的規模和性質,但如果成功,在受害者登出並重新加入網路後,攻擊者將控制所有受害者的連線節點。

在這種情況下,存在三個參與者——攻擊者、受害者和誠實節點。如果受害者找到一個區塊,攻擊者就不會將該區塊傳播到網路。如果攻擊者發現了一個區塊,他們就會與受害者分享。透過這種方式,攻擊者為自己和被遮蔽的節點建立了一個私有區塊鏈。

透過這樣做,攻擊者可以獲得比誠實挖礦多96。4%的收益。日食攻擊是可能的,因為在去中心化網路中,一個節點無法同時連線到網路上的所有其他節點。相反,為了提高效率,給定節點將連線到一組選定的其他節點,而這些節點又連線到自己的選定組。因此,僅使用兩臺具有唯一IP地址的機器就可以發起日食攻擊。

以太坊依賴於基於名為Kademlia的協議的結構化網路,該協議旨在讓節點更有效地連線到其他節點。透過使用金鑰生成演算法,攻擊者可以非常迅速地建立無限數量的節點ID(點對點網路上的識別符號)。更糟糕的是,攻擊者甚至可能以一種比隨機節點ID更吸引受害者的方式建立節點ID,基本上把受害者吸引到這些節點ID上。

以太坊有三個特徵可能使其容易受到日食攻擊。首先,快速建立區塊會產生無窮無盡的鬆散區塊,透過增加以太坊的供應量間接侵犯了誠實礦工的利益。其次,叔塊機制意味著節點可以從這些區塊中獲利。第三,以太坊增強的節點連線性為攻擊者提供了動力。

頂部