Blockchain

關於分叉安全性的問題

  • February 9, 2018

閱讀乙太坊的白皮書,我提出了以下關於分叉的問題。讓我解釋一下:

假設我將1 ETHER發送到地址A1以購買東西,並且此交易記錄在塊 100上。幾個小時後,更多的區塊被添加到區塊鏈中,他們通過每個區塊包含的PreviousHash資訊間接確認了****區塊 100 。**如果 ETH 在第99 塊 分叉,我會拿回我的1 ETH**,然後我可以再次使用它。我想這將是雙重支出,這不是分叉的工作方式。

  1. 分叉是如何發生的/如何選擇將兩個新區塊鏈分開的區塊?
  2. 分離區塊鏈有什麼意義?我的意思是,由於工作量證明,網路的目前狀態是正確的已經達成共識。為什麼要分叉?

分叉是如何發生的/如何選擇將兩個新區塊鏈分開的區塊?

乙太坊的平均出塊時間目前在 14 秒左右。出塊時間越短,兩個(或更多)礦工同時找到給定區塊工作證明的解決方案的可能性就越大。共識規則意味著這兩個(或更多)塊中的一個最終將被認為是正確的,但在那之前,可以從每個塊中發展出不同的鏈。

這是一個“自然”發生的事件,每天會發生很多次,這就是為什麼乙太坊有叔叔的想法,這有助於合併來自最終被認為無效的任何鏈的交易。


如果 ETH 在第 99 塊分叉,我會拿回我的 1 ETH,然後我可以再次使用它。我想這將是雙重支出,這不是分叉的工作方式。

自然分叉通常發生在鏈頭,在最新的區塊上。如果您的交易是在第 100 塊中合併的,並且在第 100 塊之上建構了多個塊,那麼在第 99 塊上不太可能發生“自然”分叉事件。(我需要注意幾點

$$ and @lungj $$可以想到:a)如果網路在第 99 塊時以某種方式被分區,然後稍後重新連接,b)如果您在完全同步鏈數據之前開始探勘。) 也許更有可能是一次攻擊,攻擊礦工故意選擇從第 99 個區塊分叉,以試圖從後來的區塊中雙倍花費資金。要做到這一點,他們需要足夠的散列能力來創建一個比其他人認為正確的分叉長1的分叉。這被認為是51% 攻擊

1 “更長”是指累積難度更大。

在這種情況下,實際上有 2 個不同的分叉需要解釋。

技術分叉:

  1. 這是礦工都有效地一起挖礦的時候,但有時 2 個不同的塊 100 由不同的礦工開採,並且網路同時看到它們,它們都是有效的。所以其他礦工會選擇一個並開始在上面挖礦。這通常是短暫的,並導致孤兒。
  2. 這沒有任何意義,它只是自然地發生,因為礦工試圖以最快的速度獲得一個區塊。

政治叉:

  1. 當礦工決定在與另一個區塊鏈的規則不匹配的區塊上執行規則時,就會發生這種情況。區塊號通常是任意的,它只是為礦工選擇的一個區塊,用於切換到與原始區塊鏈不兼容的新規則。
  2. 這是因為共識規則存在分歧。範例:比特幣現金從比特幣分叉,因為他們想要改變比特幣核心不想要的共識。

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