區塊鏈分叉algorand
❶ 簡評三個基於VRF的共識演算法
上交所技術公司 朱立
Algorand、Dfinity和Ouroboros Praos三個共識演算法(Dfinity雖然是項目名,這里用來稱呼其共識演算法也應無不妥)近期較受關注,而且都是基於VRF(Verifiable Random Function) 設計,可以對照學習。Algorand的版本很多,以下單指 1607.01341v9 ,暫稱其為Algorand'(筆者手中另有Algorand的 最新版本 ,其中已對下文提及的幾處問題完成了修正,可與本文參看)。
一、VRF的共性
VRF的意義很好理解——用以完成出塊人(群)的隨機選擇。為此,VRF的返回值應盡力難以預測。先看Algorand'和Dfinity的套路是怎麼做的:大體上是先將前一個隨機數(最初的隨機數卻是協議給定的)和某種代表高度、輪次的變數進行組合,用某種私鑰對之進行簽名(或者是先簽名再組合),最後哈希一下得出最新的隨機數。這樣產生的隨機數旁人很容易驗證其合乎演算法,"V"就這樣得到了;而哈希返回值又是隨機分布的,「R」也因此得到保證。在此過程中,為降低操縱結果的可能性,有兩個注意事項: A) 簽名演算法應當具有唯一性,也就是用同一把私鑰對同樣的信息進行簽名,只有一個合法簽名可以通過驗證——普通的非對稱加解密演算法一般不具備這個屬性,如SM2。如果用的簽名演算法沒有這種uniqueness屬性,那在生成新隨機數的時候就存在通過反復多次嘗試簽名以挑出最有利者的餘地,會降低安全性。 B) 避免在生成新隨機數時將當前塊的數據作為隨機性來源之一,比如引用本塊交易列表的merkle root值等等,因為這樣做會給出塊人嘗試變更打包交易順序、嘗試打包不同交易以產生最有利的新隨機數的餘地。在設計和檢視新的共識演算法時,以上兩個注意事項是要特別留意的。
考察一下VRF的返回結果應該如何運用。目前所見用法中,VRF的返回結果可以用來公開完成節點或節點群體的選擇,也可以私密地完成選擇。以Dfinity為例,它是利用mod操作來唯一、公開地確定一個Group。Algorand'、Ouroboros Praos是私密選擇的範例,大致套路是對VRF的最新返回值,配上輪次等變數後用私鑰進行簽名並哈希,如果哈希值小於某個閾值,節點就可以私密地知道自己被選中。這種方法很可能在網路節點數較多時的表現會更穩定,否則幸運兒個數上下波動會較大,進而影響協議表現,包括空塊和分叉。
二、簡評強同步假設版本的Algorand'
私密選擇提供了較強的抗擊定點攻擊的能力,但由於幸運兒的總數對於任何一個幸運兒都是不能預知的,也因此給後續共識演算法的設計和區塊鏈的優化帶來了困難。Algorand『採用了很強的同步網路假設(同步網路假設下的共識演算法當然容易做一些),要求預先知道網路消息傳播時間的上限:在固定時間內完成對固定比例的用戶的網路傳播。比如要知道,1KB消息,在1秒鍾內完成全網95%的傳播,而1MB消息需要1.5分鍾完成全網95%的傳播。但這個傳輸上限應該如何選擇? 通過一段時間的統計結果再乘以一個系數這種經驗統計?只能說「感覺上可以」,但如果要嚴謹和安全,Algorand『演算法應該補充證明即使在遭遇DDOS或互聯網擁堵的情況下消息傳播嚴重超限後演算法仍然能夠保證安全——然而這個證明是缺失的。作為對照,Ouroboros Praos公開承認之前在同步網路假設下設計的Ouroboros協議在非同步網路條件下會出錯,所以才又做了Ouroboros Praos;新版本的Algorand承認在弱同步網路時會在不同的塊上達成共識(後續網路恢復強同步時分叉可以得到解決)雲雲,這些都可資參考。
即使我們暫且認可Algorand'演算法可以通過設定一個很大的傳播時間上限來回應上述問題,但隨之而來的是此時可以看出此演算法缺乏一個非常好的特性:Responsiveness。這個特性指的是:若一個協議被設計為在一個較大的傳播時間上限DELTA下工作,但若實際傳播時間是較小的delta,則協議的實際推進步調將只和delta有關,這種協議被稱為Responsive的。具有Responsive特性的共識演算法再配以同步網路假設會非常理想——出於安全,上限可以設置很大,然而協議執行速度只和當時網路條件有關。Algorand'並不具有這種特性。平均而言,Algorand'完成共識所需的消息傳送次數是11輪,每輪如果要確保安全,完成共識的時間就會很長,單個分區的吞吐量就不會太高。當然,架構設計涉及很多取捨,最終評價一個演算法好還是不好還是要回到初心——准備拿來實現的目標是什麼。上述分析只是嘗試客觀地指出Algorand'演算法的幾個少為人知的固有特徵,供讀者自行評估。
三、簡評Dfinity的可擴展性問題
私密選擇並且立即上任的做法,也給系統分片帶來了極大挑戰。Dfinity是明確要做分片(Sharding)的,所以必須直面挑戰。可擴展性問題非常復雜,完整解決這個問題需要通盤考慮網路、存儲、計算三方面的可擴展性——時下大多數區塊鏈3.0項目只注意到計算的分片和可擴展性,忽略了其餘二者,從而不可能真正實現理想的擴展。由於公鏈節點網路帶寬的制約,計算合約所需的數據通常很難迅速地從一個節點拷貝到另一節點,所以就算用VRF實現了飄忽來去的出塊節點選擇,存儲節點是沒法同樣飄逸如風的。明顯的選擇有那麼幾個:全部節點存儲全部數據,不同節點靜態地分配用來存儲不同分區。前者的可擴展性很差,對於後者而言,如果出塊節點漂浮不定且出塊節點還需要完成合約運算,就意味著基於P2P網路來回遠程訪問存儲,性能多半急劇下降;動態決定的出塊節點只完成排序共識,計算能力和存儲捆綁,通過靜態分區提供可擴展性,可能是合理的應對。然而,最可恨的就是「然而」二字——即使如此,系統還存在一處對存儲和網路構成壓力的所在:最終用戶提交的待打包交易。普通公鏈(先不考慮EOS那種)的帶寬有限,如果用戶提交的待打包交易必須粗放型地全網泛濫傳播,那現有網路帶寬可以提供多少TPS?如果出塊節點是靜態分區或者至少提前一段時間公開知曉,事情尚有迴旋餘地;如果出塊節點是如此飄忽不定,而且直到最後一刻也只有這些節點自己知道,那無論是用戶還是出塊節點候選人看起來最直接的應對之道就是全網泛濫傳播全部待打包交易、保存全部待打包交易,這樣帶寬和存儲仍然成為系統瓶頸。
所以這里碰到的,本質上還是安全、可擴展性、去中心化的不可能三角。
四、簡評Ouroboros Praos
BM懟 Ouroboros的文字已經流傳廣泛。BM的話當然有些明顯是不對的,比如Ouroboros的DPOS是指"Dynamic [stake distribution] POS"而不是BM的Delegate POS,但其關於Pareto分布的評論則值得玩味。如果我們仔細瀏覽後出的Ouroboros Praos,可以發現協議的安全假設和安全證明完全沒有考慮經濟博弈因素,因此洋洋灑灑的證明很可能會不得要領而錯過真正需要防護的方向——畢竟一直以來POS/DPOS這些協議的血管裡面流淌的就是基於經濟博弈和人性進行設計的血液。最明顯的例子是在forward secure signature的實現方法上,協議目前的設計是要求每個好的節點自覺主動地安全刪除用過的私鑰,而完全沒有考慮近乎零的私鑰保存成本如何面對bribe attack的誘惑,然而這卻是值得考慮的。除了形式化證明之外,Ouroboros Praos本身並沒有太多值得關注的協議特徵,總體上就是用VRF抽簽結合POS演算法並針對某些安全假設進行了形式化證明,其做事的態度是非常值得贊賞的。
五、總結
這幾個演算法本身頗有創意,也很值得學習。與此同時,在看過以太坊CASPER目前披露的分區技術後,筆者的體會是:區塊鏈3.0的競爭才剛剛開始,從以太坊團隊的技術路線看,他們的技術考量和選擇要比很多宣稱要超越以太坊的團隊來得深刻和全面。如果當真要超越以太坊,還是應該先從理解以太坊開始。
順便感謝趣鏈邱煒偉博士對本文的貢獻!
❷ 區塊鏈為什麼有分叉分叉會發生什麼情況
區塊鏈的分叉(fork)的形成原因可能有多種。
當兩個結點幾乎在同一個時間挖到了礦並同時發布區塊,此時就出現臨時性的的分叉(state fork),
本質上是對比特幣這個區塊鏈當前的狀態產生了意見分歧,
當人為的發起分叉攻擊(forking attack),也就是故意造成這類分叉(deliberate fork)還有一類分叉是,當比特幣的協議發生了改變的時候,軟體需要升級。而在分布式系統中不能保證所有節點同時升級軟體,假設存在部分節點未升級,會導致協議分叉(protocol fork)。對協議修改的內容的不同,又可以將分叉分為硬分叉(hard fork)和軟分叉(soft fork);
比特幣協議增加新協議,擴展新功能,未升級軟體的舊節點會不認可這些修改,會認為這些特性是非法的。這也就是對比特幣協議內容產生分歧,從而導致的分叉叫 硬分叉 。此時,就出現了新節點永遠沿著新節點產生的鏈挖礦,舊節點永遠沿著舊節點鏈挖礦,由於新節點算力足夠強,所以形成兩條永遠都在延伸且平行的鏈。只要這部分舊節點永遠不更新,則舊鏈將一直延續,可見這種分叉是持久性的。
出現hard fork後,便變成了兩條平行的鏈,也就造成了社區分裂。社區中有一部分人,會認為下面的鏈才是根正苗紅,各個鏈上的貨幣獨立。以太坊歷史上的一件大事就是硬分叉事件。以太坊稱為ETH,但目前看到的ETH已經不是最初的ETH了,以太坊在歷史上發生過硬分叉,另一個鏈稱為ETC。實際上,ETC才是以太坊設計原本的協議,而ETH是黑客攻擊ETH上一個智能合約THE DAO後,進行回滾的協議鏈(將黑客攻擊偷取的以太幣採用硬分叉方式回滾回到另一智能合約,然後退還給真正擁有者)。
分叉之初,由於兩個鏈分叉造成了互相影響,產生了很多麻煩。比如:在ETH鏈上有一筆轉賬B->C,有人便在ETC鏈上回放,將ETC鏈上的貨幣頁轉給了C(C收到兩筆錢)。後來,對兩條鏈各添加了一個chainID,將兩個鏈區分開,才使得這兩條鏈真正分開。
如果對BTC協議添加限制,使得原本合法交易在新交易中不合法,便會形成軟分叉。
當大多數節點已經更新完畢之後,舊節點認可新節點挖出的區塊,因此發布自己挖出的區塊,但新節點不認可舊結點挖出的區塊,便沿著上一個新節點發布的區塊繼續挖礦,當新節點擁有大部分算力的時候,新鏈會越來越長,從而舊節點挖出並發布的區塊一直被拋棄,無法獲得出塊獎勵,最終倒逼舊節點升級軟體,實現所有節點認可新協議並進行升級。可見,只要系統中擁有半數以上算力節點更新軟體,此類分叉不會出現永久性分叉。比特幣腳本中的P2SH就是通過軟分叉方法加進去的。
這一部分我並沒有查到太多的資料,但是在絕大多數共識協議之中我們都假設需要過半算力;
在理論上,如果掌握了50%以上的算力,就擁有了獲得記賬權的絕對優勢,可以更快地生成區塊,也擁有了篡改區塊鏈數據的權利。因此,當具有過半的算力,也就是51%都是誠實可靠的,能保證整一個區塊鏈在合法有序的進行運行。
但是為什麼選擇過半的算力,而不是過半的用戶?比特幣系統,任何人都可以加入,且創建賬戶及其簡單,只需要本地產生公私鑰對即可。只有轉賬(交易)時候,比特幣系統才能知道該賬戶的存在。這樣,黑客可以使用計算機專門生成大量公私鑰對,當其產生大量公私鑰對超過系統中一半數目,就可以獲得支配地位(女巫攻擊)。因此,比特幣系統中很巧妙的使用算力作為投票的依據。
❸ 到底啥是區塊鏈分叉
分叉,是區塊鏈世界中一個神奇的名詞。區塊鏈網路從此一分為二,不同共識的人們從此分道揚鑣。這究竟是一次動盪的分裂,還是一次新的共識的形成?
區塊鏈的分叉,可以說是區塊鏈網路中獨有的一種版本升級方式,就像我們生活中使用的互聯網軟體一樣,使用了一段時間以後,自然而然就需要進行優化升級,從而去解決一些用戶的使用問題。區塊鏈也是這樣,只不過它的升級比較特別,升級的時候會由參與的礦工共同來決定,甚至還能產生多種版本,不像互聯網一樣一家獨裁、沒有選擇的餘地。
它的原理是這樣的,由於區塊鏈是一個由數據塊組成的鏈式結構。所以,當他要升級的時候,實際上會從某一個數據塊開始,連到兩個不同的數據塊上,從而分成了兩條鏈;就好像樹枝一樣,大家共用同一個樹干,共享會分開前的數據,但是又有很多條樹枝屬於多條鏈,而這個過程就叫做分叉。
之前我們也說了,區塊鏈的升級是由礦工們一起來決定,既然參與的人多了,就會有不同的意見,當大家能達成共識的時候,分叉出來的兩條鏈相當於一個是老的版本,一個是新的版本,兩者兼容;老鏈上的礦工升級後,逐漸向新鏈過渡,最終大家升級完成只剩新鏈,這叫做軟分叉。具體來說軟分叉屬於系統內的短暫現象,並不會分叉出一個新的區塊鏈。區塊鏈系統升級,一部分節點並哪怕沒有及時升級,也仍舊可以工作。比特幣軟分叉之後不會像硬分叉一樣產生兩條鏈,而是還會保持在一條鏈上,軟分叉會進行一些升級,但是不會影響整個系統的穩定性和有效性,舊節點會兼容新節點,只是新節點不兼容舊節點而已,二者依然可以共存在一條鏈上。
當礦工們不能達成共識的時候,大家雖然共用之前的數據,但是形成了兩條新的鏈,就好比物種進化一樣,一部分猴子進化成了人類,另一部分進化成了猩猩,兩種物種都發生了改變,互不兼容,這叫做硬分叉。也就是說區塊鏈發生永久性分歧,在新共識規則發布後,部分沒有升級的節點無法驗證已經升級的節點生產的區塊,通常硬分叉就會發生。代碼出現一個硬分叉,會改變演算法的難度級別。
實質意義上的分叉之所以產生,是因為項目在動態發展過程中原社區內部理念產生了不可調和的分歧。區塊鏈背後的社區作為去中心化組織,主張非暴力自由人的自由聯合,這意味著在向未知的將來邁進的過程中,當遇到的新問題超出了原有既定 游戲 規則之時,分歧一旦產生將很難達成一致,這是由區塊鏈基因里去中心化的屬性決定的。
區塊鏈技術的發展還處於很初期的狀態,分叉對於區塊鏈來說,就相當於一個技術迭代的過程,隨著人們不斷發現區塊鏈技術現有的限制,只有不斷升級和擴展這項技術,才能讓區塊鏈技術走向成熟。當然,這種分叉跟區塊鏈不可篡改的特性正在背道而馳,但沒有天生完美的技術,區塊鏈也不例外,技術的發展如果在發生錯誤時都不可控,那這種技術就無法做到普世,人們對它的信任度也無法提升。且分叉的結果是由社區成員投票決定的,某種程度上來說依舊遵守著去中心化的原則。
人們對區塊鏈分叉各執己見,但在區塊鏈發展的 歷史 進程里,分叉無疑讓區塊鏈變得更有故事性和可能性了。總的來說,分叉這種升級方式雖然麻煩很多。但是,他卻給了每個人更多選擇的權利。也許,區塊鏈就在這樣的求同存異之中孕更多的可能性。
❹ 區塊鏈鼻祖比特幣之8:分叉帶來的雙花支付、51%攻擊與解決辦法
分叉
前面講到了比特幣通過區塊鏈+工作量證明的獨特設計來解決了時間順序,但是不能保證在同一時刻有兩個節點算出了正確的解,雖然這種可能性很低很低。這就帶來了區塊的分叉。
雖然說幾乎同時有兩個節點計算出這一數學問題的可能性微乎其微,但是仍然存在這樣的可能性,所以分叉就以為著同一個區塊的後面可能會跟上兩個不同的區塊。
規則的打破一直要到下一個區塊被人解開。則會立即轉向最長的區塊,而那些短的區塊則會被拋棄。數學問題使得區塊很難被同時拆解。要連續發生多次更是困難。最終區塊鏈會穩定下來。也就是說所有人對最後幾個區塊順序達成共識。分叉意味著,譬如,若你的交易出現在較短的支鏈,它就會失去進入區塊鏈的位置。一般而言,只代表他會回到未確認交易池。然後被納入到下一個區塊。
比特幣網路如何解決分叉帶來的雙花支付
可惜,交易失去區塊位置的潛在可能,給了本來定序系統防範的重復支付攻擊機會。考慮下面的一個攻擊者A,其首先用自己的比特幣交換B節點的貨物,其立即又支付給自己。然後其通過努力的製造更長的鏈條來讓自己的支付替代掉B節點的支付,從而實現了雙重支付,B節點既得不到錢,還失去了貨物。
這時交易會退回到未確認池中,因為A節點已經利用參照同樣的input交易取而代之。節點就會認為Bob的交易無效。因為已使用掉。
你可能會猜測A節點會預先的計算出一支區塊鏈,然後抓住時機發布到網路。但是每個區塊的數學謎題阻擋了這個可能性。如前面所訴,解開區塊是猜測出一個隨機數的過程。一旦得出答案,解出的哈希值就會成為指紋一樣的區塊識別。只要區塊內容有一丁點變化,下一個區塊的參考值就會完全不同。此機制的結果就是無法在區塊鏈中置換區塊。在得到前一個區塊之前,下位區塊無法被解開。前一個區塊的指紋也是雜湊函數的引數之一。
同時,該工作量證明機制還解決了在集體投票表決時,誰是大多數的問題。如果決定大多數的方式是基於IP地址的,一IP地址一票,那麼如果有人擁有分配大量IP地址的權力,則該機制就被破壞了。而工作量證明機制的本質則是一CPU一票。「大多數」的決定表達為最長的鏈,因為最長的鏈包含了最大的工作量。如果大多數的CPU為誠實的節點控制,那麼誠實的鏈條將以最快的速度延長,並超越其他的競爭鏈條。如果想要對業已出現的區塊進行修改,攻擊者必須重新完成該區塊的工作量外加該區塊之後所有區塊的工作量,並最終趕上和超越誠實節點的工作量。我們將證明,設想一個較慢的攻擊者試圖趕上隨後的區塊,那麼其成功概率將呈指數化遞減。另一個問題是,硬體的運算速度在高速增長,而節點參與網路的程度則會有所起伏。為了解決這個問題,工作量證明的難度(the proof-of-work difficulty)將採用移動平均目標的方法來確定,即令難度指向令每小時生成區塊的速度為某一個預定的平均數。如果區塊生成的速度過快,那麼難度就會提高。
如果有一台超級電腦,能夠在區塊解題中獲勝?
即便是一台超級電腦,或者時幾百上千台電腦也很難贏得解一個區塊的勝利,因為競爭對手不是任一台電腦,而是整個比特幣網路。你可以用買彩票來比擬。操作千百台電腦,如同買了千百張彩票一樣。
51%攻擊是指的什麼
根據前面的例子,我們知道,要想有50%的概率領先其他人解題得到勝利,就需要掌握全網50%以上的算力。要連續領先他人解出區塊,掌握的運算能力還需要高得多。所以區塊鏈中的交易是受到數學競賽所保護。惡意用戶必須和整個網路較量。區塊連接建立的結果,使得在支鏈越前方的交易越安全。惡意的用戶必須在更長的時間贏過全網路,來達成重復支付,替換前面的區塊鏈。所以,系統只有支端末尾易受到重復支付攻擊。這也是為什麼系統建議多等幾個區塊,才能確認收款成功。
個人博客:https://dreamerjonson.com/
❺ 「數字方案」央行數字貨幣CBDC,來自Algorand的新貢獻
當前,中國數字人民幣正在穩步推進,試點地區已經從「10+1」拓展到15個省市的23個地區,數字人民幣累計交易筆數約2.64億筆,金額約830億元,商戶門店數量達456.7萬個。此外,歐盟和歐洲中央銀行積極支持數字歐元,印度則承諾推出數字盧比。
在各國央行數字貨幣方興未艾之際,由圖靈獎得主、密碼學先驅Silvio Micali教授創建的Algorand公鏈,作為2020年就被馬紹爾群島共和國選中作為發行全球首個央行數字法幣的區塊鏈基礎設施,繼續在中央銀行數字貨幣(CBDC)領域展現賦能「未來金融」(FutureFi)的風采。
Algorand 研究團隊7月12日發布了《使用 Algorand 發行中央銀行數字貨幣》(Issuing Central Bank Digital Currency Using Algorand)年度報告,對一年多來全球各中央銀行的CBDC進展進行了持續研究,提出了建立在兩層零售系統中的公共區塊鏈實例的CBDC混合模型。
在該模式下,中央銀行對 CBDC 擁有完全控制權,同時商業銀行、匯款服務商和其他金融 科技 公司等獲得許可的服務提供商(LSP)能夠促進分銷和交易。與傳統系統相比,基於區塊鏈的零售 CBDC,還促進了更廣泛的金融包容性,特別是對於那些在非正規經濟中可能難以開設傳統銀行賬戶的人。總體而言,與傳統的集中式數字貨幣相比,擬議的設計,可望有助於中央銀行更簡單、更經濟地實現CBDC運作的規模化。
Algorand 研究團隊於2021 年首次發布了關於CBDC的研究報告,本次報告新增了一個部分,聚焦 CBDC 的好處以及中央銀行在更廣泛數字時代背景下的首要作用。該報告定義了數字時代的四個關鍵趨勢,包括不斷增長的數字經濟、作為新的商業模式的資產代幣化、對替代貨幣形式的需求不斷增長,以及去中心化金融作為一種新的金融系統。這些趨勢直接挑戰了中央銀行的一項關鍵任務:確保價格穩定。公共區塊鏈的用例,比如該報告提出的模型,有助於中央銀行在數字時代繼續履行其職責。
該報告由幾位出色的經濟學家和研究人員共同撰寫。其中,Andrea Civelli 博士畢業於普林斯頓大學,專注於貨幣政策傳導和通脹建模研究,目前是美國阿肯色大學沃爾頓商學院經濟學副教授、Algorand 高級經濟學家。
Co-Pierre Georg博士,南非開普敦大學副教授,南非儲備銀行(南非央行)金融穩定研究組主席,也是Algorand 基金會經濟顧問委員會成員,他在德國耶拿大學獲得博士學位,先後在麻省理工學院、普林斯頓大學、牛津大學和哥倫比亞大學訪學。
Pietro Grassano,Algorand歐洲業務解決方案總監,曾在 J.P Morgan工作超過 15 年,擔任過該機構在法國、義大利、希臘等多個歐洲國家分支機構的領導職位。更早時期,他曾經在巴黎銀行資產管理公司、安達信咨詢公司工作。Naveed Ihsanullah,Algorand 工程研究主管,專注於分布式系統,在下一代應用安全軟體領域擁有 20 多年從業經歷。
除了引言和結論外,該報告其他6個部分的主要內容是:1、中央銀行數字貨幣的好處:強調數字時代的四個主要趨勢,對中央銀行構成的挑戰,也激發了中央銀行應該發行 CBDC。2、設計高效的 CBDC:基於各種 CBDC 項目經驗,概述了設計高效中央銀行數字貨幣的原則。3、發行 CBDC 的經濟考慮:討論發行 CBDC 時的經濟影響,從資產負債表和金融穩定影響到貨幣政策效果。4、Algorand 協議:Algorand 協議概述,包括設計原則和協議本身的高階概述。5、使用 Algorand發行零售型 CBDC:Algorand 發行零售型CBDC 的方法,包括相關設計的考慮因素、Algorand網路支持用例的詳細介紹。6、使用 Algorand 發行批發型 CBDC:Algorand 的批發型 CBDC 的設計方法和相關用例。
Algorand 顧問強調CBDC是商業銀行的生命線
CBDC出現後,從國際范圍看,還存在一定的分歧。一些國家的商業銀行甚至將央行可能發行的數字法幣視為生存威脅。
《使用 Algorand 發行中央銀行數字貨幣》研究報告的主要作者之一、南非開普敦大學副教授、Algorand 基金會經濟顧問Co-Pierre Georg博士,在近期接受媒體采訪時認為:「商業銀行真的不應該將數字法幣視為威脅」,「央行數字貨幣正在為商業銀行提供生命線。」
對於大型 科技 公司越來越多地涉足銀行服務的狀況,目前擔任南非儲備銀行金融穩定研究組主席的Georg認為:「商業銀行確實倒退了,他們會害怕 科技 巨頭們。」
正如中央銀行已將基於區塊鏈、與法定貨幣掛鉤的穩定幣視為調控經濟的潛在威脅,商業銀行也意識到,如果Facebook的 Libra 倖存下來,「如我們所知的,這將是銀行業的終結,」Georg說,「那將是一個不受金融監管的實體,擁有 23 億客戶和比摩根大通銀行市值更多的現金。包括美國的銀行在內,如何與它競爭?他們做不到。」
Georg認為,問題在於商業銀行是在建了圍牆的花園內運營。「他們做產品,他們不做基礎設施,」他說,「商業銀行應該感謝央行在公共基礎設施方面提供了一條生命線,它們都可以聚集在一起,可以競爭,重要的是,他們可以與 科技 公司競爭。」
「當你與市場上的許多參與者交談時,他們將 CBDC 視為一種可以出售給中央銀行的產品,」Georg說,「這不是正確的做法。如果你建立一個產品,你最終只是擁有 Facebook,而如果你建立基礎設施,你最終會擁有互聯網。」
這就意味著可以與互聯網早期開發者們大致相同的方式共享信息,Georg聲稱,互聯網領域用了大約 30年的時間來制定網路具有交互性的標准。同時,他還認為,CBDC 從一開始就具有互操作性的需求,可以做的事情太多了。
結合包括Algorand進行的研究,Georg 建議,一些國家的 CBDC 可以擁有不止一個賬本和一個協議,不一定分為銀行間批發 CBDC 和面向消費者的零售 CBDC。
「你可以擁有一個參與成本更高的零售分類賬本,但它為你提供智能合約;你也可以擁有一個沒有智能合約但每秒交易量非常高的零售分類賬本,」Georg 說,「作為中央銀行,可以同時操作兩者。」
至於區塊鏈,Georg 表示,一場不必要的爭斗是,銀行界的一些人將基於區塊鏈的 CBDC 視為實時結算系統的競爭對手。
「現有的支付系統運行良好,」他說,而且價格低廉、運營可靠,「據我所知從未失敗過。」但是,實時結算系統沒有「促進我們從需要去中心化分類賬的私人加密資產中看到的一些新創新」,例如物理或數字資產的代幣化。鑒於加密貨幣的驚人增長,該領域顯然存在潛力。
「如果你可以將其引入公共基礎設施,假設受到良好監管、由受信任的機構維護,那麼這種新型基礎設施可以支持處於數字經濟核心的新商業模式。我認為這就是為什麼區塊鏈進來的原因,」他說,「你需要一個分布式賬本來確保這個系統中沒有任何人可以復制數據,區塊鏈的秘密超能力就在於它使數據獨一無二。」
就潛力而言,他指出「支付系統的最後一次迭代出現在 60 和 70 年代,當時引入了數字支付。」因為技術的支持,「區塊鏈確實可以促成新的商業模式。」
(END)
商業及非商業用途的轉載,均請獲得作者授權,並註明「赫美茲數字坊出品」。
❻ 【區塊鏈知識】當我們遇到分叉問題時,該怎麼辦
遇到分叉問題,該聽誰的?
假想這樣一個場景,在區塊鏈中,一定會遇到這樣的情況,區塊甲和區塊乙同時把一條信息記錄下來,並且做好編碼和時間戳。
他們兩個區塊同時發布信息,說這個編碼為4495662的信息是我記賬的,它的報酬應該歸我!
然後,大家就有的認為報酬應該歸區塊甲,有的則認為歸區塊乙,而報酬只有一份,只能給一個區塊。這下好了,出現不同意見了,該怎麼辦?
更嚴重的是,有的區塊會認為這件事是區塊甲做的,也記下來,順著編碼繼續往後記賬;另外一些區塊則認為這件事是區塊乙做的,跟著在區塊乙後邊繼續記賬。
這樣事情就大條了!原本嚴謹的唯一的一條信息鏈,到區塊甲和區塊乙這里,硬生生給分開了,它們各自後邊分別跟著常常的鏈條。
這種情況持續下去,就導致每個人都無法辨別自己掌握的信息鏈,是否正確了!
為了解決這個問題,區塊鏈技術又出台了一個新的規則:每條記錄都要頂格寫,同時要保證中心離田字格上邊緣要保持0.897 57毫米的位置上。
為了符合要求,每個人都得拿著尺子去量好位置,然後才能開始記錄。這樣記錄每條信息時,增加了難度,延長了操作時間。
只要一個人做好了記錄,大喊一聲,我記錄好了!
其他人就停筆不再記錄這條信息,反而開始記錄這條信息是某某記錄的接著那個編碼繼續往下記錄。
遇到分叉問題,就是這樣解決的。
❼ 區塊鏈分叉是什麼
區塊鏈分叉是什麼?分叉會導致我的比特幣一分為二嗎?
在中心化系統中升級軟體十分簡單,在應用商店點擊「升級」即可。但是在區塊鏈等去中心化系統中,「升級」並不是那麼簡單,甚至可能一言不合造成區塊鏈分叉。
簡單說,分叉是指區塊鏈在進行「升級」時發生了意見分歧,從而導致區塊鏈分叉。因為沒有中心化機構,比特幣等數字資產每次代碼升級都需要獲得比特幣社區的一致認可,如果比特幣社區無法達成一致,區塊鏈很可能形成分叉。
以比特幣為例,2017年7月,為了解決比特幣區塊鏈擁堵問題,一些比特幣愛好者提出了bitcoin cash分叉方案,導致比特幣區塊鏈一分為二。
根據分叉後的區塊鏈是否能兼容舊區塊鏈,分叉又分為「硬分叉」和「軟分叉」。
❽ 什麼是比特幣區塊鏈的分叉
分叉有區別為普通的升級,普通的升級在升級前後是沒有影響協議共識的,也一般不需要社區共識或算力共識的參與。而分叉根據對協議的修改情況分為軟分叉和硬分叉。
現有的定義:
【閃電定義】硬分叉是指比特幣區塊格式或交易格式(這就是廣泛流傳的「共識」(應該是部分協議共識))發生改變時,未升級的節點拒絕驗證已經升級的節點生產出的區塊,不過已經升級的節點可以驗證未升級節點生產出的區塊,然後大家各自延續自己認為正確的鏈,所以分成兩條鏈。
A permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can』t validate blocks created by upgraded nodes that follow newer consensus rules.
【閃電定義】軟分叉是指比特幣交易的數據結構(這就是被廣泛流傳的「共識」(應該是部分協議共識))發生改變時,未升級的節點可以驗證已經升級的節點生產出的區塊,而且已經升級的節點也可以驗證未升級的節點生產出的區塊。
A temporary fork in the block chain which commonly occurs when miners using non-upgraded nodes violate a new consensus rule their nodes don』t know about.
我覺得不能說哪個定義正確還是錯誤,具體的定義可以根據已經較大社區共識的兩者的區別來自己總結,不需要權威來指定。
硬分叉:沒有向前兼容性,之前的版本將不可再用,需要強制升級。
軟分叉:有較好的兼容性,之前版本至少部分功能可用,可不升級。
硬分叉:在區塊鏈層面會有分叉的兩條鏈,一條原舊鏈,一條分叉新鏈。
軟分叉:在區塊鏈層面沒有分叉的鏈,只是組成鏈的區塊,有新區塊和舊區塊。
硬分叉:需要在某個時間點全部同意分叉升級,不同意的將會進入原舊鏈。
軟分叉:相當長的時間里,可允許不進行升級,繼續使用原版本生成舊區塊,與新區塊並存
❾ 知鏈區塊鏈金融應用實踐平台成績怎麼算
1. 工作量證明(PoW)
中本聰在2009年提出的比特幣(Bitcoin)是區塊鏈技術最早的應用,其採用PoW作為共識演算法,其核心思想是節點間通過哈希算力的競爭來獲取記賬權和比特幣獎勵。PoW中,不同節點根據特定信息競爭計算一個數學問題的解,這個數學問題很難求解,但卻容易對結果進行驗證,最先解決這個數學問題的節點可以創建下一個區塊並獲得一定數量的幣獎勵。中本聰在比特幣中採用了HashCash[4]機制設計這一數學問題。本節將以比特幣採用的PoW演算法為例進行說明,PoW的共識步驟如下:
節點收集上一個區塊產生後全網待確認的交易,將符合條件的交易記入交易內存池,然後更新並計算內存池中交易的Merkle根的值,並將其寫入區塊頭部;
在區塊頭部填寫如表1.1所示的區塊版本號、前一區塊的哈希值、時間戳、當前目標哈希值和隨機數等信息;
表1.1 區塊頭部信息
隨機數nonce在0到232之間取值,對區塊頭部信息進行哈希計算,當哈希值小於或等於目標值時,打包並廣播該區塊,待其他節點驗證後完成記賬;
一定時間內如果無法計算出符合要求的哈希值,則重復步驟2。如果計算過程中有其他節點完成了計算,則從步驟1重新開始。
比特幣產生區塊的平均時間為10分鍾,想要維持這一速度,就需要根據當前全網的計算能力對目標值(難度)進行調整[5]。難度是對計算產生符合要求的區塊困難程度的描述,在計算同一高度區塊時,所有節點的難度都是相同的,這也保證了挖礦的公平性。難度與目標值的關系為:
難度值=最大目標值/當前目標值 (1.1)
其中最大目標值和當前目標值都是256位長度,最大目標值是難度為1時的目標值,即2224。假設當前難度為,算力為,當前目標值為,發現新區塊的平均計算時間為,則
根據比特幣的設計,每產生2016個區塊後(約2周)系統會調整一次當前目標值。節點根據前2016個區塊的實際生產時間,由公式(1.4)計算出調整後的難度值,如果實際時間生產小於2周,增大難度值;如果實際時間生產大於2周,則減小難度值。根據最長鏈原則,在不需要節點同步難度信息的情況下,所有節點在一定時間後會得到相同的難度值。
在使用PoW的區塊鏈中,因為網路延遲等原因,當同一高度的兩個區塊產生的時間接近時,可能會產生分叉。即不同的礦工都計算出了符合要求的某一高度的區塊,並得到與其相近節點的確認,全網節點會根據收到區塊的時間,在先收到的區塊基礎上繼續挖礦。這種情況下,哪個區塊的後續區塊先出現,其長度會變得更長,這個區塊就被包括進主鏈,在非主鏈上挖礦的節點會切換到主鏈繼續挖礦。
PoW共識演算法以算力作為競爭記賬權的基礎,以工作量作為安全性的保障,所有礦工都遵循最長鏈原則。新產生的區塊包含前一個區塊的哈希值,現存的所有區塊的形成了一條鏈,鏈的長度與工作量成正比,所有的節點均信任最長的區塊鏈。如果當某一組織掌握了足夠的算力,就可以針對比特幣網路發起攻擊。當攻擊者擁有足夠的算力時,能夠最先計算出最新的區塊,從而掌握最長鏈。此時比特幣主鏈上的區塊大部分由其生成,他可以故意拒絕某些交易的確認和進行雙花攻擊,這會對比特幣網路的可信性造成影響,但這一行為同樣會給攻擊者帶來損失。通過求解一維隨機遊走問題,可以獲得惡意節點攻擊成功的概率和算力之間的關系:
圖1.1 攻擊者算力與攻擊成功概率
2. 權益證明(PoS)
隨著參與比特幣挖礦的人越來越多,PoW的許多問題逐漸顯現,例如隨著算力競爭迅速加劇,獲取代幣需要消耗的能源大量增加,記賬權也逐漸向聚集了大量算力的「礦池」集中[6-9]。為此,研究者嘗試採用新的機製取代工作量證明。PoS的概念在最早的比特幣項目中曾被提及,但由於穩健性等原因沒被使用。PoS最早的應用是點點幣(PPCoin),PoS提出了幣齡的概念,幣齡是持有的代幣與持有時間乘積的累加,計算如公式(1.4)所示。利用幣齡競爭取代算力競爭,使區塊鏈的證明不再僅僅依靠工作量,有效地解決了PoW的資源浪費問題。
其中持有時間為某個幣距離最近一次在網路上交易的時間,每個節點持有的幣齡越長,則其在網路中權益越多,同時幣的持有人還會根據幣齡來獲得一定的收益。點點幣的設計中,沒有完全脫離工作量證明,PoS機制的記賬權的獲得同樣需要進行簡單的哈希計算:
其中proofhash是由權重因子、未消費的產出值和當前時間的模糊和得到的哈希值,同時對每個節點的算力進行了限制,可見幣齡與計算的難度成反比。在PoS中,區塊鏈的安全性隨著區塊鏈的價值增加而增加,對區塊鏈的攻擊需要攻擊者積攢大量的幣齡,也就是需要對大量數字貨幣持有足夠長的時間,這也大大增加了攻擊的難度。與PoW相比,採用PoS的區塊鏈系統可能會面對長程攻擊(Long Range Attack)和無利害攻擊(Nothing at Stake)。
除了點點幣,有許多幣也使用了PoS,但在記賬權的分配上有著不同的方法。例如,未來幣(Nxt)和黑幣(BlackCion)結合節點所擁有的權益,使用隨機演算法分配記賬權。以太坊也在逐步採用PoS代替PoW。
3. 委託權益證明(DPoS)
比特幣設計之初,希望所有挖礦的參與者使用CPU進行計算,算力與節點匹配,每一個節點都有足夠的機會參與到區塊鏈的決策當中。隨著技術的發展,使用GPU、FPGA、ASIC等技術的礦機大量出現,算力集中於擁有大量礦機的參與者手中,而普通礦工參與的機會大大減小。
採用DPoS的區塊鏈中,每一個節點都可以根據其擁有的股份權益投票選取代表,整個網路中參與競選並獲得選票最多的n個節點獲得記賬權,按照預先決定的順序依次生產區塊並因此獲得一定的獎勵。競選成功的代表節點需要繳納一定數量的保證金,而且必須保證在線的時間,如果某時刻應該產生區塊的節點沒有履行職責,他將會被取消代表資格,系統將繼續投票選出一個新的代表來取代他。
DPoS中的所有節點都可以自主選擇投票的對象,選舉產生的代表按順序記賬,與PoW及PoS相比節省了計算資源,而且共識節點只有確定的有限個,效率也得到了提升。而且每個參與節點都擁有投票的權利,當網路中的節點足夠多時,DPoS的安全性和去中心化也得到了保證。
4. 實用拜占庭容錯演算法(PBFT)
在PBFT演算法中,所有節點都在相同的配置下運行,且有一個主節點,其他節點作為備份節點。主節點負責對客戶端的請求進行排序,按順序發送給備份節點。存在視圖(View)的概念,在每個視圖中,所有節點正常按照處理消息。但當備份節點檢查到主節點出現異常,就會觸發視圖變換(View Change)機制更換下一編號的節點為主節點,進入新的視圖。PBFT中客戶端發出請求到收到答復的主要流程如圖4.1所示[10] [11],伺服器之間交換信息3次,整個過程包含以下五個階段:
圖4.1 PBFT執行流程
目前以PBFT為代表的拜占庭容錯演算法被許多區塊鏈項目所使用。在聯盟鏈中,PBFT演算法最早是被Hyper ledger Fabric項目採用。Hyperledger Fabric在0.6版本中採用了PBFT共識演算法,授權和背書的功能集成到了共識節點之中,所有節點都是共識節點,這樣的設計導致了節點的負擔過於沉重,對TPS和擴展性有很大的影響。1.0之後的版本都對節點的功能進行了分離,節點分成了三個背書節點(Endorser)、排序節點(Orderer)和出塊節點(Committer),對節點的功能進行了分離,一定程度上提高了共識的效率。
Cosmos項目使用的Tendermint[12]演算法結合了PBFT和PoS演算法,通過代幣抵押的方式選出部分共識節點進行BFT的共識,其減弱了非同步假設並在PBFT的基礎上融入了鎖的概念,在部分同步的網路中共識節點能夠通過兩階段通信達成共識。系統能夠容忍1/3的故障節點,且不會產生分叉。在Tendermint的基礎上,Hotstuff[13]將區塊鏈的塊鏈式結構和BFT的每一階段融合,每階段節點間對前一區塊簽名確認與新區塊的構建同時進行,使演算法在實現上更為簡單,Hotstuff還使用了門限簽名[14]降低演算法的消息復雜度。
5. Paxos與Raft
共識演算法是為了保障所存儲信息的准確性與一致性而設計的一套機制。在傳統的分布式系統中,最常使用的共識演算法是基於Paxos的演算法。在拜占庭將軍問題[3]提出後,Lamport在1990年提出了Paxos演算法用於解決特定條件下的系統一致性問題,Lamport於1998年重新整理並發表Paxos的論文[15]並於2001對Paxos進行了重新簡述[16]。隨後Paxos在一致性演算法領域占據統治地位並被許多公司所採用,例如騰訊的Phxpaxos、阿里巴巴的X-Paxos、亞馬遜的AWS的DynamoDB和谷歌MegaStore[17]等。這一類演算法能夠在節點數量有限且相對可信任的情況下,快速完成分布式系統的數據同步,同時能夠容忍宕機錯誤(Crash Fault)。即在傳統分布式系統不需要考慮參與節點惡意篡改數據等行為,只需要能夠容忍部分節點發生宕機錯誤即可。但Paxos演算法過於理論化,在理解和工程實現上都有著很大的難度。Ongaro等人在2013年發表論文提出Raft演算法[18],Raft與Paxos同樣的效果並且更便於工程實現。
Raft中領導者占據絕對主導地位,必須保證伺服器節點的絕對安全性,領導者一旦被惡意控制將造成巨大損失。而且交易量受到節點最大吞吐量的限制。目前許多聯盟鏈在不考慮拜占庭容錯的情況下,會使用Raft演算法來提高共識效率。
6. 結合VRF的共識演算法
在現有聯盟鏈共識演算法中,如果參與共識的節點數量增加,節點間的通信也會增加,系統的性能也會受到影響。如果從眾多候選節點中選取部分節點組成共識組進行共識,減少共識節點的數量,則可以提高系統的性能。但這會降低安全性,而且候選節點中惡意節點的比例越高,選出來的共識組無法正常運行的概率也越高。為了實現從候選節點選出能夠正常運行的共識組,並保證系統的高可用性,一方面需要設計合適的隨機選舉演算法,保證選擇的隨機性,防止惡意節點對系統的攻擊。另一方面需要提高候選節點中的誠實節點的比例,增加誠實節點被選進共識組的概率。
當前在公有鏈往往基於PoS類演算法,抵押代幣增加共識節點的准入門檻,通過經濟學博弈增加惡意節點的作惡成本,然後再在部分通過篩選的節點中通過隨機選舉演算法,從符合條件的候選節點中隨機選舉部分節點進行共識。
Dodis等人於1999年提出了可驗證隨機函數(Verifiable Random Functions,VRF)[19]。可驗證隨機函數是零知識證明的一種應用,即在公私鑰體系中,持有私鑰的人可以使用私鑰和一條已知信息按照特定的規則生成一個隨機數,在不泄露私鑰的前提下,持有私鑰的人能夠向其他人證明隨機數生成的正確性。VRF可以使用RSA或者橢圓曲線構建,Dodis等人在2002年又提出了基於Diffie-Hellman 困難性問題的可驗證隨機函數構造方法[20],目前可驗證隨機函數在密鑰傳輸領域和區塊鏈領域都有了應用[21]。可驗證隨機函數的具體流程如下:
在公有鏈中,VRF已經在一些項目中得到應用,其中VRF多與PoS演算法結合,所有想要參與共識的節點質押一定的代幣成為候選節點,然後通過VRF從眾多候選節點中隨機選出部分共識節點。Zilliqa網路的新節點都必須先執行PoW,網路中的現有節點驗證新節點的PoW並授權其加入網路。區塊鏈項目Ontology設計的共識演算法VBFT將VRF、PoS和BFT演算法相結合,通過VRF在眾多候選節點中隨機選出共識節點並確定共識節點的排列順序,可以降低惡意分叉對區塊鏈系統的影響,保障了演算法的公平性和隨機性。圖靈獎獲得者Micali等人提出的Algorand[22]將PoS和VRF結合,節點可以採用代幣質押的方式成為候選節點,然後通過非互動式的VRF演算法選擇部分節點組成共識委員會,然後由這部分節點執行類似PBFT共識演算法,負責交易的快速驗證,Algorand可以在節點為誠實節點的情況下保證系統正常運行。Kiayias等人提出的Ouroboros[23]在第二個版本Praos[24]引入了VRF代替偽隨機數,進行分片中主節點的選擇。以Algorand等演算法使用的VRF演算法為例,主要的流程如下:
公有鏈中設計使用的VRF中,節點被選為記賬節點的概率往往和其持有的代幣正相關。公有鏈的共識節點范圍是無法預先確定的,所有滿足代幣持有條件的節點都可能成為共識節點,系統需要在數量和參與度都隨機的節點中選擇部分節點進行共識。而與公有鏈相比,聯盟鏈參與共識的節點數量有限、節點已知,這種情況下聯盟鏈節點之間可以通過已知的節點列表進行交互,這能有效防止公有鏈VRF設計時可能遇到的女巫攻擊問題。
7. 結合分片技術的公式演算法
分片技術是資料庫中的一種技術,是將資料庫中的數據切成多個部分,然後分別存儲在多個伺服器中。通過數據的分布式存儲,提高伺服器的搜索性能。區塊鏈中,分片技術是將交易分配到多個由節點子集組成的共識組中進行確認,最後再將所有結果匯總確認的機制。分片技術在區塊鏈中已經有一些應用,許多區塊鏈設計了自己的分片方案。
Luu等人於2017年提出了Elastico協議,最先將分片技術應用於區塊鏈中[25]。Elastico首先通過PoW演算法競爭成為網路中的記賬節點。然後按照預先確定的規則,這些節點被分配到不同的分片委員會中。每個分片委員會內部執行PBFT等傳統拜占庭容錯的共識演算法,打包生成交易集合。在超過的節點對該交易集合進行了簽名之後,交易集合被提交給共識委員會,共識委員會在驗證簽名後,最終將所有的交易集合打包成區塊並記錄在區塊鏈上。
Elastico驗證了分片技術在區塊鏈中的可用性。在一定規模內,分片技術可以近乎線性地拓展吞吐量。但Elastico使用了PoW用於選舉共識節點,這也導致隨機數產生過程及PoW競爭共識節點的時間過長,使得交易延遲很高。而且每個分片內部採用的PBFT演算法通訊復雜度較高。當單個分片中節點數量較多時,延遲也很高。
在Elastico的基礎上,Kokoris-Kogias等人提出OmniLedger[26],用加密抽簽協議替代了PoW選擇驗證者分組,然後通過RandHound協議[27]將驗證者歸入不同分片。OmniLedger。OmniLedger在分片中仍然採用基於PBFT的共識演算法作為分片中的共識演算法[28],並引入了Atomix協議處理跨分片的交易,共識過程中節點之間通信復雜度較高。當分片中節點數量增多、跨分片交易增多時,系統TPS會顯著下降。
Wang等人在2019年提出了Monoxide[29]。在PoW區塊鏈系統中引入了分片技術,提出了連弩挖礦演算法(Chu ko-nu mining algorithm),解決了分片造成的算力分散分散問題,使得每個礦工可以同時在不同的分片進行分片,在不降低安全性的情況下提高了PoW的TPS。
❿ 區塊鏈為什麼會分叉
分叉是區塊鏈體驗的核心,類似於系統升級。「分叉」一條鏈,本質上就是要對運行區塊鏈的軟體做出改變。根據不同的情況,分叉所引發的問題也非常多,有的很快能夠達成共識,有的則極具爭議。 在中心化系統中,軟體升級極其簡單,只需要打補丁或者對其某些功能的兼容性等迭代更新。而去中心化系統中,升級遠沒有那麼簡單輕松,它需要取得鏈上各節點或者交易方達成共識。在一些重大功能上的改善時,常會遭到社區某些人的反對,一旦有超過 2/3 的人不同意,那麼他們就得選擇其它途徑,創造它們自己的協議和分支區塊鏈,於是分叉也就隨之發生。在比特幣中,其通過 比特幣軟體 (也叫比特幣協議)的形式實現,它確定了針對所有人的規則,包括 區塊大小、對礦工的獎勵等 。如果所有人使用比特幣,那就得同意這份協議。類似於國家的法律,每個人必須遵守。然而,不僅僅是比特幣,其它加密數字貨幣也是一樣的,作為軟體項目,總是不乏需要完善的地方,因此,技術更新和開發基本都是一往直前的,比特幣開發者是通過更新軟體(比特幣協議)來解決問題或增強功能的。簡單而言,區塊鏈網路中只要發生意見分歧、協議改進(新增、升級)等就有可能產生分叉。其實,談起分叉我們並不難理解,以比特幣為例,可以將比特幣分叉分為兩大類:比特幣協議和存儲交易系統。比特幣協議完全是開源的,如果要創建自己的分支區塊鏈,那就要先把比特幣軟體源代碼復制下來,然後再根據自己的需要進行適當修改。最後,通過指定的區塊編號讓比特幣開始分叉並生效,其實就是相當於中心化系統程序中的定時指令。比如可以規定區塊編號在到達 10000 時分叉開始生效,當該區塊編號傳送的指令到社區時會分成兩部分,一部分支持原協議,一部分支持分叉協議,然後每個部分會再次添加新的區塊到它們所支持的那一條鏈上。