區塊鏈技術荊
A. 什麼是區塊鏈技術區塊鏈技術的核心構成是什麼
從技術的角度,架構的角度,用通俗的語言來跟大家講講,我對區塊鏈的一些理解。
究竟啥是區塊鏈?Block chain,一句話來說,區塊鏈是一個存儲系統,存儲系統更細一點,區塊鏈是一個沒有管理員,每個節點都擁有全部數據的分布式存儲系統。
那常見的存儲系統,是什麼樣子的呢?
首先看一下如何保證高可用?
普通的存儲系統通常是用「冗餘」的方式來解決高可用問題的。圖上圖所示如果能夠把數據復製成幾份,冗餘到多個地方,就能夠保證高可用。一個地方的數據掛了,另外的地方還存有數據,例如MySQL的主從集群就是這個原理,磁碟的RAID也是這個原理。
這個地方需要強調的兩點是:數據冗餘,往往會引發一致性的問題
1、例如MySQL的主從集群中中其實讀寫會有延時的,它其實就是有一個短的時間內讀寫不一致。這個是數據冗餘,帶來的一個副作用。
2、第二個點是數據冗餘往往會降低寫入的效率,因為數據同步也是需要消耗資源的。你看單點寫入,如果加了兩個從庫之後,其實寫入的效率會受影響。普通的存儲系統,就是採用冗餘的方式,保證數據的高可用的。
那麼第二個問題,普通的存儲系統,能否多點寫入呢?
答案是可以的,比如說以這個圖為例:
其實MySQL的話可以做一個雙主的主從同步,雙主的主從同步,兩個節點,同時可以寫入。如果要做多機房多活的數據中心,其實多機房多活也是進行數據同步的。這里要強調的是多點寫入,往往會引發寫寫沖突的一致性問題,以MySQl為例,假設有一個表的屬性是自增ID,那麼現在資料庫中的數據是1234,那麼其中一個節點寫入,插入了一條數據,那它可能變成5了,然後這5條數據,向另外一個主節點進行數據同步,同步完成之前,如果另外一個寫入節點,也插入了一條數據,也生成了一條這個自增id為5的數據。那麼,生成之後,往另外一個節點同步,然後同步數據到達之後會與本地的這兩條5沖突,就會同步失敗,會引發寫寫的一致性沖突問題。這個多點寫入的話都會出現這個問題。
多點寫入,如何保證一致?
維新「天鵝大咖課」給你更多的技術幹活
B. 如何理解區塊鏈與區塊鏈技術
區塊鏈技術用數學方法實現分布式記賬,並解決信任問題,從而完成了去中心化,將在通信、金融、物聯網、政府管理等眾多領域帶來深遠的影響。
區塊鏈(Blockchain)是指通過去中心化和去信任的方式集體維護一個可靠資料庫的技術方案,是一種全民參與記賬的技術方式。而此前的記賬方式都是中心化的,需要中心化的中介,無論這個中介是傳統的政府、金融機構、公證機構還是新興的電商平台、網路支付平台。
經濟學假設中,信息是充分的。實際上,正是因為信息不充分,才存在非常龐大的中介機構。而中介機構的存在,增加了交易成本,提高了交易門檻。區塊鏈技術本質上來說是一個大規模協作工具,它首次使用純技術方式讓直接的價值轉移成為可能,並延續了互聯網去中心化和去中介化的趨勢。去中介的區塊鏈技術將極大地顛覆信息中介行業。
區塊鏈技術是構建比特幣數據結構與交易信息加密傳輸的基礎技術,該技術實現了比特幣的發行與交易。區塊鏈技術的核心是所有當前參與的節點共同維護交易及資料庫,使交易基於密碼學原理而不基於信任,使得任何達成一致的雙方,能夠直接進行支付交易,不需第三方的參與。
從技術上來講,區塊是一種記錄交易的數據結構,反映了一筆交易的資金流向。系統中已經達成交易的區塊連接在一起形成了一條主鏈,所有參與計算的節點都記錄了主鏈或主鏈的一部分。
一個區塊包含以下三部分:交易信息、前一個區塊形成的哈希散列和隨機數。交易信息是區塊所承載的任務數據,具體包括交易雙方的私鑰、交易的數量、電子貨幣的數字簽名等;前一個區塊形成的哈希散列用來將區塊連接起來,實現過往交易的順序排列;隨機數是交易達成的核心,所有節點競爭計算隨機數的答案,最快得到答案的節點生成一個新的區塊,並廣播到所有節點進行更新,如此完成一筆交易。