概要
區塊鏈是去年比較火的概念, 而讓它這么出名的一個經典應用就是比特幣. 區塊鏈並不是指一種特殊的新技術, 而是一系列技術方案的集合, 通過這些技術方案的結合, 解決了去中心化的信用問題.
區塊鏈是概念, 比特幣則是區塊鏈落地的一個實例.
區塊鏈包含的技術
- 去中心化 區塊鏈本質是一個 分布式的數據庫 , 沒有中央服務器, 所有的內容分布式的緩存在各個客戶端.
- 信息編碼: 目的是防止信息被篡改 信息編碼采用 SHA 算法, 因為它有以下特點:
- 原始信息編碼后成 固定長度的字符串, 也就是 指紋
- 無法從指紋反推出原始信息
- 原始信息修改一點點, 指紋就發生很大的變化
- 加密: 目的是驗證信息的真實性 一般采用非對稱加密算法, 比如 ECC(橢圓曲線算法)
區塊鏈的傳輸過程
- 發送方
- 原文 –> SHA 算法 –> 指紋
- 指紋 –> ECC 算法 + 私鑰 –> 密文
- 原文 + 密文 + ECC 公鑰 –> 發送廣播
- 接收方
- ECC 公鑰 + 密文 –> 指紋 1
- 原文 –> SHA 算法 –> 指紋 2
- 指紋 1 == 指紋 2 –> 接受成功; 否則信息非法
區塊鏈的問題
-
客戶端的信息如何同步? 當某個客戶端 A 要改變自己的信息的時候, 比如 A 向 B 進行了付款.
這時 A 會廣播交易信息, 所有接受到交易信息的客戶端會同步自己的賬本. -
區塊鏈分叉如何處理? 比如, 以比特幣為例:
- 客戶端 A, B 賬本是同步的, 最新的節點都是 x
- A 基於當前賬本挖到了新的比特幣, A 的賬本變成 x –> y, 並且廣播
- 同時, B 也基於當前賬本挖到了新的比特幣 z, B 的賬本變成 x –> z, 並且廣播
- 同步之后, 賬本就發生了分叉, x –> y/z
如何解決分叉並不是區塊鏈定義的范疇, 而是具體區塊鏈應用自己定,
以 比特幣 來說: 如果出現分叉, 那么分叉之后, 先達到 6 個區塊的那個分支, 被認為是主鏈, 另一個分叉被廢棄.
對於上面那個例子, y 和 z 之后, 誰先到 6 個區塊, 誰就是主鏈, 另一個分叉會被廢棄.