2分鐘讀懂什麼是區塊鏈?

區塊鏈是分佈式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。

區塊鏈(Blockchain),是比特幣的一個重要概念,它本質上是一個去中心化的數據庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一批次比特幣網絡交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。

比特幣白皮書英文原版,其實並未出現 blockchain 一詞,而是使用的 chain of blocks。最早的比特幣白皮書中文翻譯版中,將 chain of blocks 翻譯成了區塊鏈。這是“區塊鏈”這一中文詞最早的出現時間。

國家互聯網信息辦公室2019年1月10日發佈《區塊鏈信息服務管理規定》,自2019年2月15日起施行。

區塊鏈可以用一句話說明,區塊鏈是一個存儲系統。

更細一點,區塊鏈是一個沒有管理員,每個節點都擁有全部數據的分佈式存儲系統。

通常所見的存儲系統是啥樣的?

2分鐘讀懂什麼是區塊鏈?

:如上圖,一塊空間存儲數據,一個軟件管理數據,提供接口寫入數據,這是存儲系統,例如mysql。

普通的存儲系統會有什麼常見的問題?

:常見的有兩個問題:

數據存在一個地方很危險,空間損壞數據就丟了,用技術的話說即“數據不高可用”

寫入點只有一個,用技術的話說即“單點控制”

如何保證數據高可用?

2分鐘讀懂什麼是區塊鏈?

:解決高可用要“冗餘”,如上圖,如果能把數據冗餘到多個地方,就能保證高可用,一個地方的數據掛了,另外的地方仍存有數據。例如mysql主從集群,以及磁盤的RAID都是這個原理。

這裡需要強調兩點:

數據冗餘往往會引發一致性問題,例如mysql主從集群中的讀寫延時問題

數據冗餘往往會降低寫入效率,因為同步數據需要消耗額外的資源

畫外音:更詳細的,可閱讀《互聯網架構,如何保證高可用》。

可不可以多點寫入?

2分鐘讀懂什麼是區塊鏈?

答:可以。可以多個節點都實施寫入,例如mysql雙主集群,又或者多機房多活數據中心。這裡要強調的是,多節點寫入往往會引發寫寫衝突的一致性問題。

畫外音:雙主一致性,可閱讀《mysql雙主架構如何保證一致性》。

多點控制寫入之後,其實出現了多中心控制,在數據不一致的時候,往往需要有一個算法來協商如何處理不一致數據。

例如,存在兩個中心節點時,可以約定這樣的算法來處理不一致:

以時間戳最小的數據為準,即先來先得

又例如,存在多箇中心節點時,可以約定這樣的算法來處理不一致:

投票,以多數票的數據為準

什麼是區塊鏈?

2分鐘讀懂什麼是區塊鏈?

區塊是一塊存儲空間,可以存儲數據

區塊鏈不但像鏈表一樣把區塊串起來,還有約定了一系列的方法管理這些數據,所以它是存儲系統

區塊鏈有很多節點,每個節點都保存了全部的數據,所以它是高可用的

每一箇中心節點都可以生成區塊,並寫入數據,所以每一個點都是中心節點,或者說區塊鏈是去中心化的,要想控制整個系統,必須控制一半以上的節點,才能控制投票,於是這個系統沒有管理員

由於節點很多,很多數據需要同步,這個系統的存儲容量其實不大,目前全球存儲比特幣的區塊鏈也就100多G。

畫外音:額,有朋友說他們公司的mysql數據庫輕輕鬆鬆幾百G。

因為節點很多,數據需要保持一致,這個系統的寫入效率也很低,存儲比特幣的區塊鏈每10分鐘才生成1個區塊,1個區塊只有1M的存儲空間,只夠寫入2000筆比特幣交易的數據。

畫外音:比特幣全球交易,每10分鐘只能處理2000筆交易。有朋友說他們公司自研的存儲系統輕輕鬆鬆;每秒處理交易10W筆。

區塊鏈的特徵:

1.去中心化。由於使用分佈式核算和存儲,體系不存在中心化的硬件或管理機構,任意節點的權利和義務都是均等的,系統中的數據塊由整個系統中具有維護功能的節點來共同維護。

2.開放性。系統是開放的,除了交易各方的私有信息被加密外,區塊鏈的數據對所有人公開,任何人都可以通過公開的接口查詢區塊鏈數據和開發相關應用,因此整個系統信息高度透明。

3.自治性。區塊鏈採用基於協商一致的規範和協議(比如一套公開透明的算法)使得整個系統中的所有節點能夠在去信任的環境自由安全的交換數據,使得對“人”的信任改成了對機器的信任,任何人為的干預不起作用。

4.信息不可篡改。一旦信息經過驗證並添加至區塊鏈,就會永久的存儲起來,除非能夠同時控制住系統中超過51%的節點,否則單個節點上對數據庫的修改是無效的,因此區塊鏈的數據穩定性和可靠性極高。

5.匿名性。由於節點之間的交換遵循固定的算法,其數據交互是無需信任的(區塊鏈中的程序規則會自行判斷活動是否有效),因此交易對手無須通過公開身份的方式讓對方對自己產生信任,對信用的累積非常有幫助。

相關推薦

推薦中...