如何管理分叉及分叉過程的分裂,一個給交易所和企業的指南

(譯者注:本文將Fork譯為分叉,僅指協議升級的一種方式,有硬分叉hard fork和軟分叉soft fork之分。而將Split譯為分裂,是指分叉過程中區塊鏈產生分裂成兩條鏈的過程。而將Fork Split譯為分叉分裂,意思是分叉過程后產生了分裂。)


摘要


在比特幣社區,大家都極力主張自己的擴容方案,甚至不惜以犧牲系統廣泛的共識或妥協為代價,自比特幣誕生以來,目前是比特幣分叉過程中發生分裂的風險最高的。目前有一件事情是可以肯定的,比特幣擴容方案的僵局一直持續下去的話,那么唯一的結果就是我們無法實現比特幣擴容。從這個意義上來說,盡管有些不公平,但是對于所有的成員來說,進行分叉后分裂是最好的結果。本文在比特幣要進行分叉分裂的假設下,試圖說明企業和用戶在比特幣區塊鏈上進行分叉分裂的技術處理方式,以及如何管理比特幣區塊。

本文的動機是,最近從Core 社區傳出要實行UASF(一個只需要少數算力支持,不過還是需要大多數經濟節點支持的執行方案)的消息,這對網絡穩定的威脅是清晰且迫近的,尤其是經營比特幣的交易所和企業。在UASF的情況下,區塊鏈有可能分成2個或者3個分支,如果在毫無預警的情況下實行UASF,企業,尤其是交易所如果無法應對這一特殊情況,有可能面臨丟失客戶資金的風險。不管他們實際上是否有意支持各種分叉,本文的目的在于讓企業做好準備,以便他們能夠在那樣的情況下繼續保護客戶資金。



區塊鏈分叉類型


首先我們列舉了可能發生的分叉類型

軟分叉

軟分叉是一個增加新的共識規則,這個新的共識規則是當前規則的子集。在新鏈上,區塊遵守新的更嚴格的規則將是有效的區塊,在舊鏈上,如果按照舊鏈上更寬松的規則生產出來的區塊將有可能在新鏈上是無效的區塊。

硬分叉

硬分叉是一個移除或者放寬共識規則的分叉。在新鏈上,遵守新規則的區塊是有效的區塊,只是在新鏈上有效,并且在舊鏈上無效,然而舊鏈生產的區塊在新鏈上是有效的。

小算力(硬/軟)分叉

小算力分叉在以下情況下會產生:小算力區塊鏈通過生產不被大算力所接受的區塊有意地進行網絡分叉。此外,小算力區塊鏈可以任意創造規則,強行使所有未來主鏈上生產的區塊在小算力區塊鏈上是無效的。

大算力(硬/軟)分叉

大算力分叉是在以下情況發生: 獲得大算力支持的區塊鏈通過發布一個小算力區塊鏈不接受的區塊有意地對網絡進行分叉。

用戶激活軟分叉

這種類型的軟分叉是在多數用戶節點(錢包,全節點)升級到一個可以協調區塊高度的軟件版本時完成的,這個區塊高度會加強特定的新的有效性規則。例如,有一個規則規定,如果一個區塊的UXTO集合沒有支付到新隔離見證輸出的話,那么它就是無效的。這個規則就算沒有多數的算力支持,也能執行。總的來說,這是一種特殊的小算力分叉。大算力分叉偏向于獲得多數算力支持,UASFs偏向于獲得多數經濟節點的支持。

這種小算力分叉有生成三種分支的額外風險。因為這種小算力分叉是由節點推動的,這意味著一旦發生了這種分叉,另一個分支將獲得大多數算力。作為避免自己不被重組(見如下)的一種反應,多數算力會立刻執行一個大算力軟分叉,因而會產生3條區塊鏈:大算力軟分叉,小算力軟分叉和原始區塊鏈。這種狀態是暫時的,因為原來的區塊鏈分叉后最終會被其中一條軟分叉區塊鏈超過或者合并/重組。

這種類型的分叉有可能讓客戶無法看到從交易所提現的過程,給交易所帶來售后服務問題。交易所趨向于升級他們的節點以支持兩種分支,并確保客戶的提款請求通過這個升級節點來進行。支持這項政策隱含的意思是:交易所同意未來分裂比特幣產品。這意味著客戶必須在交易所的會計系統中創建和持有他們在其他鏈上的余額。我們建議交易所在進行提款之前完成分裂比特幣,以此來避免將賬戶余額弄混。(見如下分裂比特幣的過程)


分叉的技術特點


重組風險

重組風險是在經過分叉后,原來是小算力區塊鏈有可能超過大算力區塊鏈,導致更長區塊鏈回到小算力鏈上,這會導致這條(大算力)區塊鏈上的從分叉點開始后的所有交易被取消。實際上這就是正常比特幣網絡的孤塊,但一周出現數次幾個區塊重組并不常見。在分叉后的分支鏈上發生的重組是單邊的,單邊是指只會發生在分叉側或原鏈側中的一條鏈。

由于軟分叉的固有特性,即在現有的規則條件下 ,軟分叉收緊了區塊有效性的規則,所以它會在原始鏈上帶來區塊重組的風險。分叉側永遠不會接受原始鏈的區塊。因為原始鏈區塊不符合軟分叉的新增規則,所以在分叉側看來這些原始鏈新增的區塊,是無效的區塊。反過來則不成立。因為在分叉側中,這些符合更多附加規則的區塊,顯然也符合原始鏈的規則。所以,有一定的小概率會發生這樣的情況:分叉側區塊鏈的增長速度,可能會超過原始鏈的增長速度,進而導致原始鏈上的區塊被重組。對于硬分叉,上述情況剛好是反過來的:即只可能會在分叉鏈上產生重組,而原始鏈上不會出現區塊重組。這是因為分叉鏈的新增規則,在原始鏈上是不兼容的。所以,硬分叉只可能有在分叉側產生區塊重組的風險,原始鏈不會受到影響,即原始鏈沒風險。

這種風險只有一個因素,如果在規則收緊的這條鏈上有更大追求利潤的PoW算力,這超過了原始鏈的算力,這就導致在這條鏈上挖到比原始鏈上更多的連續區塊。這時,原始鏈就必須要考慮重組風險。如果這個風險太大,可以在分叉區塊后建立一個一次性的檢查點,這就就不會發生重組了。其中一個可行的實現方法是添加一個軟分叉規則,這個軟分叉可以讓任何不包含分叉區塊作為其祖先塊的區塊是無效的。

重組風險是對抗跟隨小算力區塊鏈的風險之間的一種平衡。如果一個人總是想要追求最長工作量證明鏈,那么重組風險是不可避免的。添加一個檢查點來避免重組風險,又將引起跟隨小算力區塊鏈的風險,并且導致從多數經濟側分離出來。

分離比特幣資產

從比特幣分叉點后將會可能出現三種類型,分叉前幣(pre-fork), 分叉后紅幣(post-fork Red), 或者 分叉后藍幣(post-fork Blue)。從UTXOs的角度來看,會更容易理解。一個分叉前幣(pre-fork)的UTXO集合將成為一個分叉后幣A或B(post fork AorB)的 UTXO集合,但反之就不行,(一個分叉后幣A或B(post-fork A or B)的 UTXO集合不能轉化成為分叉前幣(pre-fork)的 UXTO集合)。這些UTXO集合只能存在于一個區塊鏈上或者其他的區塊鏈上,而不能同時存在于兩條區塊鏈上。

一個分叉前幣(pre-fork)UTXO 也許可以繼續存留,并同時在分叉 A 和B是可用的,只要他們沒有被使用。一旦被一條鏈上使用,在分叉鏈A 或者B上確認了交易,那么UTXO就可以說是永久性的分離了。

擔心創造額外的“價值”

當以太坊進行分裂的時候,很多人都很擔心生成的額外“價值”這個問題。 在Coindesk也有文章闡述了這個問題。但是總的來說,就比特幣分裂而言,快速執行‘套利’是不可能的,因為分離比特幣并不是容易的事情,交易所和參與其中的成員需要做相當多的工作。 此外,純粹的區塊鏈A和區塊鏈B的供應最初是非常少的,增加的速度是非常慢的。這個速度由新挖出比特幣的自然擴散率和UTXO的自然增長率決定。因為算力小和交易處理容量小,小算力區塊鏈中的UTXO集合的自然增長率受到很大的阻礙。這避免了大量出現在ETC上的投機性投資,這些投機者曾因高風險而損失大量金錢,但還期望如果他們全部購買ETC,大多數的礦工就會跟著挖ETC。

雙花攻擊

區塊鏈分裂被經常指出是有問題的,換句話說,進行分叉的話,在其中一條區塊鏈上的合法交易在兩條區塊鏈上也是合法的,這就增加分裂后雙花的風險。當你的收款方在一條區塊鏈,而你在另一條區塊鏈的時候,就可能發生雙花。你可以在一條區塊鏈上發送交易給收款方,但是在另一條區塊鏈上再次花費相同的UXTO,支付給自己。這是一個錯誤攻擊(false attack),因為通常你要支付的人不會注意在兩條區塊鏈上都接收付款。

重放交易

這樣的弱點是雙花攻擊的某種變體,之前在以太坊分叉成ETC和ETH時,這個問題首次出現,它影響的主要是那些對分叉準備不充分的交易所。這個問題這一篇文章(插入文章鏈接)里有說明。這種攻擊通過充分的準備是可以防御的。總之,交易所希望支持兩種分叉后的區塊鏈并促進兩種新幣作為獨立的產品進行交易,需要將兩種幣平等區分開。此外,分裂幣的過程(請見如下描述)必須落實,從而使交易所不會無意中發送出任意一種幣。這對于防范那些想要在提幣款時采取分離幣策略來獲得另外一種幣的人來說是尤其重要的。


注意事項-比特幣交易所


支持分裂

交易所支持兩種幣的主要策略分為幾類:1)在兩條區塊鏈上運行節點;2)私鑰管理;3)購買分裂后的幣;4)監測分叉區塊;5)分離幣流程

在兩個區塊鏈上運行節點

所有的交易所都應該運行每個分支鏈的客戶端節點,從而監測兩條區塊鏈上的活動,避免造成潛在的客戶資金丟失。在兩條區塊鏈上運行節點可以讓你有效地進行手動分離幣,同時給你提供熱錢包中的準確賬戶余額。你應該在實際分叉之前在運行每個有可能分叉的節點,通過這樣的方式,你就可以通過熱錢包的余額來監測客戶的存款是來自哪一個分支鏈。

?私鑰管理

交易所在兩條鏈上的私鑰同步是很重要的。在兩個鏈使用準備金的熱錢包地址應該是相同的,這能確保用戶不小心匯款是,交易所有能力退款。

購買分裂幣

使用分叉后區塊高度更高的區塊的coinbase txn中的UTXOs進行分離分叉后兩條鏈的UTXOs是一種分離客戶存款的方法,同時保證提款不會被弄混。交易所可以從礦工手里直接購買新產出的幣,純粹的coinbase幣,或者自己手動分離幣。

購買純粹的Coinbase 幣

從兩條分叉后區塊鏈上的礦工手上直接購買coinbase幣,并將其單獨放到“純粹”比特幣池(地址)中,并區分清楚是哪條分支鏈的(coinbase交易)。這些純粹的分叉后coinbase幣(post-fork coinbase)將成為分離幣的關鍵。你必須校驗每個utxo的歷史,以確保它們是在分叉塊出現之后,起源于各自的對應鏈的coinbase交易。注意,交易所只需要采購一個純粹的coinbase UTXO 集合樣本,然后交易所可以用這些最初的樣品,將整個“庫存”分離成紅色的幣和藍色的幣。如果交易所不希望將所有的UTXO集合都進行分離,或者無法負擔全部分離,那么我們建議交易所不要分別支持兩條區塊鏈上的幣。

手動分離幣

手動分離幣的方法是比較簡單的,不購買純粹的礦工挖出的coinbase幣,也可以通過手動將分離幣。但是為了絕對的安全,使用1個純粹的分離幣UTXO集合來作為“污染分離”。交易所可以決定是分裂整個儲備金還是只分離需要用到的時候放入到熱錢包的錢。這個過程如下:假設交易所控制著3個地址,A, B?和?R。A?是一個有分叉前幣(混合)比特幣的地址,比如冷錢包存儲。即有大算力鏈,也有小算力鏈,我們分別稱之為紅鏈和藍鏈。B是用來存儲純粹藍幣的熱錢包地址,?R是用來儲存紅幣的地址。這個例子是假設交易所是計劃主要支持大算力鏈,但是如果想主要運營小算力鏈,這個流程可以修改。


從A開始(A也許是用冷錢包),創建一個交易發送比特幣給B,混合1份單純分離用UTXO為輸入,稱為:A->B,

或者,你可以創建一個大小為999,999字節長度的交易,這個txn只有在>1MB的區鏈上有效。


注意:沒有必要使用兩個不同的地址,你可以只是把兩個分離幣都放在地址B中,但是使用不同的地址可以避免一些會計系統上的混亂,產生混亂的話就必須要同時在兩條區塊鏈上運行了。將比特幣分離到兩個不同的地址中,可以讓維持內部結算和賬目核對的過程變得簡單些,因為藍幣和紅幣可以看成是兩種不同的產品。

檢測分叉區塊

對每條分裂鏈來說,知道是從哪個區塊高度上產生的分裂是很重要的,我們稱這個區塊為分叉區塊。分叉區塊是分裂后的兩條區塊鏈共享的最后一個公用塊(LCB)之后的第一個區塊。檢測分叉區塊首先需要找到共享在兩條區塊鏈上的LCB。這只需要做一次,你需要在兩條鏈的節點上分別從區塊鏈頂端往回查詢區塊哈希值,直到找到LCB。每條區塊鏈上的分叉區塊都分別是緊隨著LCB之后的那個區塊。

值得一提的是,在大算力鏈運行的節點上檢測分叉區塊是要簡單得多。因為,大算力鏈上的孤塊池中包含了小算力鏈的區塊,可以掃描到這些區塊。而相反的,在小算力鏈上并不會存儲大算力鏈產生的區塊,因為小算力鏈認為這些區塊是無效的,多半會拋棄這些區塊。

幣分離管理

交易所想要支持兩個分支鏈的話,應該將他們的熱錢包分裂成3個份:紅,藍,分叉前幣(pre-fork)”中立”集合。交易所需要圍繞存款(或提款)時將幣分離,在交易平臺上將兩種幣作為不同的產品進行管理。以確保各自使用時僅從對應的礦池來完成取款處理。

完成幣分離的三個流程:

存款流程

在一條分裂鏈上管理用戶的存幣是非常簡單的,只需要給為每條鏈給用戶提供不同的存款地址,并且監控哪條鏈的存款得到確認。因為交易所是在兩條區塊鏈上運行節點和運行區塊鏈瀏覽器,所以這是可以做到的。當客戶無意中存錯了幣地址的時候,或者客戶同時存了紅幣和藍幣時,就需要處理這樣的事件。在這兩種情況中,交易所僅需要聯系客戶并將資金退還,并且從交易所自己的純凈幣儲備中退還到另外一條鏈上的幣。

對不支持兩條鏈的交易所來說還有一個更簡單的方法,只檢查每筆存款交易的輸入來確認父區塊的所有輸入是不是來自分叉區塊之后的區塊。如果是,客戶可能將比特幣存儲在了另一條區塊鏈上的相同地址(除非他們是故意雙花)。那么為了給客戶提款,就必需要運行一條大算力鏈的節點。

儲備金分離流程

管理交易所儲備金有兩種策略:1)一次性轉換所有的儲備金;2)只在需要從熱錢包進行提款的時候,轉換儲備金

第一個選擇是通過上述分離幣的方法將所有儲備金轉換成分裂幣。或者,可以使用如下所述的污染分離程序,這種方法更易于計算。因為余下的紅幣被存儲在特定的HD錢包分支,同時藍幣在另一個獨立的地址樹上。有些人認為這是不切實際的,理由是交易所的儲備金有些是鏈下存儲的,有放在冷錢包里的,也有放在錢包管理公司里。

第二種選擇是將儲備金留在那不動,依靠將分離分叉前幣(pre-fork)作為提款程序的一部分。這個方法更簡單但是這意味這將會涉及到一些會計程序。有一件事情是很重要的,為了保持每種幣的儲備余額是準確的,交易所應該在兩條鏈上運行后端辦公系統。

提款流程

比特幣的提款是管理分離幣過程中最重要的部分。這涉及到在客戶將在提出提款請求時,要確保發送給客戶的是正確的幣。這意味著,執行分離幣程序是對于提款來說是必須的,如果交易所主要的儲備金還沒有分離的話。

污染分離流程

為了對支出幣進行分離,可以使用“污染分離”流程。在這個流程中,在客戶嘗試提款時,在相應的區塊鏈上手動創建提款交易,在交易中添加一個來自純分裂后幣地址的UTXO到交易上去“污染”交易。這個增加的分裂后UTXO(post-fork UTXO)是要來自‘純’的UTXO礦池,以確保提款交易不會同時在紅鏈和藍鏈上同時有效。


交易所用戶注意事項


目前幣余額政策

在一個分叉之后,如果交易所決定支持兩條分支,用戶的比特幣余額(鏈下余額)會是什么情況?當分叉發生,交易所應該提前告知客戶,交易所里的幣將會在任意一條分支上都會有保存,但是交易所會暫停提現,直到分叉成一條或兩條鏈,直到度過區塊被重組的風險之后。(每一個交易所都有權自己決定安全的時間點,但是一個比較好的評估標準是在少數算力鏈上達到100個區塊深度,就可以認為是合理的低風險時間點。)

在那個階段,剩下的比特幣余額應該通過其中一種分離幣的方法,將其分離,并與交易所自己的儲備金分開。對交易所支持的每一條分叉鏈要做到1份分叉前幣(pre-fork coin)應該等于1份分叉后幣(post-fork coin)。在那之后,應該不再存在分叉前幣(pre-fork)余額了。

錢包用戶注意事項

如果同時支持兩種分叉后的幣,并且在其中一種幣已經支持提現時,對用戶來說必須強調的時,用戶收到正在接收的是分裂后的幣,用戶必須使用可以識別分裂后的區塊鏈的節點錢包。

對于SPV錢包來說,根據它們連接的節點,對于相同的交易,SPV錢包可能看到潛在的確認沖突(在不同的區塊高度)。只要交易被確認,這個問題沒有什么影響。運行在一條區塊鏈或者其他區塊鏈上的錢包將只有在看到對應的區塊鏈信息的時候,才能夠看到交易被確認。如果花費的是分叉前UTXO(prefork UTXO),那所有的錢包都能看到交易(0-conf)。如果是分裂后幣,那么在另一個分叉上你是看不到這筆交易的。

客戶服務需要知道的是,一條區塊鏈上的提款有可能沒有在用戶的錢包上顯示。這不是問題,因為檢索比特幣和改變錢包從其他區塊鏈上讀取區塊很簡單。實際上沒有損失任何幣,只是他們暫時看不到而已。

不支持分裂

只支持最長鏈是最簡單的選擇,不需要使用特定的流程來分離幣,只在一個分叉進行提款和存款,忽略其他。然而,這可能給客戶的資金帶來風險。

即使交易所沒有公開支持上線兩種分裂后的幣進行交易的想法,如果兩個區塊鏈經過分叉后都存活下來,并且深度超過了100個區塊,交易所仍有義務給想要提取兩條鏈上的幣的客戶提供提款服務。支持這項政策意味著遵守本文上面所述的管理幣分離的政策,以便有足夠的分叉幣給交易所用于提款。

這項政策是安全的,只要客戶了解過這項政策。如果交易所沒有打算支持兩條分裂鏈的幣,而且有不知道這項政策的客戶可能會產生一個問題,那就是客戶試圖將紅幣充值到不能識別或者不信任紅幣的交易所中。這個問題如何解決,就取決于交易所的政策了。但是為了保護客戶資金,每個交易所都應該采取上述“支持分裂”部分提到的幣分離政策。


注意事項錢包用戶


用戶完全可以選擇忽略分裂或者通過賣掉他們不支持的比特幣來賺錢。要持有分裂幣需要使用支持每條區塊鏈的錢包。是否能支持小算力鏈就取決于該錢包了。

對于支持兩種區塊鏈的錢包開發者來說最重要的就是,確保有一個好的顯示小算力鏈價格的市場數據來源。通過相關的價格差異,當他們支付了錯誤的比特幣的時候,他們就會得到提示。

此外,如果基于服務器的錢包是連接到小算力“藍”鏈的,無論是意外還是粗心大意,客戶需要去考慮在他們錢包余額里為什么看不到他們收到的比特幣。這種情況下最好的辦法就是讓錢包開發者升級軟件,來支持大算力鏈,這樣用戶就可以重新看到他們的錢。如果錢包開發者不愿意更新軟件,在其他區塊鏈上從錢包獲取幣可能是困難的。因此,我們建議只使用支持最長工作量證明,或者擁有大多數算力區塊鏈的錢包。

網絡錢包

這將取決于網站支持哪條區塊鏈。他們是否會支持兩條區塊鏈還是個疑問,很有可能只支持最長區塊鏈。如果他們決定支持兩條區塊鏈,也許能夠讓你選擇你想連接的區塊鏈。

SPV錢包

SPV錢包默認與區塊大小無關,因此只會跟隨最高區塊高度。不幸的是,如果SPV錢包只連接到一條區塊鏈的所有節點,那么它顯示的余額值將和在它連接到另一條鏈上所有節點是顯示的余額值不同。如果它連接的是混合節點,那么它將顯示最長鏈的余額。(這也是為什么“最長鏈是正確的”政策是相對安全的)

硬件錢包

這取決于具體的錢包。有些錢包是可以與自己的節點相匹配的,另外還有硬件錢包使用的是一個服務器后端。找出你的硬件錢包是屬于哪一類的,根據錢包的分類才能給出進一步的建議。你應該能夠建立連接你所選擇區塊鏈的錢包。知道你的硬件錢包支持的是什么區塊鏈是很重要的,因為如果你要通過確認交易將資金從硬件錢包取出,你需要知道去看哪一條區塊鏈。實際上,在分叉的時候,出現在你硬錢包中的比特幣將變成分叉前(pre-fork)幣,資金從錢包發送出去是相對安全的。在分叉后硬件錢包收幣,如果錢包沒有監聽你所希望的那條鏈,就有可能造成問題。最壞的情況是,幣被發送到錯誤的區塊鏈上,會導致丟失你的幣,除非硬錢包的開發者決定添加對這一條區塊鏈的支持。如果你想使用硬件錢包,我們建議你確認你只會在他們支持的區塊鏈上使用硬件錢包。(很有可能是最長區塊鏈)

基于服務器的錢包

如果你可以控制錢包指向哪個節點,你必需要讓你的錢包使用小算力鏈上的節點。如果你不能控制你的錢包連接的服務器,那么你將被鎖定在錢包供應商所支持的區塊鏈上進行交易。如果他們決定支持兩條區塊鏈,他們也許能提供一些詳細信息,讓你選擇連接哪一條區塊鏈。

客戶端節點錢包

最簡單的選擇就是你可以只運行你想要連接的區塊鏈軟件。對于想要分離自己的比特幣的客戶,他們可以單獨發送比特幣,這需要在兩條區塊鏈上都運行節點。


注意事項企業和支付


支付處理器

作為一個企業,最好的選擇就是追隨最長鏈。支持所有區塊鏈將使你的客戶感到困惑,引起客戶服務問題。因為客戶不小心給你發送了分叉前幣(prefork coin),?你可能被要求將一種分裂幣退到他們并不打算用來支付的分叉鏈上。不同于交易所,支持小算力鏈不會產生額外的利潤,像交易所可以要求更多的交易費。支持小算力鏈只是你的業務的凈成本,但是如果出于意識形態的原因,你想要支持兩條區塊鏈,那么請參考交易所注意事項那一章來保持幣分離。一個建議是運行每個分支鏈上的客戶節點,這讓你能看到其他鏈上所有交易。這有利于保證客戶的滿意度,萬一客戶無意中使用了錯誤的幣進行支付,然后又需要進行退款。這對于企業的支付處理業務來說是必要的。

此外,除非小算力幣交易價格有可靠的市場數據,否則企業的處理器無法支持小算力鏈。無論如何,支持超出了支付處理能力的支付是冒險的,如果一個客戶的意外支付發生時申請退款時就會發生風險。


分叉的一般風險


UASF風險

UASF在沒有大多數算力支持的情況下激活分叉,將會帶來一些大算力鏈不會有的內在風險。也就是說,UASF臨時有可能會產生至少3條分叉。

一個可能出現的場景是,如果UASF由一個有影響力的團隊發起,產生一個小算力軟分叉,并激活隔離見證。基于對能夠擴展比特幣區塊大小(例如,擴大到4MB)硬分叉的潛在需求,這有可能觸發第三條硬分叉的產生。對于最初的UASF,?這是有可能出現的。因為,假定所有隔離見證的支持者都已經在他們自己的區塊鏈上進行了分叉,硬分叉擴大區塊大小的支持者就沒有反對派了,剩下的支持硬分叉的算力將成為多數,足夠發起一個安全硬分叉。這就將導致產生3條分叉,一條隔離見證分叉,一條4MB分叉,還有一條原區塊鏈。4MB區塊鏈很有可能創建檢查點,來消除在隔離見證分叉鏈上的重組風險,只留下一條原鏈是很容易受到攻擊的,因此這會鼓勵剩下的參與者加入到4MB分叉或者隔離見證分叉。然而,3條區塊鏈暫時會存留一個段時間,這段時間,企業做好準備,以保護客戶存款變得更加重要。

投機風險

無論區塊鏈何時分叉并產生(可能暫時的)新幣賬戶余額,都會有一些交易商將試通過購買更便宜的小算力分支鏈上的幣,以試圖在交易所那獲取利潤,或者將一種分裂幣全部賣掉,然后再購買另外一種(如果有人能預測到分叉將以何種方式得到解決的話)。這是一項高風險活動,除非你已經做好可能失去所有的準備,否則應該避免參與這些投機活動。在幣分裂的過程中,保護你的錢最安全的方法就是不要移動任何幣,直到完成幣分離,不管是它是失敗回到一條區塊鏈,還是形成兩條穩定的新區塊鏈。


專業術語


分叉區塊

分叉區塊是在區塊鏈上開始分裂的那一個區塊。它的complement block在另一條區塊鏈上。假定這第一個區塊,在一條鏈的網絡上被視為非法的,但是另一條鏈則是合法的。換句話說,分叉區塊分別是每條區塊鏈上的第一個區塊,并且都不在同一個祖先區塊鏈上。

UTXO

交易中有一些未花費交易輸出。在一個節點記憶中的UTXOs集合就是系統中所有未花費幣的總和。(不包括未花費的coinbase?生成的幣)

Prefork UTXOs,Prefork coins

這些UTXOs集合是由形成分叉區塊之前的區塊(不包括分叉區塊)形成的未花費交易輸出集合。有時候會涉及到“混合UTXOs”,因為這些集合既可以被用于紅鏈,也可以用于藍鏈。

紅幣,藍幣,總稱分叉后幣“post-fork UTXOs”或者“分裂幣”

這些UTXOs是從分叉區塊開始以及之后的coinbcases交易產生的。如果一個UTXO集合追溯到從分叉區塊開始以及之后形成coinbase交易,那么這些稱之為“分裂幣”。因為這里有兩個分裂幣的集合,一個來時區塊鏈A,一個來自區塊鏈B,總而言之,要分開對待,他們是不同的幣。?

Coins?

出于本文的目的,如文中所述,該詞有時候等同于UTXO集合。


Coinbase

除了指“創世交易”外,還指區塊中的產生的第一筆交易。


Node?節點

節點是連接并參與到一個共識網絡中的客戶軟件。有時候指有區塊瀏覽器功能的客戶節點軟件。




發文時比特幣標準價格 買價:¥7425.00 賣價:¥7375.00

原文鏈接:https://github.com/digitsu/splitting-Bitcoin
原文作者: digitsu
譯者注:本文比較專業,翻譯比較難,又比較重要,我是盡力了。
有閱讀英文原文能力的讀者盡可能讀原文,讀本譯文有疑問的地方盡可能回去參考原文。
原文發表在github,原文作者有可能隨時會更新,所以也要請讀者關注原文。
如果有錯誤,請原諒,并告訴我,我會修改。
謝謝! 譯者:tan90d(微博@閃電HSL 微信tan90d 微信公眾號 閃電HSL) 如果本文對您有用,歡迎打賞我一點比特幣,謝謝。 我的BTC地址:14mhzjkJ71oMAMkKu3dy98dnUpkyQBHL1r
版權聲明: