當前位置:首頁 » 比特幣問答 » 伊斯坦布爾比特幣

伊斯坦布爾比特幣

發布時間: 2022-09-19 17:18:34

A. 中本聰是怎麼解決拜占庭將軍問題的a設計了可復用的工作量證明por+pow+pow工作

摘要 故事大概是這么說的:

B. 比特幣因為什麼可以被稱為主流幣

拜占庭將軍問題

在討論比特幣為什麼會被稱為主流幣之前先看一個有趣的問題,這個問題的名字叫做拜占庭將軍問題。

這個問題是由萊斯利·蘭伯特提出的點對點通信的基本問題。

為什麼會被稱為拜占庭將軍問題呢?有兩大歷史淵源。

一、拜占庭位於如今土耳其的伊斯坦布爾,是東羅馬帝國的首都,由於羅馬帝國當時土地遼闊,每個軍隊都相隔較遠,信息傳遞全靠信差。而在戰爭時拜占庭的所有將軍必須達成是否攻擊的共識,這樣才能贏得戰爭。但是因為有叛徒和間諜的存在就會擾亂秩序,使得難以形成正確的共識。拜占庭將軍問題就這樣形成了。

二、Leslie Lamport(2013 年的圖靈講得主)用來為描述分布式系統一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子。

Leslie Lamport在20頁的文章中舉了一個具體的例子來描述什麼是拜占庭將軍問題,拜占庭排出了10支部隊去圍攻一個城池,10支部隊由10個將軍帶領,分布在城池的四周靠通信兵傳遞信息,由於敵人實力強悍,必須要6隊或以上的人馬同時發起進攻才能贏得戰爭。如何保證至少6支軍隊可以同時發起進攻。

從字面上看起來似乎不是一個很難的問題,其實際解決起來卻沒那麼容易,在中本聰提出比特幣網路概念之前這個問題一直就沒有得到較好的解決。

為什麼這么難解決呢?

因為信息傳遞是分散的,並且其中還可能存在間諜叛徒搗亂。

先不考慮有叛徒和間諜的情況,光10個將軍想要統一一個發動進攻的時間都很難,舉例:每一個將軍都有著自己的進攻想法,想要統一一個進攻時間就要將自己的想法讓通信兵傳達給剩餘的9位將軍,並詢問是否同意在這個時間發起進攻,又由於路途遠近的不同,收到的提議的時間都不同,這樣就很容易形成一個混亂的局面。

如果再加上叛徒和間諜就更可怕了,叛徒和間諜可以向不同的將軍發出不同的提案,或者同意多個將軍的進攻提案。

這樣來看這個問題是不是就極其復雜了。

其實拜占庭將軍問題,就是要解決分散的人們在沒有一個中心化指揮時,如何達成共識的問題。

那中本聰如何成功解決拜占庭將軍問題的呢?

POW工作量證明

中本聰提出用工作量證明的方法解決這個問題。

POW工作量證明通過增加信息發送的成本,降低節點發送信息的速率,保證在一個時間只有很少的節點進行信息的傳遞,並且信息的傳遞附上簽名的辦法很好的解決了拜占庭將軍問題。

那工作量證明是什麼呢?其實際就是一個散列函數,當你輸入一個任意值X進入這個函數進行運算,會對應得到H(X)的結果,但當你稍微變動一下X,H(X)就會發生巨大的變化 , 也就是說理論上你無法在得知H(X)的情況下反推出X的結果,想要算出X唯一的辦法就是窮舉運算,也就是我們常說的一個一個帶進去試 。 由於這個運算量很大,而運算的過程就是工作的過程。

哈希函數

前面說到的散列函數實際上就是哈希函數,只是翻譯不同哈希是Hash的音譯。

其實在比特幣網路的整體架構中,哈希函數到處都有體現,整個網路的運行就是圍繞中哈希函數展開的。

比特幣在記賬時,使用哈希函數對記錄的數據進行哈希,數據哈希可以帶來一下好處,首先信息變短並且原始信息被隱藏,其次有了標識和驗證信息的辦法。

下面用一個大概流程進行展示。

區塊鏈在記賬時先把正常的信息進行Hash,會得到一個Hash值。

1.Hash(序號0、記賬時間、交易記錄) = 123456ABC

賬頁的信息和Hash值組合就構成了一個完整的區塊。

在記下一頁賬時,將上一個區塊的Hash值和當前的賬頁信息一同Hash。

2.Hash(上一個Hash值、序號1、記賬時間、交易記錄) = 654321CBA

這樣第二個區塊不僅包含自己區塊的信息還間接包含了前一個區塊的信息。

礦工在挖礦時,實際上就是在計算Hash函數。之後會專門寫一篇文章來講解挖礦的過程。

在確定數字貨幣所有權方面,其實也是經過兩次Hash從私鑰得到了地址,這個地址平常我們打幣使用的地址。誰擁有私鑰誰就可以進行交易,私鑰就是你唯一的資產憑證,所以一定要保管好自己的私鑰。

為什麼比特幣可以被稱為主流幣呢?不是因為它漲幅有多麼驚人,市值有多高,而是因為它的出現解決了許多問題,給人們提供了一種全新的點對點電子分布式網路架構。

C. 什麼是比特幣加密技術

比特幣和區塊鏈的誕生需要依賴於很多核心技術的突破:一是拜占庭容錯技術;二是非對稱加密技術;三是點對點支付技術。下面會依次介紹。
拜占庭容錯技術
比特幣和區塊鏈誕生的首要難點在於如何創建分布式共識機制,也就是菜斯利·蘭伯特等人1982年提出的拜占庭將軍問題。所謂拜占庭將軍問題是指,把戰爭中互不信任的各城邦軍隊如何達成共識並決定是否出兵的決策過程。延伸至計算機領域,試圖創建具有容錯性的分布式系統,即使部分節點失效仍可確保系統正常運行,也可讓多個基於零信任基礎的節點達成共識,並確保信息傳遞的一致性。
中本聰所提到的「拜占庭將軍問題」解決方法起始於亞當﹒拜克在1997年發明的哈希現金演算法機制,起初該設計是用於限制垃圾郵件發送與拒絕服務攻擊。2004年,密碼朋克運動早期和重要成員哈爾·芬尼將亞當﹒拜克的哈希現金演算法改進為可復用的工作量證明機制。他們的研究又是基於達利亞·馬凱與邁克爾·瑞特的學術成果:拜占庭容錯機制。正是哈爾·芬尼的可復用的工作量證明機制後來成為比特幣的核心要素之一。哈爾·芬尼是中本聰的最早支持者,同時也是第一筆比特幣轉賬的接受者,在比特幣發展的早期與中本聰有大量互動與交流。
非對稱加密技術
比特幣的非對稱加密技術來源於以下幾項密碼學的技術創新:1976年,Sun公司前首席安全官Whitfield Diffie與斯坦福大學教授Martin Hell,在開創性論文《密碼學的新方向》首次提出公開鑰匙密碼學的概念,發明了非對稱加密演算法。1978年省理工學院的倫納德·阿德曼、羅納德·李維斯特、阿迪·薩莫爾三名研究人員,共同發明了公開鑰匙系統「RSA」可用於數據加密和簽名,率先開發第一個具備商業實用性的非對稱RSA加密演算法。1985年,Neal Koblitz和Victor Miller倆人,首次提出將橢圓曲線演算法(ECC),應用於密碼學,並建立公鑰加密的演算法,公鑰密碼演算法的原理是利用信息的不對稱性,公鑰對應的是私鑰,私鑰是解開所有信息的鑰匙,公鑰可以由私鑰反推算出。ECC能夠提供比RSA更高級別的安全。比特幣使用的就是橢圓曲線演算法公鑰用於接收比特幣,而私鑰則是比特幣支付時的交易簽名。這些加密演算法奠定了當前非對稱加密理論的基礎,被廣泛應用於網路通信領域。但是,當時這些加密技術發明均在NSA嚴密監視的視野之內。NSA最初認為它們對國家安全構成威脅,並將其視為軍用技術。直到20世紀90年代末,NSA才放棄對這些非對稱加密技術的控制,RSA演算法、ECC演算法等非對稱加密技術最終得以走進公眾領域。
不過,中本聰並不信任NSA公布的加密技術,在比特幣系統中沒有使用RSA公鑰系統,原因除了ECC能夠提供比RSA更高級別的安全性能外,還擔心美國安全部門在RSA留有技術後門。2013年9月,斯諾登就曾爆料NSA採用秘密方法控制加密國際標准,比特幣採用的RSA可能留有後門,NSA能以不為人知的方法弱化這條曲線。所幸的是,中本聰神一般走位避開了RSA的陷阱,使用的加密技術不是NSA的標准,而是另一條鮮為人知的橢圓曲線,這條曲線並不在美國RSA的掌握之下。全世界只有極少數程序躲過了這一漏洞,比特幣便是其中之一。

D. 如何理解拜占庭將軍問題

拜占庭將軍問題(以下簡稱「共識問題」)的正式表述是:如何在一個不基於信任的分布式網路中就信息達成共識?這個表述聽起來有些晦澀,但其本質並不復雜,下面的例子與共識問題雖然並不完全一致,但卻有助於我們的理解[9]。 想像一下在遙遠的拜占庭時代,有一個富饒的城邦,金銀珠寶綾羅綢緞應有盡有,它的領主哆啦A夢獨享著這一切奢華與榮耀。而在城邦的外圍,四位拜占庭將軍大雄、胖虎、小夫和靜香都覬覦著哆啦A夢的財富,於是他們決定聯手攻佔哆啦A夢的城邦。根據雙方的實力對比,必須有超過半數的將軍同時發起進攻方能克敵制勝,因此獲勝條件就是四人中至少三個人可以就進攻時間達成一致。那麼四位將軍的勝算有多少呢? 這個問題的答案就要取決於四個人的合作方式了,如果是集中式系統,有一個盟主,比如胖虎(相當於中央伺服器),那麼他們的勝利是毫無懸念的,因為就進攻時間達成一致非常簡單,只要胖虎召集大雄、小夫和靜香開個會討論一下就可以了,即使大家意見有分歧胖虎也可以在最後予以定奪。下面讓我們回到拜占庭將軍問題的假設里,在不基於信任的分布式網路中,四位將軍的勝算又如何呢? ? 首先由於四位將軍之間缺乏信任,因此聚到小黑屋裡開個密謀會的可能性被排除了(一旦在小黑屋裡被胖虎綁架了怎麼辦?);其次由於沒有盟主,四個人的意見都會被同等的看重。在這種情況下,四位將軍只能通過信使在各自營地之間傳遞消息,來商定進攻時間了。比如大雄覺得早上6點是發動進攻的好時機,他就會派信使將自己的意見告訴胖虎、小夫和靜香,與此同時,胖虎可能認為晚上9點發動突襲更好,小夫更喜歡下午3點出擊,而靜香希望是上午10點,他們三人也會在同一時間派出自己的信使。這樣一來,在第一輪通信結束後,四位將軍每個人都有了四個可供選擇的進攻時間,他們各自要在下一輪通信中把自己選定的時間告知另外三人。由於四個人的決策都是獨立做出的,因此最終的選擇結果就有256種可能,而只有當三人以上都恰好選擇了同一時間的時候,共識才被達成,而這樣的結果才64種,也就是說達成共識的概率僅為1/4。這還只是四位將軍的情況,如果將軍的人數是10人,100人,1000人呢?我們稍加計算就可以發現隨著人數的增加,達成共識的希望會變得越來越渺茫。 把上面例子中的將軍換成計算機網路中的節點,把信使換成節點之間的通信,把進攻時間換成需要達成共識的信息,你就可以理解共識問題所描述的困境了。達成共識的能力對於一個支付系統來說重要性不言而喻,如果你給家裡匯了一筆錢買車,第二天去銀行核實的時候櫃台告訴你「關於你匯了多少錢的問題,我們的系統里有三個版本的記錄」,這樣的銀行你顯然是不敢把錢存進去的。在比特幣出現之前共識問題是很難被完美解決的,要保證達成共識就需要採用集中式系統(除非節點滿足特定條件),要想去中心化共識就無法保證。那麼區塊鏈技術又是如何解決這一難題的呢?

E. 一文讀懂以太坊—ETH2.0,是否值得長期持有

這幾天一直在看關於ETH倫敦升級方面的資料,簡單的聊一下,在加密貨幣的世界裡,無論是投資機構、區塊鏈應用開發者、礦機商,還是個人投資者、硬體供應商、 游戲 行業從業者等等,提起以太坊,或多或少都會有一些了解。

一方面取決於以太坊代幣 ETH 本身的造富效應。從 2014 年首次發行以來,投資回報率已經超過 7400 倍。


另一方面,以太坊作為應用最廣泛的去中心應用編程平台,引來無數開發者在其之上開發應用。這些應用不僅產生了巨大的商業價值,伴隨 DEFI 生態、NFT 生態、DAO 生態蓬勃發展,也給 ETH 帶來了更多使用者。


隨著「倫敦升級計劃」臨近,ETH 再次聚集所有人的關注目光。


以太坊 2.0 到底是什麼?包含哪些升級?目前進展如何?


以太坊 2.0 到來,會對現有以太坊生態的去中心化應用產生哪些影響?


ETH 是否值得持續投資?看完相信你會有自己的判斷。


如果將搭建應用比作造房子,那麼以太坊就提供了牆面、屋頂、地板等模塊,用戶只需像搭積木一樣把房子搭起來,因此在以太坊上建立應用的成本和速度都大大改善。以太坊的出現,迅速吸引了大量開發者進入以太坊的世界編寫出各類去中心應用,極大豐富人們對去中心應用場景的需求。

以太坊應用開發模型示意


以太坊與ETH


現有市場的加密貨幣,只是在區塊鏈技術應用在某一場景下的單一代幣。


以太坊也不例外,它的完整項目名稱是「下一代智能合約與去中心化應用平台」,Ether(以太幣)是其原生加密貨幣,簡稱 ETH。


ETH 除了可以用來與各種類型數字資產之間進行有效交換,還提供支付交易費用的機制,即我們現在做鏈上操作時所支付的 GAS 費用。GAS 費用機制的出現,即保護了以太坊網路上創建的應用不會被惡意程序隨意濫用,又因為 GAS 收入歸礦工所有,讓更多的用戶參與到以太坊網路的記賬當中成為礦工,進一步維護了以太坊網路安全與生態發展。


與 BTC 不同的是,ETH 並沒有採用 SHA256 挖礦演算法,避免了整個挖礦生態出現由 ASIC(專用集成電路)礦機主導以至於大部分算力被中心化機構控制所帶來的系統性風險。


以太坊最初採用的是 PoW(Proof of Work)的工作量證明機制,人們需要通過工作量證明以獲取手續費回報。我們經常聽說礦工使用顯卡挖礦,他們做的就是 POW 工作量證明。顯卡越多,算力越大,那麼工作量就越大,收入也就越高。


當前,整個以太坊網路的總算力大約為 870.26 TH/s,用我們熟悉的消費級顯卡來對比,英偉達 RTX 3080 的顯卡算力大約為 92-93 MH/s,以太坊網路相當於 936 萬張 3080 顯卡算力的總和。


以太坊白皮書內非常明確提到之後會將 PoW 工作證明的賬本機制升級為 POS (Proof of Stake)權益證明的賬本機制。


ETH經濟模型


與 BTC 總量 2100 萬枚不同,ETH 的總量並沒有做上限,而是在首次預售的 ETH 數量基礎上每年增發,增發數量為 0.26x(x 為發售總量)。


但也不用擔心 ETH 會無限通脹下去,長期來看,每年增發幣的數量與每年因死亡或者粗心原因遺失幣的數量大致相同,ETH 的「貨幣供應增長率」是趨近於零的。


ETH 分配模型包含早期購買者,早期貢獻值,長期捐贈與礦工收益,具體分配比例如下表。

現在每年將有 60,102,216 * 0.26 = 15,626,576 個 ETH 被礦工挖出,轉成 PoS 後,每年產出的 ETH 將減少。


目前,市場上流通的 ETH 總量約為 116,898,848 枚,總市值約為 2759 億美元。


以太坊發展歷程


1. 邊境階段(2015年):上線後不久進行了第一次分叉,調整未來挖礦的難度。此版本處於實驗階段,技術並未成熟,最初只能讓少部分開發者參與挖礦,智能合約也僅面向開發者開發應用使用,並沒有用戶參與,以太坊網路處於萌芽期。


邊境階段 ETH 價格:1.24 美元。


2. 家園階段(2016年):以太坊主網於 2016 年 3 月進行了第二次分叉,發布了第一個穩定版本。此版本是第一個成熟的正式版本,採用 100% PoW 證明,引入難度炸彈,隨著區塊鏈數量的增加,挖礦難度呈指數增長,網路的性能大幅提升,以太坊項目也進入到快速成長期。在」家園「版本里,還發生了著名的」The DAO 攻擊事件「,以太坊被社區投票硬分叉為以太坊(ETH)與以太經典(ETC)兩條鏈,V 神站在了 ETH 這邊。


家園階段 ETH 價格:12.50 美元。


3. 都會階段(2017~2019年):都會的開發又分為三個階段,升級分成了三次分叉,分別是 2017 年 10 月的「拜占庭」、2019 年 2 月底的「君士坦丁堡「、以及 2019 年 12 月的「伊斯坦布爾」。這些升級主要改善智能合約的編寫、提高安全性、加入難度炸彈以及一些核心架構的修改,以協助未來從工作量證明轉至權益證明。


在都會階段,以太坊網路正式顯現出其威力,正式進入成熟期。智能合約讓不同鏈上的加密貨幣可以互相交易,ERC-20 也在 2017 代幣發行的標准,成千上萬個項目在以太坊網路進行募資,被稱作「首次代幣發行(ICO)」,相信很多幣圈的老人都是被當時 ICO 造富效應帶進來的。到 2019 年,隨著DeFi 生態的崛起,金融產品正式成為以太鏈上最大的產業。


都會階段 ETH 價格:151.06 美元。


4. 寧靜階段(2020-2023年):與都會分三階段開發相同,寧靜階段目前預計分成三次分叉:柏林(已完成)、倫敦(即將到來)、以及後面的第三次分叉。「寧靜」階段又稱為「以太坊 2.0」,是項目的最終階段,以太坊將從工作量證明方式正式轉向權益證明,並開發第二層擴容方案,提高整個網路的運行效率。


寧靜階段可以說是以太坊網路的集大成之作,如果說前個三階段只是讓以太坊的願景展現的實驗平台,寧靜階段之後的以太坊,將正式成為完全體,不僅有完備的生態應用,超級快的處理速度,眾多網路協同發展,而且 PoS 機制會非常節約能源,真正代表了區塊鏈技術逐漸走向成熟的標志。


寧靜階段 ETH 價格:2021 年 4 月 15 日完成的柏林階段,當天價格為 2454 美元。

即將到來的倫敦協議升級

以太坊生態


以太坊的生態發展,從屬性劃可分為兩大類:一是以太坊網路生態應用建設,二是以太坊網路擴容建設。兩者相互融合,互相成就,應用需要更健壯強大的網路作為承載,網路需要功能完善的應用場景服務用戶。


先說應用生態,以太坊的生態我們又可以分為以下幾大類:


1. 去中心化自製組織(DAO)生態


什麼是去中心化自製組織?還是以我們熟悉的比特幣舉例:比特幣目前市值七千多億美金,在全球資產市值類排名第九,但比特幣並不是某一公司發布的產品,也沒有特定公司組織招聘人員進行維護。比特幣現有的一切,都源於比特幣持有者、比特幣礦工自發形成的分布式組織,他們通過投票方式規劃比特幣發展路線,自發參與維護比特幣程序與網路 —這僅僅因為只要擁有比特幣,所有人都是比特幣網路建設中的受益者,一切維護都源於自身的利益關系。


比特幣的發明與成功運行,突破了由荷蘭人創建、至今流行 400 多年的公司商業架構,開創出一種全新的、無組織架構的、全球分布式的商業模式,這就是 DAO。


再說回以太坊,以太坊的 DAO 可以由智能合約編寫,用戶自定義應用場景。簡單說就是我們規定出程序執行條件與執行范圍,真實世界裡只要觸發設定好的條件,程序就會自動執行運行,且所有過程都會在以太坊的網路上進行去中心化公開驗證,不需要經過人工或者任何第三方組織機構確認。


以太坊 DAO 生態演化出許多商業場景,有慈善機構使用 DAO 建立公開透明的捐款與使用機制,有風投機構使用 DAO 建立公平分配的風險基金。


以太坊生態的很多項目都採用 DAO 自治,代表項目有:Uniswap,AAVE,MakerDAO,Compound,Decred,Dash 等。


2. 去中心化金融(DEFI)生態


在傳統商業世界裡,我們如果需要借錢、存錢,或者買某一公司股票,或者做企業貸款、融資,只要是進行金融活動,總離不開與銀行、證券機構、會計事務所這些金融機構打交道。


而在去中心的世界裡,區塊鏈本質就是集合所有人交易記錄且公開的大賬本,我們可以非常容易的追溯到每一個錢包地址發生過的每一筆交易,查詢到任意一個錢包地址的余額信息,從而對錢包地址里的資產做評估。


舉個例子:全世界個人貸款最貴的國家是印度,印度的年輕人房貸利率目前是 8.8%,最高曾經到過 20%;與此對應,全世界個人存款利率最低的國家是日本,日本政府為了鼓勵民眾消費,在很長一段時間里銀行存款利率是負值,日本人在銀行存款不僅沒有利息,還要給銀行交保管費。理論上,如果日本人將自己的存款借與印度人,雙方都能獲得利益最大化,但現實生活中這樣的場景很難發生。一是每個國家都有外匯管制,日本人的錢並不容易能給到印度人,二是印度人的信用如何日本人也不好評估,大家沒有統一標准,萬一借出去的錢無法歸還,不能沒了收益還要蒙受損失。


但在去中心的世界裡,這樣的事情就簡單的多。


如果印度人的錢包地址里有比特幣,我們就可以利用智能合約,印度人將自己的比特幣質押進去,根據比特幣當時的價格,系統自動給印度人一個授信額度,印度人就可以拿著這個額度去和日本人借款,並規定好還款的周期與利率。如果印度人違約,合約自動將印度人質押進去的比特幣扣除,優先保障日本的權利,這樣,日本人不用擔心安全問題放心享受收益,印度人也有了更多的款項做為流動資金。


這個例子就是去中心金融的簡單應用,實際上,這就是我們參與 DEFI 挖礦是質押理財的原理 —— 當然真正應用實現演算法與場景要復雜的多。


DEFI 根據場景不同,又可以分為很多賽道,比如穩定幣、預言機、AMM 交易所、衍生品、聚合器等等。


DEFI 代表項目有:Dai,Augur,Chainlink,WBTC,0x,Balance,Liquity 等。


3. 非同質化代幣(NFT)生態


世界名畫《蒙娜麗莎》,只有達·芬奇的原版可以展覽在法國盧浮宮博物館,哪怕現代的技術可以無比精細地復刻出來,仿品都不具備原版的收藏價值。


這就是 NFT 的應用場景。NFT是我們可以用來表示獨特物品所有權的代幣,它們讓我們將藝術品、收藏品甚至房地產等現實事物唯一代幣化。雖然文件(作品)本身是可以無限復制,但代表它們的代幣在鏈上可以被追蹤,並為買家提供所有權證明。


相比現實中實物版權、物權的雙重交割相比,NFT 只需要交割描述此物品的唯一代幣。NFT 作品往往存儲在如 IPFS 這樣的分布式存儲網路里,隨用隨取,永不丟失,加之交割簡單方便,很快吸引了大量玩家與投資者收藏轉賣,NFT 出現也給藝術家提供了全新的收入模式。


類似 DEFI 生態,NFT 生態根據應用場景不同也產生了不同賽道,目前比較火熱的賽道有 NFT 交易平台,NFT 游戲 平台,NFT 藝術品平台, NFT 與 DEFI 結合在一起的金融平台。


NFT 代表項目有:CryptoKitties,CryptoPunks,Meebits,Opensea,Rally,Axie Infinity,Enjin Coin,The Sandbox 等。


4. 標准代幣協議(ERC-20)生態


與 NFT 非同質化代幣所對應的,就是同質化代幣。比如我們使用的人民幣就是一種同質化代幣,我們可以用人民幣進行價值交換,即使序號不同也不影響其價值,如果面額相同,不同的鈔票序號對持有者來說沒有區別。


BTC,ETH 和所有我們熟知的加密貨幣,都屬於同質化代幣。同種類的一個比特幣和另一個比特幣沒有任何區別,規格相同,具有統一性。在交易中,只需關注代幣交接的數量即可,其價值可能會根據交換的時間間隔而改變,但其本質並沒有發生變化。


以太坊的 ERC-20 就是定義這種代幣的標准協議,任何人都可以使用 ERC-20 協議,通過幾行代碼,發布自己在以太坊網路上的加密貨幣。


現在,以太坊網路上運行的代幣種類有上百萬個,上邊提到的項目,大多也在以太坊網路中發布了自己的同質化代幣。


ERC-20 代表項目有:USDT,USDC,WBTC 等。


以太坊網路擴容性


我們先引入一個概念:區塊鏈的不可能三角,即無論何種方法,我們都無法同時達到可擴展、去中心化、安全,三者只能得其二。


這其實很好理解,如果我們要去中心化和安全,就需要更多有節點參與網路進行驗證,從而導致驗證人增多、網路效率降低,擴展性下降。網路性能建設就是在三者之間找到平衡點。


用數據舉例,目前比特幣可處理轉賬 7 筆 / 秒,以太坊是 25 筆 / 秒,而 VISA 平均為 4500 筆 / 秒,峰值則達每秒上萬筆。這種業務處理能力的差別,我們就可以簡單理解為是「吞吐量」的差距。而想要提高吞吐量,則需要擴展區塊鏈的業務處理能力,這就是所謂的擴展性。


根據優化方法不同,以太坊網路性能擴容方案可以分為:


1. Layer 1 鏈上擴展,所有交易都保留在以太坊上的擴展解決方案,具有更高的安全性。


鏈上擴展的本質還是改進以太坊主鏈本身,使整個系統擁有更高的拓展性與運行效率。一般的方法有兩種,要麼改變共識協議,比如 ETH 將從 PoW 轉變為 PoS;要麼使用分片技術,優化方法使網路具有更高效率。


2. Layer 2 鏈下擴展,在以太坊協議之上分層單獨做各場景解決方案,具有更好的擴展性。


鏈下擴展可以理解為把計算、交易等業務處理場景拿到以太坊主鏈之外計算,最後將計算好的結果傳回主鏈,主鏈只反映最終的結果而不用管過程,這樣,無論多麼復雜的應用都不會對主鏈產生影響。


我們並不需要明白具體技術實現,只需知道:相比 Layer 1 方案,Layer 2 方案網路不會干擾底層區塊鏈協議,可以替 Layer 1 承擔大部分計算工作,從而降低主網路的負擔提高網路業務處理效率,是目前公認比較好的擴容方案。


以太坊2.0


終於講到以太坊 2.0,回到主題。


通過回顧以太坊的發展 歷史 ,以太坊 2.0 並不是新項目,它只是以太坊開發進程的最後一個階段,它將由整個以太坊生態多個團隊協同完成,目標是使以太坊更具可擴展性、更安全和更可持續,最終成為主流並為全人類服務。


ETH2建設目標:


1. 更具可擴展性。每秒支持 1000 次交易,以使應用程序使用起來更快、更便宜。


2. 更安全。以太坊變得更加安全,以抵禦所有形式的攻擊。


3. 更可持續。提高網路性能的同時減少對能源的消耗,更好地保護環境。


最重要的變化,ETH2 將從 ETH1 使用的 PoW(Proof of Work)工作量證明機制升級為 POS (Proof of Stake)權益證明機制。不再以算力做為驗證方式,而是通過質押加密貨幣的數量做為驗證手段。礦工不需要顯卡也能挖礦,既節省了時間成本與電力成本,又提高了 ETH 的利用率,非常類似錢存在銀行獲得利息。


ETH2 主要使用的技術是分片分層技術實現整個網路擴容。


ETH2 升級將分為三個階段進行:


1. 階段0(正在進行):信標鏈的創建與合並。信標鏈是 ETH2 的主鏈,如同人類的大腦,是 ETH2 得以運行的基礎。


2. 階段1(預計2022年):分片鏈的創建與應用。當信標鏈與 ETH1 合並完成後,就進入分片鏈的開發階段。分片鏈可以理解為將 ETH2 主鏈的整塊數據按一定規則拆分存放,單獨建立新鏈處理,用來分擔主鏈上的數據壓力,目前規劃是建立 64 條分片鏈。


舉個例子,從北京到上海,原來的交通工具只有一條公路,所有的車輛都需要在上邊運行,就會非常擁擠;現在通過分片技術,多出來高鐵、飛機等交通方式,分流的車輛同時到達速度更快,這就是分片鏈起到的作用。

分片鏈與主鏈交互示意圖


3. 階段2(預計2023年):整個網路功能的融合。到了此階段,整個系統的功能全面開始融合,分片鏈的功能會更加強大,新的處理機制開始支持賬戶、智能合約、開發工具的創建,新的生態應用等。


此階段是以太坊網路的最終形態,網路性能得到全面提升,生態應用全面爆發。但要服務全人類,ETH2 每秒 1000 次的交易效率顯然還是遠遠不夠,以太坊也會為它的目標持續優化下去。


ETH2對於大家有什麼影響?


1. 對於以太坊生態開發者。ETH2 在部署應用的時候,是需要選擇應用在哪條分片網路進行部署,造成這種差異的原因是跨分片通信不同步,這就意味著開發者需要根據自己發展計劃做不同的組合。


2. 對與 ETH 持幣者。ETH2 與 ETH1 數據完全同步,代幣也不會有任何變化,你可以繼續使用現在的錢包地址繼續持有 ETH。


3. 對於礦工。雖然 PoW 與 PoS 還會並行一段時間,可以預計的 PoW 礦機的產出會越來越少,應該開始減少 PoW 礦機的投資,開始轉向 PoS 機制。


4. 對於用戶。ETH2 速度更快,交易手續費更低,網路體驗會非常好,唯一值得注意的是,由於 Dapp 部署在不同的分片網路上,可能需要手動選擇應用的網路選項。


ETH是否值得投資?


ETH 是除了 BTC 以外市場的風向標,明確了解 ETH2 非常有助於我們理解其他區塊鏈項目,理解二級市場。


簡單總結幾個點吧:


1. 通過以太坊的項目分析,我們可以清晰地看到:在比特幣之後,以太坊項目的發展史就是目前區塊鏈應用生態的發展史。無論 DEFI 生態,NFT 生態,DAO 生態還是代幣、合約、協議生態,其實在以太坊發布白皮書時已有預見,後來出現的項目,都是圍繞以太坊做驗證。


2. 以太坊的聯合創始人里,只有 V 神還在為以太坊事業做貢獻,但這並不影響以以太坊繁榮發展。以太坊初始團隊只是創建了它,後續的發展是社區、開發者、礦工與用戶共同建立的結果,現在的以太坊早已不是某一個人的思維,它是所有以太坊生態參與者共同的結晶,它屬於全人類。


3. 以太坊在過去的幾年一直沿著既定的開發軌跡發展,雖然中途一度出現過危機,以太坊「被死亡」了好幾百次,以太坊還是頑強的發展下來,並且擁有了繁榮生態。ETH2 還要兩三年時間才能落地,中間也充滿變數,比如其他的公鏈搶佔先機,但可以預見,ETH2 後的以太坊會更加健壯。


4. 不要在抱有任何 BTC 會死亡,區塊鏈行業會消失這樣的偽命題。BTC、ETH 讓我們看到了突破原有公司組織架構,一種全新無組織架構的商業模式存在,這種商業模式顯然更符合這個時代的發展需求,無論項目地發起團隊在不在,無論各國政府如何打壓,只要技術對人類有貢獻,就會由人員自發組織維護,區塊鏈技術是革命。


5. ETH2 的上線,短期看 PoW 獎勵與 PoS 獎勵並行,可能會讓 ETH 總通脹率短期內飆升,長期看 ETH 通脹率始終保持平衡。加上 ETH 本身的生態與應用場景,ETH是值得投資的,目前看不到有其他公鏈代替以太坊公鏈的可能性,ETH2 的上線,甚至會對其他公鏈造成「虹吸效應」,萬鏈歸一。

#比特幣[超話]# #數字貨幣#

F. 什麼是ZK-Rollup(零知識匯總)

ZK-Rollup(零知識匯總)基於zero-knowledge proof(零知識證明),在發往主鏈的交易包里包含了一個對應的零知識證明,主鏈上的rollup(匯總)智能合約只需驗證這個零知識證明。

這個零知識證明不會透露任何交易細節,但能通過與智能合約不斷交互,證明上鏈的所有數據的有效性和真實性。

優點:

l高度的去中心化

l隱私性好:零知識證明不會透露任何交易細節

l上鏈效率高:一次性提交多筆操作的結果,節約時間和gas fee

l驗證效率高:無需等待期,快速完成資產取出動作

l安全性極高:zk技術保證了提交給主鏈的數據真實有效,同時主鏈可隨時還原側鏈發生的交易細節(即擁有主鏈的數據可用性),因此擁有以太坊級別的安全性

缺點:

l技術開發難度大

l難兼容不同智能合約

l需要大量運算

代表項目:

l路印:成熟的zk技術運用,獲得4500萬美元私募,當前市值超8億美元

lZKSync:旨在為以太坊帶來 Visa 級別、每秒數千筆交易的吞吐量


鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。

G. 拜占庭問題與共識演算法

「拜占庭將軍問題」(Byzantine Generals Problem)是一個經典難題,這個難題是這樣描述的:拜占庭是東羅馬帝國的首都,它的軍隊分成多個師,每個師都由一個將軍統領。這些將軍通過信使進行交流,來達成一個共同作戰方案,有些將軍可能是叛徒,想故意破壞這個過程,這會造成那些忠誠的將軍也無法達成一個統一的作戰計劃。這個難題在於如何讓那些忠誠的將軍在這樣的情況下達成統一作戰方案,而避免那些叛徒對作戰方案的誤導。

在點對點、分布式的區塊鏈中,常常用拜占庭問題來比喻節點如何達成共識的問題。將軍即對應著一個個節點,達成統一作戰方案即達成共識,正確的打包與驗證區塊數據,防止惡意節點(叛徒將軍)破壞區塊鏈的運行。

顧名思義,就是能夠解決拜占庭問題,使各個節點達成共識,解決共識問題的各種機制也被稱為共識演算法。在各種各樣的共識演算法中,又一直存在一個「不可能三角」的難題,這三角是指「安全性」、「去中心化」和「速度」,也就是說難以同時保證速度、安全性和去中心化程度,三者之間往往會顧此失彼。

現在各種共識演算法算起來有好幾十種,計算機界也一直處於研究階段,並沒有說哪種演算法已經完美。
下面盤點一下講解pBET和POW兩種演算法,以及它們的「安全性」、「去中心化」和「速度」如何。

實用拜占庭容錯是一種較早的共識演算法。pBFT的一個原則,就是少數服從多數。節點通過在相互傳遞有關決策的消息,誰的決策贊同的人數多,就採用誰的。所以在這個系統中,安全性隨著誠實節點的數量而增加。誠實節點同意正確的決策,拒絕惡意節點的錯誤決策,只要惡意節點的數量少於總數的1/3,就能保證達成共識。

達成共識可以簡化為四步:

pBFT 使用投票機制以循環方式選舉領導節點。
領導者發起決策並將其廣播給輔助節點。
所有節點,包括領導節點和輔助節點,都發送響應。
當 ⅔ + 1 個節點發送相同的響應時,該響應被認為是有效的。

如果領導者有惡意行為,它可以被大多數節點刪除。

按少數服從多數的原則。那按理來說,只要惡意節點的數量少於1/2就夠了啊,那麼為什麼PBFT演算法的容錯數量要滿足惡意節點的數量少於總數的1/3呢?

因為 PBFT 演算法的除了需要支持容錯故障節點之外,還需要支持容錯作惡節點。假設集群節點數為 N,有問題的節點為 f。有問題的節點中,可以既是故障節點,也可以是作惡節點,或者只是故障節點或者只是作惡節點。那麼會產生以下兩種極端情況:

(1)這f 個有問題節點既是故障節點,又是作惡節點,那麼根據少數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,正確節點的數量就會比故障節點數量多,那麼集群就能達成共識,即總節點數為f+(f+1)=n,也就是說這種情況支持的最大容錯節點數量是 (n-1)/2。
(2)故障節點和作惡節點都是不同的節點。那麼就會有 f 個作惡節點和 f 個故障節點,當發現節點是作惡節點後,會被集群排除在外,剩下 f 個故障節點,那麼根據少數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。所以,所有類型的節點數量加起來就是 f+1 個正常節點,f個故障節點和f個作惡節點,即 3f+1=n。

結合上述兩種情況,因此PBFT演算法支持的最大容錯節點數量是(n-1)/3,即少於1/3。

pBFT的優缺點
pBFT 系統不需要高計算資源或大量能源來運行。pBFT 在節點少的時候可以快速達成共識,因為所有節點都在不斷地相互通信。一旦節點就決策達成一致,交易就完成了。

然而,pBFT的缺點也很明顯:頻繁的通信使它只能在節點數量有限的網路中正常工作。隨著每個新節點加入網路,通信開銷呈指數增長,響應所需的時間也隨之增加。

pBFT 網路也容易受到女巫(Sybil)攻擊,女巫就是惡意黑客製造的不同節點,黑客可以控制多個節點,使其超過1/3,那系統將無法達成正確的共識。

從不可能三角的角度來看,由此可見pBFT在節點少的時候速度快,但安全性差,去中心化低;節點多了又會導致速度很慢。

中本聰設計了POW共識機制來解決上面pBFT這個經典共識的可擴展性問題。

上面說到,pBFT通過不斷廣播然後計算節點的消息數,時間花費過長。POW是怎麼做的:我不要計算節點數是否超過2/3,我直接選一個節點,按它的決策,其他節點全部同步它的決策。這樣就省去在全節點通信然後計算節點數的費時操作。

那麼,對於哪個節點來打包區塊,那就很重要,萬一是惡意節點呢?必須對打包的節點進行要求,哪個節點有權力進行打包呢?那就是解決復雜的數學問題,俗稱挖kuang。節點必須花費大量算力和電費來爭取某次打包區塊的權力。這樣的成本就限制了黑客的女巫攻擊。

如果打包區塊的權力真的被黑客搶到了,那可能會有什麼問題?

(1)竊取冰糖橙
黑客能夠竊取屬於另一個用戶,不受她控制的地址里的冰糖橙嗎?答案是否定的。即使這一輪是由黑客打包區塊鏈上的下一個區塊,她也不可能竊取別人的比特幣。這么做的話,黑客需要發起一筆有效的交易來轉移比特幣到自己的地址。這就要求黑客偽造比特幣擁有者的簽名,然而如果數字簽名機制是安全的,她是無法辦到的。只要背後的密碼學基礎是牢靠的,她就無法輕易竊取比特幣。
(2)拒絕服務攻擊
讓我們來考慮另一種攻擊。假設黑客不喜歡叫鮑勃的某個用戶,黑客可以決定她不把鮑勃發起的任何交易放進她所提議的區塊里。換言之,她拒絕提供服務給鮑勃。盡管這是黑客可以開展的有效的攻擊,但幸好這不過是個小問題。如果鮑勃的交易沒有被放進黑客所打包的下一個區塊,鮑勃只要等到下一個誠實節點發起區塊的時候,他的交易記錄就會被放進這個區塊里。所以這其實也不算是一個有效的攻擊。

也就是說,黑客花費重大成本取得的打包,但並不能起到有效的攻擊。由於對惡意節點進行懲罰、對誠實節點進行獎勵這樣的機制下,共識就達成了。

盡管有所改進,POW也引入了其他問題。工作量證明需要所有節點解決復雜的數學問題,這會消耗大量的能源,就是大家所熟知的挖kuang耗費電力。並且解決復雜的數學問題的時間也要求不短,10分鍾左右。

從不可能三角的角度來看,POW去中心化高,安全性高,但速度還是慢,但至少已經不會像pBFT那樣由於節點多導致花費時間呈指數增長。

共識演算法各式各樣,冰糖橙的POW並不是真正去解決分布式共識問題,它不能完美的套用到其他場景。但它在貨幣系統的這個特定場景下解決了冰糖橙的共識問題。POW在冰糖橙里運行得非常好。

H. 拜占庭問題

拜占庭帝國即中世紀的土耳其,擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。

然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。

於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。

在拜占庭問題中,最重要的point就是: 所有將軍如何達成一致攻打拜占庭的共識 ,這當中,可能出現的情況舉例如下:

用一個模型解釋一下:

假設只有3個人,A、B、C,三人中如果其中一個是叛徒。當A發出進攻命令時,B如果是叛徒,他可能告訴C,他收到的是「撤退」的命令。這時C收到一個「進攻」,一個「撤退「,於是C被信息迷惑,而無所適從。

如果A是叛徒。他告訴B「進攻」,告訴C「撤退」。當C告訴B,他收到「撤退」命令時,B由於收到了司令「進攻」的命令,而無法與C保持一致。

正由於上述原因,在只有三個角色的系統中,只要有一個是叛徒,即叛徒數等於1/3,拜占庭問題便不可解。

可以看得出, 只要叛徒的數量大於或等於1/3,拜占庭問題不可解

從技術上理解, 拜占庭將軍問題是分布式系統容錯性問題 。加密貨幣建立在P2P網路之上,是典型的分布式系統,類比一下, 將軍就是P2P網路中的節點,信使就是節點之間的通信,進攻還是撤退的決定就是需要達成的共識 如果某台獨立的節點計算機拓機、掉線或攻擊網路搞破壞,整個系統就要停止運行,那這樣的系統將非常脆弱,所以容許部分節點出錯或搞破壞而不影響整個系統運行是必要的 這就需要演算法理論上的支撐,保證分布式系統在一定量的錯誤節點存在的情況下,仍然保持一致性和可用性

而且,拜占庭將軍與兩軍問題不同,前者假定信差沒有問題,只是將軍出現了叛變等問題;後者研究信差的通信問題。

終極解決方案到了——

如果 10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致

誰都可以發起進攻的信息,但由誰來發出呢?中本聰巧妙地在個系統加入了 發送信息的成本 ,即:

它加入的 成本就是」工作量「 —— 節點必須完成一個計算工作才能向各城邦傳播消息 ,當然,誰第一個完成工作,誰才能傳播消息。(這也是 工作量證明機制的意義:以檢驗結果的方式證明你過去所做過了多少工作

這種加密技術——非對稱加密,完全可以解決古代難以解決的簽名問題:

中本聰在設計比特幣時,它採用了一種工作量證明機制叫哈希現金,在一個交易塊這要找到一個隨機數,計算機只能用窮舉法來找到這個隨機數,可以說,能不能找到全靠運氣,所以對於各個節點來說,這個世界上,只有隨機才是真正的公平,實現隨機的最好辦法是使用數學,所有的將軍在尋找共識的過程,藉助了大家都認可的數學邏輯。

當然了, 憑什麼要義務進行計算工作,那麼肯定要有一個激勵機制 :比特幣的獎勵機制是每打包一個塊,目前是獎勵25個比特幣,而拜占庭將軍問題的獎勵機制可以是瓜分拜占庭獲得的利益。

在這個分布式網路里:

每個將軍都有一份實時與其他將軍同步的消息賬本
賬本里有每個將軍的簽名都是可以驗證身份的。 如果有哪些消息不一致,可以知道消息不一致的是哪些將軍
盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成(只要大多數是好人,那麼就可以實現共識)。

區塊鏈上的共識機制主要解決 由誰來構造區塊 ,以及 如何維護區塊鏈統一 的問題。

拜占庭容錯問題需要解決的也同樣是 誰來發起信息 ,如何 實現信息的統一同步 的問題。

註:區塊鏈學習新人,若有不正確的地方,望指出

I. 拜占庭容錯和PBFT共識演算法

實用的拜占庭容錯演算法
BFT 是區塊鏈共識演算法中,需要解決的一個核心問題。比特幣的POW,eos的dpos,以及共識演算法pos,這些公鏈演算法,解決的是共識節點眾多情況下的bft問題。

拜占庭將軍問題。也稱為拜占庭容錯。
用來描述分布式系統一致性問題。

背景如下:
拜占庭帝國想要進攻一個強大的敵人,為此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊。這10支軍隊在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊(一半以上)同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通信兵騎馬相互通信來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們才能保證有多於6支軍隊在同一時間一起發起進攻,從而贏取戰斗?

單從上面的說明可能無法理解這個問題的復雜性,我們來簡單分析一下:

先看在沒有叛徒情況下,假如一個將軍A提一個進攻提議(如:明日下午1點進攻,你願意加入嗎?)由通信兵通信分別告訴其他的將軍,如果幸運中的幸運,他收到了其他6位將軍以上的同意,發起進攻。如果不幸,其他的將軍也在此時發出不同的進攻提議(如:明日下午2點、3點進攻,你願意加入嗎?),由於時間上的差異,不同的將軍收到(並認可)的進攻提議可能是不一樣的,這是可能出現A提議有3個支持者,B提議有4個支持者,C提議有2個支持者等等。

再加一點復雜性,在有叛徒情況下,一個叛徒會向不同的將軍發出不同的進攻提議(通知A明日下午1點進攻, 通知B明日下午2點進攻等等),一個叛徒也會可能同意多個進攻提議(即同意下午1點進攻又同意下午2點進攻)。

叛徒發送前後不一致的進攻提議,被稱為「拜占庭錯誤」,而能夠處理拜占庭錯誤的這種容錯性稱為「Byzantine fault tolerance」,簡稱為BFT。

使用密碼學演算法保證節點之間的消息傳送是不可篡改的, 通過下面的演算法我們可以保證A將軍收到B將軍發來的消息確實是B將軍本人的真實請求

我們採用的是哈希函數(散列演算法)SHA256 -- 從數據(byte)值中創建獨一無二的hash值,並壓縮成摘要,將數據格式固定下來。通過這個摘要與個人私鑰生成Digital Signature 和個人公鑰Public-key certificate,接收方驗證簽名和摘要,如果是通過驗證,即證明摘要內容沒有經過篡改。

pbft容忍無效或者惡意節點數量 e 。為了保證整個系統可以正常運作,需要有2f+1個正常節點,系統的總結點數為 :3f+1。即pbft演算法容忍小於1/3的惡意或者無效節點。 原因見節點作惡的極端情況

pbft是一種狀態機副本復制演算法,所有副本在一個view輪換過程中操作,哪些是主節點(進攻的提議者的大將軍們,輪流當)通過view中其他節點(其他將軍)賦予的編號和節點數集合來確定,即:主節點p=v mod |R| 。 v:view編號,|R|節點個數,p:主節點編號。 關於狀態機復制演算法、view change的意義(主要是防止主節點作惡),主節點詳見論文。

基於拜占庭將軍問題,PBFT演算法一致性的確保主要分為這三個階段:預准備(pre-prepare)、准備(prepare)和確認(commit)。流程如下圖所示:

[圖片上傳失敗...(image-e3329d-1562488133052)]

首先解釋一下上面各個符號表達的意思:

下面結合上圖,詳細說一下PBFT的步驟:

根據上述流程,在 N ≥ 3F + 1 的情況下一致性是可能解決, N為總計算機數,F為有問題的計算機總數

下面所有的校驗流程略去對消息內容、簽名和身份的驗證,即已經保證了節點之間消息傳播是不可篡改的

上述演算法中,比較重要的一個點是view change,為了能恢復之前的請求,每一個副本節點收到消息之後或者發送消息的時候都會記錄消息到本地的log記錄中。當執行請求後,副本節點需要把之前該請求的記錄消息清除掉。最簡單的做法是在reply消息後,在執行一次當前狀態的共識同步,但是為了節省資源,一般在多條請求K後執行一次狀態同步。這個狀態同步就是checkpoint消息。

為了節省內存,系統需要一種將日誌中的 無異議消息記錄 刪除的機制。為了保證系統的安全性,副本節點在刪除自己的消息日誌前,需要確保至少 f+1 個正常副本節點執行了消息對應的請求,並且可以在視圖變更時向其他副本節點證明。另外,如果一些副本節點錯過部分消息,但是這些消息已經被所有正常副本節點刪除了,這就需要通過 傳輸部分或者全部服務狀態實現該副本節點的同步 。因此,副本節點同樣需要證明狀態的正確性。

在每一個操作執行後都生成這樣的證明是非常消耗資源的。因此,證明過程只有在請求序號可以被某個常數(比如100)整除的時候才會周期性地進行。我們將這些請求執行後得到的狀態稱作 檢查點(checkpoint) ,並且將具有證明的檢查點稱作 穩定檢查點(stable checkpoint)

上述情況是理想情況,實際上當副本節點i向其他節點發出checkpoint消息之後,其他節點還沒有完成K條請求的相互共識,所以不會立即對i的請求作出響應。其他節點會按照自己的處理步驟和順序,向前行進和共識。但是此時i發出的checkpoint沒有形成stable,為了防止i太快,超過自己太多,於是被便會設置一個高水位H=h+L,其中L就是我們指定允許的高度差,等於checkpoint周期處理數K的整數倍,可以設置為L=2K。當副本節點i處理請求超過高水位H時,副本節點即使接受到請求也會視為非法請求。等待stable checkpoint發生變化,再繼續向前推進處理。

如果主節點作惡,它可能會給不同的請求編上相同的序號,或者不去分配序號,或者讓相鄰請求的序號不連續。備份節點(備份主節點)應當有職責來主動檢查這些序號的合法性。如果主節點掉線或者作惡不廣播客戶端的請求,客戶端設置超時機制,超時的話,向所有副本節點廣播請求消息。副本節點檢測出主節點或者下線,發起view change流程。

我們在上面講到,當網路中有F台有問題的計算機時,至少需要3F+1台計算機才能保證一致性問題的解決,我們在這里討論一下原因。

我們可以考慮:由於有F個節點為故障或被攻擊的節點,故我們只能從N-F個節點中進行判斷。但是由於非同步傳輸,故當收到N-F個消息後,並不能確定後面是否有新的消息。(有可能是目前收到的N-F個節點的消息中存在被攻擊的節點發來的消息,而好的節點的消息由於非同步傳輸還沒有被收到。)

我們考慮最壞的情況,即剩下F個都是好的節點,收到的中有F個被攻擊的節點,故我們需要使得收到的中好節點的數量 (N-F)-F 大於被攻擊節點的數量 F ,於是有 N-2F>F ,即 N>3F ,所以N的最小整數為 N=3F+1

pbft是需要參與認證的節點進行的。所以一個完整的共識演算法包括DPOS+PBFT。其速度是可以達到1500tps左右的。

參考文獻:

https://mathpretty.com/9602.html

https://blog.csdn.net/jfkidear/article/details/81275974

Practical Byzantine Fault Tolerance

Miguel Castro and Barbara Liskov Laboratory for Computer Science, Massachusetts Institute of Technology, 545 Technology Square, Cambridge, MA 02139 castro,liskov @lcs .mit.e

https://www.jianshu.com/p/fb5edf031afd 部分論文翻譯

J. 五分鍾了解共識機制

五分鍾了解共識機制
什麼是共識機制?
「共識機制是區塊鏈的靈魂。」這是業內經常能聽到的一句話,共識機制在區塊鏈中的地位可想而知。那麼到底什麼是共識機制呢?我們不妨從拜占庭將軍問題說起。
拜占庭位於如今的土耳其的伊斯坦布爾,是東羅馬帝國的首都。由於當時拜占庭羅馬帝國國土遼闊,為了防禦目的,每個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳消息。在戰爭的時候,拜占庭軍隊內所有將軍和副官必須達成一致的共識,決定是否有贏的機會才去攻打敵人的陣營。但是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定又擾亂整體軍隊的秩序。在進行共識時,結果並不代表大多數人的意見。這時候,在已知有成員謀反的情況下,其餘忠誠的將軍在不受叛徒的影響下如何達成一致的協議,拜占庭問題就此形成。
拜占庭將軍問題是一個協議問題,拜占庭帝國軍隊的將軍們必須全體一致的決定是否攻擊某一支敵軍。問題是這些將軍在地理上是分隔開來的,並且將軍中存在叛徒。叛徒可以任意行動以達到以下目標:欺騙某些將軍採取進攻行動;促成一個不是所有將軍都同意的決定,如當將軍們不希望進攻時促成進攻行動;或者迷惑某些將軍,使他們無法做出決定。如果叛徒達到了這些目的之一,則任何攻擊行動的結果都是註定要失敗的,只有完全達成一致的努力才能獲得勝利。
而這個問題該如何解決?中本聰的理念給出了一個比較好的答案:不能讓所有人都有資格發信息,而是給發信息設置了一個條件:「工作量」,將軍們同時做一道計算題,誰先算完,誰才能獲得給其他小國發信息的資格。而其他小國在收到信息後,必須採用加密技術進行簽字蓋戳,以確認身份。然後再繼續做題,做對題的再繼續發消息……對這種先後順序達成共識的演算法,就是共識機制。
共識機制的作用
區塊鏈作為一種按時間順序存儲數據的數據結構,可支持不同的共識機制。在區塊鏈上,每個人都會有一份記錄鏈上所有交易的賬本,鏈上產生一筆新的交易時,每個人接收到這個信息的時間是不一樣的,有些想要干壞事的人就有可能在這時發布一些錯誤的信息,這時就需要一個人把所有人接收到的信息進行驗證,最後公布最正確的信息。
共識機制是區塊鏈技術的重要組件。它就像一本法典,維系著區塊鏈世界的正常運轉,使得區塊鏈技術自帶改善世界的光芒,也是讓區塊鏈得以被全世界逐步接受和認可的最大幕後功臣,它讓互聯網、陌生人之間,在沒有第三方作為信用背書的情況下發生的一切交易變成可能,它賦予了機械的代碼以人性和溫度。
共識機制的類別
目前的共識機制主要有POW、POS、DPOS、PBFT、dBFT、Pool驗證池。
POW,就是人們熟悉的比特幣挖礦,通過計算出一個滿足規則的隨機數,即獲得本次記賬權,發出本輪需要記錄的數據,全網其它節點驗證後一起存儲。可實現完全去中心化,節點自由進出。乾的越多,收的越多。
POS,權益證明,POW的一種升級共識機制,根據每個節點所佔代幣的比例和時間,以此等比例的挖礦難度,從而加快找隨機數的速度。持有越多,獲得越多
DPOS,股份授權證明機制,類似於董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。
PBFT ,Practical Byzantine Fault Tolerance,實用拜占庭容錯演算法,是一種狀態機副本復制演算法,即服務作為狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制,每個狀態機的副本都保存了服務的狀態,同時也實現了服務的操作。
dBFT,delegated BFT 授權拜占庭容錯演算法,由權益來選出記賬人,然後記賬人之間通過拜占庭容錯演算法來達成共識。
Pool驗證池,基於傳統的分布式一致性技術建立,並輔之以數據驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。Pool驗證池不需要依賴代幣就可以工作,在成熟的分布式一致性演算法(Pasox、Raft)基礎之上,可以實現秒級共識驗證,更適合有多方參與的多中心商業模式。
現有共識機制存在問題
目前現有的共識機制都不算完美,在一些實際應用場景弊端很多。
A、計算能力浪費
在工作量證明機制POW中,猜數字最快的通常是電腦計算能力強的。超強的計算能級僅用來猜數字,實在是浪費。
B、權益向頂層集中
在權益證明機制POS中,token的余額越多的人獲得公示信息的概率越高,公示人會得到一定的token作為獎勵,如此持有token多的人會越來越多,少的人越來越少。
C、作惡成本低下
在靠算力與權益的的多少來獲得公示信息的權利的模式當中,當算力和權益向少數人集中之後,這些少數人如果想要做一些違反規則的事情是輕而易舉的;在PBFT中,由所有人投票,如果一個沒有任何token余額的人想要搗亂,那他幾乎是完全沒有利益損失。
D、對於真正的去中心化構成威脅
在工作量證明機制中,計算能力越強,獲得記錄權利的概率就越高。如果有人把很多人集中在一起來猜數字,把好多電腦的算力加在一起來用,那這些抱團的人就會更容易獲得公示信息的權利,發展到最後可能公示權就直接掌握在這些人手裡。
在權益證明機制POS中,權益越大的人獲得記錄權利的概率越高,而記錄的人就會有獎勵token ,這樣一來這些人就會越來越富有,貧富差距就會越來越大。持有token少的人幾乎都沒有話語權了。權利掌握在少數人手中,這有違區塊鏈去中心化理念。

熱點內容
區塊鏈經融 發布:2025-02-28 12:14:48 瀏覽:441
開發比特幣系統難嗎 發布:2025-02-28 12:10:05 瀏覽:337
tp250btcpro 發布:2025-02-28 12:07:52 瀏覽:130
深圳區塊鏈科技服務有限公司 發布:2025-02-28 11:45:35 瀏覽:944
幣圈涼涼是什麼原因 發布:2025-02-28 11:15:40 瀏覽:570
usdt哪個公司發行的 發布:2025-02-28 11:13:35 瀏覽:384
去疾控中心抽血會不會被傳染 發布:2025-02-28 11:08:23 瀏覽:507
龍華區塊鏈政策 發布:2025-02-28 10:40:38 瀏覽:437
比特幣的數學問題是什麼 發布:2025-02-28 10:36:09 瀏覽:451
隧道開挖礦山法 發布:2025-02-28 10:35:27 瀏覽:817