Symbol:什麼是最終性(Finality),為什麼它很重要

Image for post
Image for post

在NEM社區有很多人想更好的了解最終性(Finality),為什麼最終性(Finality)很重要,以及在為Symbol做什麼的過程背後的一些更詳細的信息。這篇文章試圖把其中的一些東西整合起來作為一種信息資源。

在進入這個領域之前,我個人最近對這個領域有了更深入的了解,感謝@jaguar0625和@gimer的耐心、外部安全公司的幫助以及網上的一些閱讀,我可以從表面上為大家解釋。坦白地說,為了了解最終性(Finality)概念,它讓我費解和痛苦,開發人員正在做的是複雜的,而不是心生畏懼。

在可能的情況下,我盡量不涉及技術細節,為了便於閱讀,在某些地方故意將其過度簡化。這篇文章也將被翻譯並發佈在官方博客上。

請先花幾秒鐘了解以下內容:

  • 最終性(Finality)很重要,因為沒有它,任何交易理論上都可以回滾
  • 有兩種方式-顯式(確定性)和隱式(概率性)
  • 在沒有確定性的Finality的情況下,區塊鏈的用戶需要建立檢查來管理風險,直到他們認為一個交易是最終的,比如6個BTC確認(約1個小時)
  • 較新的鏈有增加確定性最終性(Finality)的方法,這意味著它們更安全、更健壯、需要更少的變通方法,但也存在折衷,例如更容易受到DDoS攻擊。這些鏈條是Symbol的競爭對手或同行。
  • 在與交易所、託管人、受監管實體和所有權轉讓解決方案討論時,最終性(Finality)很重要,至少有一家一級交易所就XYM上幣進行了溝通。
  • 核心開發人員基於領先的方法和前沿的研究,已經完成了幾個解決方案的設計。這是一個很難解決的問題,我們已經在適當的時候聘請了外部援助來支持和幫助。設計進展順利,但有一些領域需要完全確定,這比估計的時間要長。
  • 在這一階段,啟動日期可能會推遲,開發人員繼續開發並同時設計,但現在正處於一個進展停滯的階段,設計沒有得到充分同意。它的長度很可能是幾周而不是幾個月,但直到設計完成後才能知道。

對於那些想了解更多細節的人,請繼續閱讀並提出任何問題。

Blockchain 101

閱讀本文的大多數人都會知道,區塊鍊是一種被連續鏈接的區塊,節點網絡同意將這些區塊鏈接在一起,形成一個所有節點都有其副本的可加密可驗證鏈的賬本。有幾個基本術語值得定義:

  • 共識:一個網絡上的節點都同意一個單塊鍊是有效和可驗證的鏈的機制,以及它們如何處理分歧、惡意節點、節點進入/離線狀態等。NEM使用修改後的POS共識。增加了重要/聲譽評分和VRF哈希,有助於確保收穫的隨機性
  • 安全:如何確保誠實的一方不會在相互衝突的事情上達成一致
  • 活躍性:如何確保誠實的當事人就某件事達成協議
  • 可驗證隨機函數(VRF, Verifiable Random Function):一種可以公開加密驗證其輸出是真偽隨機的函數。在Symbol wallet(和“選擇加入”)中,您將看到VRF密鑰作為任何想要收穫的人的一個選項……請確保您留下了它的票證,否則您將沒有資格收穫(不要擔心,它會出現在後續的指南中)
  • 分區(Partitioning):當網絡分裂/不一致時
  • 一致性和分區容差:如果發生網絡分區,那麼在狀態被糾正(活動性受到影響)之前,不會添加任何區塊,區塊鏈會有效地停止
  • 可用性和分區容忍度:如果一個網絡分區發生,那麼所有分區將獨立進行,獨立鏈將分別增長,當分區被解析時,競爭鏈將需要被解析(通常但不總是這是最大的分區)
  • 最終性(Finality):區塊鏈的用戶如何“知道”一個交易是最終的並且不會改變,或者可以在區塊鏈上回滾。
  • 拜占庭容錯(BFT):一個網絡如何應對任何給定的參與者變得惡意/敵對或不誠實行事。最後,這通常是PBFT(實際BFT)或DBFT(委託BFT)

什麼是最終性(Finality)

區塊鏈空間中的最終性(Finality)是指人們可以判斷鍊上的交易或區塊是否存在未來發生變化的風險。

所有區塊鏈都有微分叉,它們經常從這種狀態恢復到單個鏈。在這些微分叉中,有些節點認為區塊A是下一個有效區塊,有些認為區塊B是下一個有效區塊,網絡分叉為幾個區塊創建2個並行鏈,這些鏈可以持續1個或多個區塊。

網絡需要一種方法來就哪個並行鍊是正確的達成共識,並回滾不正確的鏈,以便所有節點都回到同一個鏈上(因此是公共賬本),如果鏈能夠按照約定(最終的)標記給定的區塊,則在該過程中也是有用的。

最終性(Finality)是一個過程,通過這個過程,給定鏈中的交易可以被認為是最終的,因此一個交易不會或極不可能被回滾,並且可以被信任為永久的。

存在什麼類型的最終性(Finality)

這裡有兩種主要的實現方式-概率或確定性。

  • 概率依賴於足夠多的區塊傳遞,故意啟動一個並行鏈並嘗試回滾真正的鍊是非常昂貴/不切實際的,這可能是最終的
  • 確定性意味著網絡同意(通常以某種方式標記)一個區塊或交易為鏈上的最終交易 — — 它被確定為最終交易

BTC和大多數其他PoW鏈使用的是“概率”的方式,而更現代的PoS鏈傾向於“確定性”的方式,主要是因為安全性更好,它們具有更快的塊時間和/或針對特定的用例或行為。最終,這意味著他們的交易和余額可以更容易、更安全、更迅速地得到信任。

例如,概率最終性(Probabilistic Finality)解釋了為什麼Binance需要6個確認來貸記您的BTC存款…他們需等待鏈增長足夠長的時間,以降低他們的交易對手風險。人們普遍認為,這需要6次確認(約1小時),因此發生51%的重大攻擊以使鏈回滾的可能性較小,因此這可能是最終的,儘管從技術上講,這是不可能的。

最終性(Finality)為什麼重要

使用任何區塊鏈的任何人都不應信任給定區塊中的交易,除非它們被標記為最終交易,或者鏈足夠長,以至於它們在概率上是最終的。非常簡單的答案是,這一點很重要,因為否則人們需要“猜測”一個交易何時可以被信任,不管是價值轉移、多信號設置、消息中的信息 — — 任何鏈上的交易。

舉個例子說明沒有最終性(Finality)會發生什麼:

  • 我轉100BTC到Binance,他們在確認後給我
  • 我把BTC換成ETH,然後立即提現到另一個錢包(需要10–20分鐘)
  • 在4個確認(40分鐘)後,由於處於“錯誤鏈”上,BTC交易被回滾

以上的最終結果是,“我轉BTC到Binance”這件事從未發生過,我的100BTC仍然在我的錢包中,但是我的ETH交易和隨後的提現導致了我的錢包裡也有ETH…… Binance沒了100BTC。這雖然是一個過於簡單化的例子,但說明了概念。

另一個例子是,如果使用BTC,大多數加密支付系統必須解決的雙重開銷(雙花)問題。顧客不會等1個小時去買咖啡,咖啡店也不想在我離開後因交易回滾而損失資金。這是“閃電網絡”在BTC上所做的一部分,另一個解決方案是支付提供商承擔風險並從收入中沖銷損失,因此最終費用會增加;提供商創建鏈外風險管理解決方案。

還有其他的例子,如轉讓藝術品的所有權、證券型代幣或收藏品等。在舊鏈中處理的方式是等待一段時間,直到它最終確定,並將其編碼到使用鍊等待的解決方案中。較新的鏈已經開始通過轉向確定性的最終性(Finality)來解決這個問題,因此競爭性的鏈具有這種特性,這是一些用例在選擇鏈時決策過程的一部分。

最終性(Finality)問題並不是XEM發佈時經常出現的問題,但它已經從與XYM相關的交易所發展而來,因為交易所(和保管解決方案)現在知道它和它的解決方案存在挑戰。當你開始談論諸如中央銀行使用、證券代幣化使用、新的一級交易所上幣、公有鏈上的跨鏈交換等事情時,最終性(Finality)變得很重要。對於私有鏈來說,這一點基本上並不重要,但在某些情況下也可能如此。

常見的最終性(Finality)方法有哪些

在確定最終性(Finality)中,有幾種主要方法用於其他鏈:

  • Polkadot: Grandon(PBFT),驗證鏈而不是區塊,可用的分區(available partition)
  • ETH2.0:Caspar FFG(PBFT),20分鐘終結(finality),可用的分區(available partition)
  • Cosmos/Tendermint:PBFT,快速終結,一致分區(consistent partition)
  • Algorand:新的,快速的終結(finality),但使用一致分區(consistent partition)並假定同步性

Cosmos/Tendermint是第一個提出生產級解決方案的公司(它依賴於驗證器),Algorand通常被認為是目前比較先進的方法之一,但是它依賴於一些尚未被證實的假設以及強大的網絡同步性假設。

如果要將區塊或交易標記為”final“,該問題分為兩個主要步驟:

  1. 誰應該被允許投票決定它是”final”
  2. 所有的選民怎麼知道要信任其他選民,知道他們什麼時候投票了

確定最終性(Finality)主要有兩個子類型:

半去中心化

這些解決方案依賴於一個已知的節點池,這些節點被預先選擇以允許投票決定給定的區塊或交易是最終(final)的。這在大多數解決方案中都會用到,比如驗證器(validator)或見證人(witness,EOS、Cosmos、Steem、ETH2.0、Polkado等)。常見的模型包括DBFT、PBFT、Threshold Signatures和其他一些模型。大多數解決方案都有理論上的可伸縮性限制,並沒有被廣泛推廣到超過250個節點的投票,這主要是由於上述第2點所涉及的網絡抖動。這些限制很難精確定義,因為它們還取決於消息的複雜性、最終運行的頻率以及其他一些因素。

在NEM的場景中,這個選項意味著我們可能需要選擇一個子集的超級節點,並討論該選擇方法的公平性和健壯性,如果它可以隨機化等。隨著投票節點數量的增加,最終性(Finality)開始落後。這些都是假設性的風險,因為這些問題在現實世界中沒有得到廣泛的處理,並且在一定程度上依賴於研究論文中的數學/桌面模型,因此它們將作為Testnet的一部分進行測試。

這些解決方案可能涉及可用或一致的分區方法。

完全去中心化

這些解決方案依賴於一個動態投票池,任何節點都可以加入或離開該池對給定的區塊進行投票。所有的節點都需要有一種方法來知道誰應該投票,什麼時候投票結束,而不需要與其他每個節點進行對話來確定(減少網絡抖動)。

這些解決方案雖然更加複雜,但同時也更健壯、更安全和更可擴展。有幾條鏈對這個問題有很好的記錄,例如Algorand。

Algorand特別使用了一致分區(consistent partition)的方法,這意味著它將在出現網絡分裂時暫停,並需要(自動)恢復。如果延遲時間較長,可能會導致可用的投票密鑰用完,並且最終結果需要完全重新啟動,這是自動的,並且每小時運行一次。這意味著鏈數據的使用者需要處理存在最終性(Finality),但預期會失敗和恢復的情況,因此,如果最終性(Finality)需要長達1小時的時間進行標記,那麼對final交易的任何檢查都將立即需要一個edge case路徑。

我們要用Symbol做什麼

好消息是其他一些鏈已經開始解決這個問題,而且這些設計都是開源的,所以我們的設計過程在理論上稍微容易一些,但仍然很複雜。例如,這些其他的鏈沒有一個像我們一樣使用相同的共識基礎+修改。

核心開發人員已經對解決方案設計進行了幾個月的研究,並且完全了解問題領域。我們最近引進了一家專業的證券公司,該公司曾參與過多個類似的項目,其報告得到了各實體的認可,這些實體對上交易所進行盡職調查等決策。他們的密碼專家負責人現在正積極與團隊合作,早期的反饋對設計是積極的,但仍有工作要做。

類似Algorand的方法已經被考慮過,直到最近才被認為是可行的,但是在這個過程接近尾聲的時候,一個特別棘手的關於“縮減(Reduction)”的問題被發現。具體地說,這種方法依賴於驗證區塊,但是我們(類似於Polkadot)的驗證鏈,即前面提到的微分叉(>1個塊),要協調這兩者,就需要進行大量的重寫,而且很可能是一個面向一致分區(consistent partition)方法的設計決策,而NEM在開發工作的早期選擇了不遵循這種方法,而傾向於使用可用的分區(available partition)方法。

下一步是重新評估用於發布的PBFT解決方案,核心開發人員目前正在積極開展這方面的工作,溝通每天都在進行,涉及大量的研究和建模。這種方法以前是暫時擱置的,所以研究工作不是從頭開始的,安全公司正在積極協助這一方案。

如果這種方法被證明是卓有成效的,並且通過了設計評審,那麼很有可能為Symbol提供了與其競爭的鏈(eth2.0、Polkadot等)類似的方法。

設計過程所花費的時間比估計的要長,主要是因為這些特徵集處於區塊鏈學術研究的前沿,建立在已有多年的PBFT等解決方案之上。這是一個非常密集的領域,在業內沒有明確、共同的正確答案。正確的解決方案使Symbol處於當今市場技術解決方案的前沿,並與已取得重大成功的項目並駕齊驅(包括採用率和代幣價格表現),但這不是一個簡單的過程。

核心開發人員一直在參與設計並同時進行編碼,直到最近,當我們達到一個臨界點,即沒有最終設計就無法繼續前進,所以進度一直在繼續,但現在已經到了一個瓶頸。

接下來的步驟是完成設計,我們希望在未來1–2週內完成(這仍然是一個估計,不是一個準確的日期)。然後我們可以對完成實施所需的工作做出更堅定的估計。

在這個階段,它看起來可能會對testnet的啟動產生影響,甚至可能會影響到發布日期,但我們正在考慮一些選項,以盡量避免或盡量減少這種影響。至於上下文,我們說的是幾個星期,而不是幾個月,如果它發生了。

我希望以上所有的一切都有意義,任何人仍在閱讀仍然是清醒的,請務必提出問題,我將為他們盡我所能回答(或來源答案)。

#NEM #SYMBOL

Written by

NEM/SYMBOL狂熱者

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store