Protocol

Ripple 如何解決雙花問題?

  • November 12, 2013

Ripple 系統如何解決雙花問題?它是否還使用了一些類似區塊鏈的實體來正式規定哪些交易被確認,哪些交易未被確認,或者它是否使用了其他一些聰明的機制?

細節非常複雜,但核心概念相當簡單。Ripple 通過共識解決了雙花問題。

我使用的比喻是“協商室”。要走進房間,你必須同意已經在那裡的每個人。如果你想不同意,你必須離開並組建自己的房間。每個誠實的人都想進入最大的房間,裡面有最多的人。

在房間裡,人們不斷就係統的目前狀態達成一致。它被實現為一個雜湊樹,所以這只是一個 256 位的數字。

要執行交易,您走進大房間並讀出交易。每個人都對照他們的賬本檢查交易。假設沒有衝突交易或其他問題,每個人都同意交易是有效的,並且他們將其包含在他們認為應該應用的交易集中。

然後,他們通過雪崩過程解決任何分歧。本質上,如果有人對沒有壓倒性多數支持的交易投贊成票,他們只需將投票改為反對。這確保了對一組交易的快速協議。

一旦就一組候選交易達成一致,這些交易就會被應用,每個人都會根據一組確定性規則計算下一個分類帳。他們都簽名,發布這些簽名,現在客戶知道哪些交易已被共識過程接受。

如果某筆交易由於某種原因沒有進入,但它仍然有效,那麼房間裡每個誠實的人都會在下一輪中對那筆交易說“是”。

所以,回到雙花問題。雙花本質上是兩筆交易,當且僅當它先於另一筆應用時,每筆交易才有效。因此,“僅僅”解決雙花問題需要就兩個交易的訂單達成一致。如果每個人都同意哪個先到,那麼問題就解決了——先到的那個被應用,另一個無效。

在 Ripple 系統中,如果兩筆交易是雙花,可能會發生以下三種情況之一:

  1. 一筆交易將在另一筆交易之前被投票通過共識集。在這種情況下,該交易將保存在一個由房間裡所有人簽名的賬本中,永遠使另一個無效。
  2. 兩者都進入相同的共識集(這幾乎永遠不會發生)。在這種情況下,應用共識集時的確定性規則決定了哪個進入分類帳,永遠阻止另一個。
  3. 兩者都沒有進入共識集,因為兩者都沒有獲得多數,而且兩筆交易都在 50% 左右。在這種情況下,看到這兩個交易的每個節點(很快就會成為絕大多數節點)將對根據確定性規則獲勝的交易投贊成票,而對根據該規則失敗的交易投反對票。通過該確定性規則獲勝的一方將進入共識集中,應用於分類帳,並永遠阻止另一方。

這是一個嚴重的過度簡化,但它本質上是相當複雜的。

引用自:https://bitcoin.stackexchange.com/questions/7550