區塊鏈賬本一致
『壹』 區塊鏈的共識機制
一、區塊鏈共識機制的目標
區塊鏈是什麼?簡單而言,區塊鏈是一種去中心化的資料庫,或可以叫作分布式賬本(distributed ledger)。傳統上所有的資料庫都是中心化的,例如一間銀行的賬本就儲存在銀行的中心伺服器里。中心化資料庫的弊端是數據的安全及正確性全系於資料庫運營方(即銀行),因為任何能夠訪問中心化資料庫的人(如銀行職員或黑客)都可以破壞或修改其中的數據。
而區塊鏈技術則容許資料庫存放在全球成千上萬的電腦上,每個人的賬本通過點對點網路進行同步,網路中任何用戶一旦增加一筆交易,交易信息將通過網路通知其他用戶驗證,記錄到各自的賬本中。區塊鏈之所以得其名是因為它是由一個個包含交易信息的區塊(block)從後向前有序鏈接起來的數據結構。
很多人對區塊鏈的疑問是,如果每一個用戶都擁有一個獨立的賬本,那麼是否意味著可以在自己的賬本上添加任意的交易信息,而成千上萬個賬本又如何保證記賬的一致性? 解決記賬一致性問題正是區塊鏈共識機制的目標 。區塊鏈共識機制旨在保證分布式系統里所有節點中的數據完全相同並且能夠對某個提案(proposal)(例如是一項交易紀錄)達成一致。然而分布式系統由於引入了多個節點,所以系統中會出現各種非常復雜的情況;隨著節點數量的增加,節點失效或故障、節點之間的網路通信受到干擾甚至阻斷等就變成了常見的問題,解決分布式系統中的各種邊界條件和意外情況也增加了解決分布式一致性問題的難度。
區塊鏈又可分為三種:
公有鏈:全世界任何人都可以隨時進入系統中讀取數據、發送可確認交易、競爭記賬的區塊鏈。公有鏈通常被認為是「完全去中心化「的,因為沒有任何人或機構可以控制或篡改其中數據的讀寫。公有鏈一般會通過代幣機制鼓勵參與者競爭記賬,來確保數據的安全性。
聯盟鏈:聯盟鏈是指有若干個機構共同參與管理的區塊鏈。每個機構都運行著一個或多個節點,其中的數據只允許系統內不同的機構進行讀寫和發送交易,並且共同來記錄交易數據。這類區塊鏈被認為是「部分去中心化」。
私有鏈:指其寫入許可權是由某個組織和機構控制的區塊鏈。參與節點的資格會被嚴格的限制,由於參與的節點是有限和可控的,因此私有鏈往往可以有極快的交易速度、更好的隱私保護、更低的交易成本、不容易被惡意攻擊、並且能夠做到身份認證等金融行業必須的要求。相比中心化資料庫,私有鏈能夠防止機構內單節點故意隱瞞或篡改數據。即使發生錯誤,也能夠迅速發現來源,因此許多大型金融機構在目前更加傾向於使用私有鏈技術。
二、區塊鏈共識機制的分類
解決分布式一致性問題的難度催生了數種共識機制,它們各有其優缺點,亦適用於不同的環境及問題。被眾人常識的共識機制有:
l PoW(Proof of Work)工作量證明機制
l PoS(Proof of Stake)股權/權益證明機制
l DPoS(Delegated Proof of Stake)股份授權證明機制
l PBFT(Practical Byzantine Fault Tolerance)實用拜占庭容錯演算法
l DBFT(Delegated Byzantine Fault Tolerance)授權拜占庭容錯演算法
l SCP (Stellar Consensus Protocol ) 恆星共識協議
l RPCA(Ripple Protocol Consensus Algorithm)Ripple共識演算法
l Pool驗證池共識機制
(一)PoW(Proof of Work)工作量證明機制
1. 基本介紹
在該機制中,網路上的每一個節點都在使用SHA256哈希函數(hash function) 運算一個不斷變化的區塊頭的哈希值 (hash sum)。 共識要求算出的值必須等於或小於某個給定的值。 在分布式網路中,所有的參與者都需要使用不同的隨機數來持續計算該哈希值,直至達到目標為止。當一個節點的算出確切的值,其他所有的節點必須相互確認該值的正確性。之後新區塊中的交易將被驗證以防欺詐。
在比特幣中,以上運算哈希值的節點被稱作「礦工」,而PoW的過程被稱為「挖礦」。挖礦是一個耗時的過程,所以也提出了相應的激勵機制(例如向礦工授予一小部分比特幣)。PoW的優點是完全的去中心化,其缺點是消耗大量算力造成了的資源浪費,達成共識的周期也比較長,共識效率低下,因此其不是很適合商業使用。
2. 加密貨幣的應用實例
比特幣(Bitcoin) 及萊特幣(Litecoin)。以太坊(Ethereum) 的前三個階段(Frontier前沿、Homestead家園、Metropolis大都會)皆採用PoW機制,其第四個階段 (Serenity寧靜) 將採用權益證明機制。PoW適用於公有鏈。
PoW機制雖然已經成功證明了其長期穩定和相對公平,但在現有框架下,採用PoW的「挖礦」形式,將消耗大量的能源。其消耗的能源只是不停的去做SHA256的運算來保證工作量公平,並沒有其他的存在意義。而目前BTC所能達到的交易效率為約5TPS(5筆/秒),以太坊目前受到單區塊GAS總額的上限,所能達到的交易頻率大約是25TPS,與平均千次每秒、峰值能達到萬次每秒處理效率的VISA和MASTERCARD相差甚遠。
3. 簡圖理解模式
(ps:其中A、B、C、D計算哈希值的過程即為「挖礦」,為了犒勞時間成本的付出,機制會以一定數量的比特幣作為激勵。)
(Ps:PoS模式下,你的「挖礦」收益正比於你的幣齡(幣的數量*天數),而與電腦的計算性能無關。我們可以認為任何具有概率性事件的累計都是工作量證明,如淘金。假設礦石含金量為p% 質量, 當你得到一定量黃金時,我們可以認為你一定挖掘了1/p 質量的礦石。而且得到的黃金數量越多,這個證明越可靠。)
(二)PoS(Proof of Stake)股權/權益證明機制
1.基本介紹
PoS要求人們證明貨幣數量的所有權,其相信擁有貨幣數量多的人攻擊網路的可能性低。基於賬戶余額的選擇是非常不公平的,因為單一最富有的人勢必在網路中佔主導地位,所以提出了許多解決方案。
在股權證明機制中,每當創建一個區塊時,礦工需要創建一個稱為「幣權」的交易,這個交易會按照一定比例預先將一些幣發給礦工。然後股權證明機制根據每個節點持有代幣的比例和時間(幣齡), 依據演算法等比例地降低節點的挖礦難度,以加快節點尋找隨機數的速度,縮短達成共識所需的時間。
與PoW相比,PoS可以節省更多的能源,更有效率。但是由於挖礦成本接近於0,因此可能會遭受攻擊。且PoS在本質上仍然需要網路中的節點進行挖礦運算,所以它同樣難以應用於商業領域。
2.數字貨幣的應用實例
PoS機制下較為成熟的數字貨幣是點點幣(Peercoin)和未來幣(NXT),相比於PoW,PoS機制節省了能源,引入了" 幣天 "這個概念來參與隨機運算。PoS機制能夠讓更多的持幣人參與到記賬這個工作中去,而不需要額外購買設備(礦機、顯卡等)。每個單位代幣的運算能力與其持有的時間長成正相關,即持有人持有的代幣數量越多、時間越長,其所能簽署、生產下一個區塊的概率越大。一旦其簽署了下一個區塊,持幣人持有的幣天即清零,重新進入新的循環。
PoS適用於公有鏈。
3.區塊簽署人的產生方式
在PoS機制下,因為區塊的簽署人由隨機產生,則一些持幣人會長期、大額持有代幣以獲得更大概率地產生區塊,盡可能多的去清零他的"幣天"。因此整個網路中的流通代幣會減少,從而不利於代幣在鏈上的流通,價格也更容易受到波動。由於可能會存在少量大戶持有整個網路中大多數代幣的情況,整個網路有可能會隨著運行時間的增長而越來越趨向於中心化。相對於PoW而言,PoS機制下作惡的成本很低,因此對於分叉或是雙重支付的攻擊,需要更多的機制來保證共識。穩定情況下,每秒大約能產生12筆交易,但因為網路延遲及共識問題,需要約60秒才能完整廣播共識區塊。長期來看,生成區塊(即清零"幣天")的速度遠低於網路傳播和廣播的速度,因此在PoS機制下需要對生成區塊進行"限速",來保證主網的穩定運行。
4.簡圖理解模式
(PS:擁有越多「股份」權益的人越容易獲取賬權。是指獲得多少貨幣,取決於你挖礦貢獻的工作量,電腦性能越好,分給你的礦就會越多。)
(在純POS體系中,如NXT,沒有挖礦過程,初始的股權分配已經固定,之後只是股權在交易者之中流轉,非常類似於現實世界的股票。)
(三)DPoS(Delegated Proof of Stake)股份授權證明機制
1.基本介紹
由於PoS的種種弊端,由此比特股首創的權益代表證明機制 DPoS(Delegated Proof of Stake)應運而生。DPoS 機制中的核心的要素是選舉,每個系統原生代幣的持有者在區塊鏈裡面都可以參與選舉,所持有的代幣余額即為投票權重。通過投票,股東可以選舉出理事會成員,也可以就關系平台發展方向的議題表明態度,這一切構成了社區自治的基礎。股東除了自己投票參與選舉外,還可以通過將自己的選舉票數授權給自己信任的其它賬戶來代表自己投票。
具體來說, DPoS由比特股(Bitshares)項目組發明。股權擁有著選舉他們的代表來進行區塊的生成和驗證。DPoS類似於現代企業董事會制度,比特股系統將代幣持有者稱為股東,由股東投票選出101名代表, 然後由這些代表負責生成和驗證區塊。 持幣者若想稱為一名代表,需先用自己的公鑰去區塊鏈注冊,獲得一個長度為32位的特有身份標識符,股東可以對這個標識符以交易的形式進行投票,得票數前101位被選為代表。
代表們輪流產生區塊,收益(交易手續費)平分。DPoS的優點在於大幅減少了參與區塊驗證和記賬的節點數量,從而縮短了共識驗證所需要的時間,大幅提高了交易效率。從某種角度來說,DPoS可以理解為多中心系統,兼具去中心化和中心化優勢。優點:大幅縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證。缺點:投票積極性不高,絕大部分代幣持有者未參與投票;另整個共識機制還是依賴於代幣,很多商業應用是不需要代幣存在的。
DPoS機制要求在產生下一個區塊之前,必須驗證上一個區塊已經被受信任節點所簽署。相比於PoS的" 全民挖礦 ",DPoS則是利用類似" 代表大會 "的制度來直接選取可信任節點,由這些可信任節點(即見證人)來代替其他持幣人行使權力,見證人節點要求長期在線,從而解決了因為PoS簽署區塊人不是經常在線而可能導致的產塊延誤等一系列問題。 DPoS機制通常能達到萬次每秒的交易速度,在網路延遲低的情況下可以達到十萬秒級別,非常適合企業級的應用。 因為公信寶數據交易所對於數據交易頻率要求高,更要求長期穩定性,因此DPoS是非常不錯的選擇。
2. 股份授權證明機制下的機構與系統
理事會是區塊鏈網路的權力機構,理事會的人選由系統股東(即持幣人)選舉產生,理事會成員有權發起議案和對議案進行投票表決。
理事會的重要職責之一是根據需要調整系統的可變參數,這些參數包括:
l 費用相關:各種交易類型的費率。
l 授權相關:對接入網路的第三方平台收費及補貼相關參數。
l 區塊生產相關:區塊生產間隔時間,區塊獎勵。
l 身份審核相關:審核驗證異常機構賬戶的信息情況。
l 同時,關繫到理事會利益的事項將不通過理事會設定。
在Finchain系統中,見證人負責收集網路運行時廣播出來的各種交易並打包到區塊中,其工作類似於比特幣網路中的礦工,在採用 PoW(工作量證明)的比特幣網路中,由一種獲獎概率取決於哈希算力的抽彩票方式來決定哪個礦工節點產生下一個區塊。而在採用 DPoS 機制的金融鏈網路中,通過理事會投票決定見證人的數量,由持幣人投票來決定見證人人選。入選的活躍見證人按順序打包交易並生產區塊,在每一輪區塊生產之後,見證人會在隨機洗牌決定新的順序後進入下一輪的區塊生產。
3. DPoS的應用實例
比特股(bitshares) 採用DPoS。DPoS主要適用於聯盟鏈。
4.簡圖理解模式
(四)PBFT(Practical Byzantine Fault Tolerance)實用拜占庭容錯演算法
1. 基本介紹
PBFT是一種基於嚴格數學證明的演算法,需要經過三個階段的信息交互和局部共識來達成最終的一致輸出。三個階段分別為預備 (pre-prepare)、准備 (prepare)、落實 (commit)。PBFT演算法證明系統中只要有2/3比例以上的正常節點,就能保證最終一定可以輸出一致的共識結果。換言之,在使用PBFT演算法的系統中,至多可以容忍不超過系統全部節點數量1/3的失效節點 (包括有意誤導、故意破壞系統、超時、重復發送消息、偽造簽名等的節點,又稱為」拜占庭」節點)。
2. PBFT的應用實例
著名聯盟鏈Hyperledger Fabric v0.6採用的是PBFT,v1.0又推出PBFT的改進版本SBFT。PBFT主要適用於私有鏈和聯盟鏈。
3. 簡圖理解模式
上圖顯示了一個簡化的PBFT的協議通信模式,其中C為客戶端,0 – 3表示服務節點,其中0為主節點,3為故障節點。整個協議的基本過程如下:
(1) 客戶端發送請求,激活主節點的服務操作;
(2) 當主節點接收請求後,啟動三階段的協議以向各從節點廣播請求;
(a) 序號分配階段,主節點給請求賦值一個序號n,廣播序號分配消息和客戶端的請求消息m,並將構造pre-prepare消息給各從節點;
(b) 交互階段,從節點接收pre-prepare消息,向其他服務節點廣播prepare消息;
(c) 序號確認階段,各節點對視圖內的請求和次序進行驗證後,廣播commit消息,執行收到的客戶端的請求並給客戶端響應。
(3) 客戶端等待來自不同節點的響應,若有m+1個響應相同,則該響應即為運算的結果;
(五)DBFT(Delegated Byzantine Fault Tolerance)授權拜占庭容錯演算法
1. 基本介紹
DBFT建基於PBFT的基礎上,在這個機制當中,存在兩種參與者,一種是專業記賬的「超級節點」,一種是系統當中不參與記賬的普通用戶。普通用戶基於持有權益的比例來投票選出超級節點,當需要通過一項共識(記賬)時,在這些超級節點中隨機推選出一名發言人擬定方案,然後由其他超級節點根據拜占庭容錯演算法(見上文),即少數服從多數的原則進行表態。如果超過2/3的超級節點表示同意發言人方案,則共識達成。這個提案就成為最終發布的區塊,並且該區塊是不可逆的,所有裡面的交易都是百分之百確認的。如果在一定時間內還未達成一致的提案,或者發現有非法交易的話,可以由其他超級節點重新發起提案,重復投票過程,直至達成共識。
2. DBFT的應用實例
國內加密貨幣及區塊鏈平台NEO是 DBFT演算法的研發者及採用者。
3. 簡圖理解模式
假設系統中只有四個由普通用戶投票選出的超級節點,當需要通過一項共識時,系統就會從代表中隨機選出一名發言人擬定方案。發言人會將擬好的方案交給每位代表,每位代表先判斷發言人的計算結果與它們自身紀錄的是否一致,再與其它代表商討驗證計算結果是否正確。如果2/3的代表一致表示發言人方案的計算結果是正確的,那麼方案就此通過。
如果只有不到2/3的代表達成共識,將隨機選出一名新的發言人,再重復上述流程。這個體系旨在保護系統不受無法行使職能的領袖影響。
上圖假設全體節點都是誠實的,達成100%共識,將對方案A(區塊)進行驗證。
鑒於發言人是隨機選出的一名代表,因此他可能會不誠實或出現故障。上圖假設發言人給3名代表中的2名發送了惡意信息(方案B),同時給1名代表發送了正確信息(方案A)。
在這種情況下該惡意信息(方案B)無法通過。中間與右邊的代表自身的計算結果與發言人發送的不一致,因此就不能驗證發言人擬定的方案,導致2人拒絕通過方案。左邊的代表因接收了正確信息,與自身的計算結果相符,因此能確認方案,繼而成功完成1次驗證。但本方案仍無法通過,因為不足2/3的代表達成共識。接著將隨機選出一名新發言人,重新開始共識流程。
上圖假設發言人是誠實的,但其中1名代表出現了異常;右邊的代表向其他代表發送了不正確的信息(B)。
在這種情況下發言人擬定的正確信息(A)依然可以獲得驗證,因為左邊與中間誠實的代表都可以驗證由誠實的發言人擬定的方案,達成2/3的共識。代表也可以判斷到底是發言人向右邊的節點說謊還是右邊的節點不誠實。
(六)SCP (Stellar Consensus Protocol ) 恆星共識協議
1. 基本介紹
SCP 是 Stellar (一種基於互聯網的去中心化全球支付協議) 研發及使用的共識演算法,其建基於聯邦拜占庭協議 (Federated Byzantine Agreement) 。傳統的非聯邦拜占庭協議(如上文的PBFT和DBFT)雖然確保可以通過分布式的方法達成共識,並達到拜占庭容錯 (至多可以容忍不超過系統全部節點數量1/3的失效節點),它是一個中心化的系統 — 網路中節點的數量和身份必須提前知曉且驗證過。而聯邦拜占庭協議的不同之處在於它能夠去中心化的同時,又可以做到拜占庭容錯。
[…]
(七)RPCA(Ripple Protocol Consensus Algorithm)Ripple共識演算法
1. 基本介紹
RPCA是Ripple(一種基於互聯網的開源支付協議,可以實現去中心化的貨幣兌換、支付與清算功能)研發及使用的共識演算法。在 Ripple 的網路中,交易由客戶端(應用)發起,經過追蹤節點(tracking node)或驗證節點(validating node)把交易廣播到整個網路中。追蹤節點的主要功能是分發交易信息以及響應客戶端的賬本請求。驗證節點除包含追蹤節點的所有功能外,還能夠通過共識協議,在賬本中增加新的賬本實例數據。
Ripple 的共識達成發生在驗證節點之間,每個驗證節點都預先配置了一份可信任節點名單,稱為 UNL(Unique Node List)。在名單上的節點可對交易達成進行投票。共識過程如下:
(1) 每個驗證節點會不斷收到從網路發送過來的交易,通過與本地賬本數據驗證後,不合法的交易直接丟棄,合法的交易將匯總成交易候選集(candidate set)。交易候選集裡面還包括之前共識過程無法確認而遺留下來的交易。
(2) 每個驗證節點把自己的交易候選集作為提案發送給其他驗證節點。
(3) 驗證節點在收到其他節點發來的提案後,如果不是來自UNL上的節點,則忽略該提案;如果是來自UNL上的節點,就會對比提案中的交易和本地的交易候選集,如果有相同的交易,該交易就獲得一票。在一定時間內,當交易獲得超過50%的票數時,則該交易進入下一輪。沒有超過50%的交易,將留待下一次共識過程去確認。
(4) 驗證節點把超過50%票數的交易作為提案發給其他節點,同時提高所需票數的閾值到60%,重復步驟(3)、步驟(4),直到閾值達到80%。
(5) 驗證節點把經過80%UNL節點確認的交易正式寫入本地的賬本數據中,稱為最後關閉賬本(last closed ledger),即賬本最後(最新)的狀態。
在Ripple的共識演算法中,參與投票節點的身份是事先知道的,因此,演算法的效率比PoW等匿名共識演算法要高效,交易的確認時間只需幾秒鍾。這點也決定了該共識演算法只適合於聯盟鏈或私有鏈。Ripple共識演算法的拜占庭容錯(BFT)能力為(n-1)/5,即可以容忍整個網路中20%的節點出現拜占庭錯誤而不影響正確的共識。
2. 簡圖理解模式
共識過程節點交互示意圖:
共識演算法流程:
(八)POOL驗證池共識機制
Pool驗證池共識機制是基於傳統的分布式一致性演算法(Paxos和Raft)的基礎上開發的機制。Paxos演算法是1990年提出的一種基於消息傳遞且具有高度容錯特性的一致性演算法。過去, Paxos一直是分布式協議的標准,但是Paxos難於理解,更難以實現。Raft則是在2013年發布的一個比Paxos簡單又能實現Paxos所解決問題的一致性演算法。Paxos和Raft達成共識的過程皆如同選舉一樣,參選者需要說服大多數選民(伺服器)投票給他,一旦選定後就跟隨其操作。Paxos和Raft的區別在於選舉的具體過程不同。而Pool驗證池共識機制即是在這兩種成熟的分布式一致性演算法的基礎上,輔之以數據驗證的機制。
『貳』 區塊鏈共識機制之一:POW工作量證明機制
區塊鏈可以理解為一個不可篡改的公共賬本,所有參與者都能驗證交易並進行記賬,即為分布式賬本。那到底由誰來記賬?又如何保證賬本的一致性、准確性呢?也就是區塊鏈的共識機制是如何的?
區塊鏈的共識機制就是解決由誰來記賬(構造區塊),以及如何維護區塊鏈的一致性問題。目前區塊鏈項目採用的共識機制有多種,如:POW工作量證明機制,POS權益證明機制,DPOS股份授權證明機制等等。本文說明POW工作量證明機制。
區塊鏈的第一個成功應用比特幣系統採用的POW工作量證明機制。即以比特幣系統為例說明POW機制,首先比特幣系統有一套激勵機制讓所有參與者競爭記賬的權利,即誰擁有記賬權誰將獲取構造新區塊的比特幣獎勵(目前獎勵為12.5比特幣),同時獲取新區塊內所有交易的手續費作為獎勵。
參與者如何競爭記賬權利呢?參與者通過自己的算力計算一道數學難題,誰先計算的結果,誰就擁有了記賬的權利,也就可獲得構造新區塊的獎勵。這道數學難題就是尋找一個隨機數Nonce,使得對區塊頭的哈希計算的結果小於目標值,Nonce本身是區塊頭中的一個欄位,所以通過不斷的嘗試Nonce的值,以滿足區塊頭的哈希計算結果小於目標值。通過動態調整目標值,即可調整計算的Nonce值的難度。
關於哈希計算Nonce的過程通常類比為擲篩子游戲,基於參與游戲的篩子的個數通過調整擲得篩子的點數可調整游戲的難度。例如:100個人參與擲篩子,總共有100個篩子,要求擲得點數為100為贏,則100個人誰先擲得點數100即為勝利者,即擁有了記賬權。如果發現大家擲出100點的時間太快,則可增加難度,要求擲得點數為80為贏。如果又有100個人參與游戲,則游戲中增加了篩子數,如:篩子數增加為200個,同樣通過設置擲得點數來調整游戲的難度。
篩子類似於比特幣網路的算力,擲得點數類似於比特幣網路可動態調整的目標值。
區塊鏈以最長的鏈條視為正確的鏈條,如果存在同時出現兩個區塊,會暫時並行記錄兩個區塊,後續再生成的區塊基於其中的某一個區塊,將會形成的最長的鏈條作為一致性的鏈條,另外一個區塊將會被丟棄,比特幣是基於6個區塊的確認,所以被丟棄的區塊將不會獲得比特幣系統的獎勵,也就是白白將競爭記賬權的算力(電費)浪費了。基於工作量的激勵,參與者必然盡最大能力構造正確的區塊,也就是滿足區塊鏈的一致性。即全網的所有用戶可以達成唯一的一致性的公共賬本。
目前比特幣系統全網算力已達到驚人的24.75EH/s,其中1E=1000P,1P=1000T,1T=1000G,1G=1000M,1M=1000K,1K=1000,H/s為每秒一次哈希計算(哈希碰撞),也就是每秒進行24.75E次哈希計算,且仍有持續的算力加入比特幣系統。比特幣記賬權的競爭,提供算力的硬體從CPU,GPU,專業礦機,礦池。目前單機版的專業礦機已無法競爭到記賬權,必須由多台礦機組合為礦池才能競爭到記賬權。
『叄』 區塊鏈中的數據存儲通過什麼完成超級伺服器可信第三方
你好,區塊鏈中的數據存儲通過什麼完成超級伺服器可信第三方?區塊鏈的主要角色是扮演 可信第三方,如搭建基於區塊鏈的交易中心、數據中心等。 現有中心化方式建立一套公共資料庫或者說建立多個企業資料庫的連接,呈現出費用高、低效率、安全性低等缺陷。通常需要找到一個具有公信力的社會組織、權威的政府部門、或者是被認可的第三方行業的領軍企業,來建立一個中心化的資料庫,通過互動服務來完成數據的存儲、交換和共享。在這種場景下,每個企業自己也有自己相關聯的資料庫系統,不同資料庫之間的一致性、同步性需要與擁有共享資料庫的第三方反復確認核驗,甚至人工驗證,導致共享數據的產生與復用的流程比較復雜和低效。另外,由於所有數據放在所謂權威的第三方,自然就存在外部攻擊、內部員工竊取數據的風險,而一旦這個權威的中心伺服器癱瘓就會導致所有與之相連的外部業務中斷。這實際上是目前互聯網服務商特別是巨頭目前面臨的潛在挑戰,同時也是一顆定時炸彈。而區塊鏈的核心能力是提供一致的賬套,利用區塊鏈技術替代這個第三方互聯網服務巨頭的角色,讓多家企業使用同一套記賬系統,記錄同一個賬本, 鑒於區塊鏈資料庫的一致性、歷史的不可篡改,可以簡化和變革業務流程,保護數據完整性,提高業務的運營質量與管理效率。並且某一個節點癱瘓時,也不會造成整個業務的中斷。請參考!
『肆』 區塊鏈最直白的解釋
近幾年,「區塊鏈」一詞成了大熱門,新聞媒體競相報道,但大家或許對於區塊鏈的認知還停留在霧里看花的階段,今天我們就來揭開它的神秘面紗。
其實區塊鏈的本質特別簡單,一句話就可以解釋:去中心化分布式資料庫。
區塊鏈的主要作用是用於存儲信息,任何人都可以將信息寫入,同時也可以讀取,所以它是一個公開的資料庫。
區塊鏈的特點
要說分布式資料庫這種技術,市場上早有存在,可不同的是,區塊鏈雖然同為分布式資料庫,但它沒有管理員,是徹底去中心化的。
去中心化是區塊鏈技術的顛覆性特點,它無需中心化代理,實現了一種點對點的直接交互,使得高效率、大規模、無中心化代理的信息交互方式成為了現實。
但是,沒有了管理員,人人都可以往裡面寫入數據,怎麼才能保證數據是可信的呢?被壞人改了怎麼辦?設計者早已想到了這些,這也證明了區塊鏈是真正劃時代的產物。
區塊
區塊鏈由一個個區塊(block)組成。區塊很像資料庫的記錄,每次寫入數據,就是創建一個區塊。
每個區塊包含兩個部分:
區塊頭(Head):記錄當前區塊的特徵值
區塊體(Body):實際數據
區塊頭包含了當前區塊的多項特徵值。
生成時間
實際數據(即區塊體)的哈希
上一個區塊的哈希
...
系統中每一個節點都擁有最新的完整資料庫拷貝,修改單個節點的資料庫是無效的,因為系統會自動比較,認為最多次出現的相同數據記錄為真。同時數據的每一步記錄都會被留存在區塊鏈上,可以溯源每一步的往來信息。
這里,你需要理解什麼叫哈希(hash),這是理解區塊鏈必需的。
所謂"哈希"就是計算機可以對任意內容,計算出一個長度相同的特徵值。區塊鏈的 哈希長度是256位,這就是說,不管原始內容是什麼,最後都會計算出一個256位的二進制數字。而且可以保證,只要原始內容不同,對應的哈希一定是不同的。
舉例來說,字元串123的哈希是(十六進制),轉成二進制就是256位,而且只有123能得到這個哈希。(理論上,其他字元串也有可能得到這個哈希,但是概率極低,可以近似認為不可能發生。)
因此,就有兩個重要的推論。
推論1:每個區塊的哈希都是不一樣的,可以通過哈希標識區塊。
推論2:如果區塊的內容變了,它的哈希一定會改變。
哈希的不可修改性
區塊與哈希是一一對應的,每個區塊的哈希都是針對"區塊頭"(Head)計算的。也就是說,把區塊頭的各項特徵值,按照順序連接在一起,組成一個很長的字元串,再對這個字元串計算哈希。
Hash = SHA256( 區塊頭 )
上面就是區塊哈希的計算公式,SHA256是區塊鏈的哈希演算法。注意,這個公式裡面只包含區塊頭,不包含區塊體,也就是說,哈希由區塊頭唯一決定。
前面說過,區塊頭包含很多內容,其中有當前區塊體的哈希,還有上一個區塊的哈希。這意味著,如果當前區塊體的內容變了,或者上一個區塊的哈希變了,一定會引起當前區塊的哈希改變。
這一點對區塊鏈有重大意義。如果有人修改了一個區塊,該區塊的哈希就變了。為了讓後面的區塊還能連到它(因為下一個區塊包含上一個區塊的哈希),該人必須依次修改後面所有的區塊,否則被改掉的區塊就脫離區塊鏈了。由於後面要提到的原因,哈希的計算很耗時,短時間內修改多個區塊幾乎不可能發生,除非有人掌握了全網51%以上的計算能力。
正是通過這種聯動機制,區塊鏈保證了自身的可靠性,數據一旦寫入,就無法被篡改。這就像歷史一樣,發生了就是發生了,從此再無法改變。
『伍』 區塊鏈和HyperLedger Fabric(五)共享賬本
peer ledger:存儲在背書節點和記賬節點
orderer ledger:存儲在order service node
Chaincode是無狀態的。Chaincode存儲在節點上,賬本只會存儲hash值
賬本的隔離和隱私性用多通道(Multiple Channels)技術來保護
Query System Chaincode(QSCC)
背書節點需提前設定,也作為記賬節點
transaction事務處理流1.X
• client應用(向一個或多個Peer節點(背書節點))發送交易請求(對事務的背書請求);
• 背書節點模擬執行ChainCode,但並不將結果提交到本地賬本(World state,不會修改底層賬本),只是將結果(讀寫集)加密簽名返回給client應用;
• 應用收集所有背書節點的結果後,驗證背書策略是否滿足和模擬執行結果是否一致(去除不確定無效的交易,1.0未實現)將結果廣播給Orderers;
• Orderers執行共識過程,並生成Block,通過消息通道批量的將Block發布給Peer節點(記賬節點);
• 各個Peer節點驗證交易,並提交到本地賬本中.通知client端處理結果
記賬節點Committing Peer:維護賬本和狀態
合約部署都需要指定背書策略。AND,OR,OutOf
背書策略在chaincode實例化時指定
ESCC
VSCC
賬本保存Blockchain和World state(維護當前狀態,方便應用快速查詢)
Block(s):Block header(Block number,當前區塊hash,前區塊hash),Block data,Block Metadata(寫入時間,寫入人,簽名)
transactions:header(名字,version),簽名,proposal(input參數),Pesponse(執行結果前後的數據),Endorsements(背書節點返回的結果list)
World State:kv形式。維護賬本當前信息
Smart Contract:業務角度。定義組織的業務規則,創建交易,記錄到賬本,打包進chaincode。操作World state DB:get,put,delete(put和delete會增加新的記錄,block。只會刪除world state的數據,在賬本里新增記錄)
chaincode可以包含多個合約,實現打包的角度
Chaincode Lifecycle
打包(簽名,)--安裝(peer)--實例化--運行
更新--運行
一個peer可以安裝多個chaincode
System Chaincode
運行在peer上,LSCC(Lifecycle),CSCC(配置),QSCC(查詢)
Peer
Leader Peer:連接order推送新的區塊,隨機傳播其它記賬節點。選舉方式(靜態指定,動態生成)。一個分區一個leader。
Anchor Peer:(Gossip協議,降低order負擔)節點相互認識。
共識:讀寫集
網路搭建:
1.配置啟動order Service
2.配置啟動peer
3.安裝chaincode
4.創建channel
5.加入channel
6.實例化chaincode
『陸』 信任互聯與價值互聯的關系
信任互聯與價值互聯的關系是區塊鏈能夠直接證明和確認某一主體的所有行為,從而解決信息真實問題。不同主體之間由於不信任而在傳統技術領域做出的大量對賬行為,在區塊鏈的分布式賬本一致性邏輯下,便不再需要了。這對於整個互聯網的誠信體系有很大價值。通過區塊鏈可以實現可靠的信任傳遞。區塊鏈因而被視作下一代價值互聯網和信任互聯網的基石。
『柒』 什麼叫區塊鏈經濟 區塊鏈經濟最重要的是賬本
1、在區塊鏈經濟中不得不提到的就是賬本,在每一個鏈上都有一個區塊,賬本也是無處不在的,同時這些賬本並不是只記錄交易,而是由一些規律的數據組合而成的。
2、從根本上來看,賬本描繪了經濟和社會關系。人們對事實及其變化達成一致(即對賬本內容達成共識,以及對賬本的精確性充分信任)是市場資本主義的基石。制度加密經濟學給了我們一種工具用來理解區塊鏈革命正在發生什麼,以及我們無法預測的事情。
3、區塊鏈經濟也是區塊鏈技術帶來的一種現象,目前很多企業都採用了區塊鏈技術,所以利用區塊鏈技術產生的價值利益就可被稱為是區塊鏈經濟,大環境下的經濟體系也在發生變化,這些系統中離不開的都是賬本,所以區塊鏈經濟有必然存在的價值。
『捌』 區塊鏈一般概念摘要
雖然是個前端開發,但是阻擋不了我八卦各種熱門的心。下面簡單匯總下一些學習到的概念性東西。
1、區塊鏈技術隨比特幣誕生,因此先了解比特幣概念
2、比特幣是什麼
(1)、基於分布式網路的數字貨幣
3、比特系統運行原理
(1)、所有節點都會保存完整賬本
(2)、賬本保持一致性
4、區塊鏈記賬原理
hash函數在區塊鏈技術中有廣泛的運用
(1)、哈希函數hash:任何信息hash後會得到一個簡短的摘要信息
(2)、hash特點:簡化信息、標識信息、隱匿信息、驗證信息
(3)、區塊鏈記賬會把時間節點的賬單信息hash,構成一個區塊
(4)、比特幣系統約10分鍾記賬一次,即每個區塊生成的時間間隔大約10分鍾
(5)、記錄下一個賬單時,會把上一個區塊的hash值和當前賬單的信息一起作為原始信息進行hash
(6)、每個區塊都包含了之前區塊的信息,這些區塊組合成了區塊鏈
5、比特幣的所有權-非對稱加密應用
比特幣系統使用了橢圓曲線簽名演算法,演算法的私鑰由32個位元組隨機數組成,通過私鑰可以計算出公鑰,公鑰經過一序列哈希演算法和編碼演算法得到比特幣地址,地址也可以理解為公鑰的摘要。
(1)、轉賬是把比特幣從一個地址轉移到另一個地址
(2)、地址私鑰是非對稱的關系,私鑰經過一系列的運算(其中包含兩次hash),就可以得到地址,但是從地址無法得到私鑰
(3)、轉賬成功後廣播其他節點,其他節點驗證成功後再轉發到相鄰的節點,廣播的信息包含了原始的信息和簽名信息
(4)、驗證,其他節點驗證簽名信息是不是付款方用私鑰對交易原始信息簽名產生的,如果是才記錄(再驗證有足夠余額)
6、比特幣如何挖礦
(1)、完成記賬的節點可以獲得系統給予的一定數量比特幣獎勵(這個獎勵過程也就是比特幣的發行過程,因此大家把記賬稱為挖礦)
(2)、一段時間內只有一人可以記賬成功,因此需要收集沒有被收集的原始交易信息,檢查有沒有餘額、正確簽名
(3)、為了提高記賬難度,十分鍾左右只有一人可以記賬,hash結果需要若干0開頭,並且進行hash時引入隨機數變數
(4)、隨著更多礦工的加入,游戲難度越來越大,計算難度加大,電力損耗等加大,國內電力成本低,中國算力占整個網路的一半以上
(5)、網路中只有最快解密的區塊,才會添加到賬本中,其他的節點復制,保證賬本的唯一性。如果有節點作弊,導致整個網路不通過,則會被丟棄再也不會記錄到總賬本中。因此所有節點都會遵守比特幣系統的共同協議。
【關於區塊鏈會延伸到那些領域的思考】:
由以上的概念可以總結出,區塊鏈技術存在這安全性、唯一性、去中心化。
原則上是可以避免部分信息泄露,讓確認方既可以確認你的身份,又無需暴露自己的真是用戶信息等。
目前區塊鏈技術集中被運用再比特幣,我覺得後續更大的意義應該在需要數據私密性、安全性的領域。
【關於區塊鏈目前發展的瓶頸和局限性思考】:
由於每個節點都參與了整個賬本記錄活動,難免造成資源的浪費和損耗。以及加大了每個節點的計算難度,後續的發展和普及需要每個節點的硬體提升。