題圖:by click_vision From Instagram
最近區塊鏈大火,經常有讀者問我什麼是區塊鏈,能幹什麼,本想給大家寫一篇普及帖的,今天看到池老師寫的一篇區塊鏈技術普及帖很不錯,所以今天轉載分享給大家,以下是原文:
我在 2017 年 12 月 26 日寫過一篇「2018 年技術趨勢預測」,關於區塊鏈我是這麼寫的:
區塊鏈是可以改變世界的發明。區塊鏈源起比特幣,但並不侷限在幣圈。區塊鏈技術是儲存、驗證和資料保護等問題的實際解決辦法。區塊鏈可被視為分散的、極度安全的資料庫。更專業一點來說,區塊鏈是分散式的點對點的基於密碼學的共享賬本,可以在金融服務、保險、醫療、政府等領域內被廣泛應用。2018年應該是區塊鏈技術起飛並日趨成熟的一年。
沒想到 2018 年剛開始,區塊鏈技術就像西去路上火焰山頂最高的火焰,簡直火冒好幾丈,紅得發紫。很多人會說有這麼火麼,我怎麼不知道。事實上 2017 年火爆的是比特幣,區塊鏈的拉昇曲線確實是一月份才發生的,看下區塊鏈的微信指數就知道了:
一個浪頭打過來,最好的辦法是迎上去瞭解個究竟,而不是漠視,或者乾脆當事情沒有發生。最近讀了些相關資料,有了更具體一點的瞭解,那就寫篇白話文吧。閱讀時間大概九分鐘。
區塊鏈到底是啥?不明真相的群眾一般都去查維基百科,上面是這麼說的:
區塊鏈(英語:blockchain 或 block chain)是用分散式資料庫識別、傳播和記載資訊的智慧化對等網路,也稱為價值網際網路。中本聰在 2008 年,於《比特幣白皮書》中提出「區塊鏈」概念,併在 2009 年創立了比特幣社會網路,開發出第一個區塊,即「創世區塊」。
看完以後你是不是發現,都是中國字,怎麼就搞不懂是啥意思呢?所以區塊鏈的概念還是得解釋一下。首先需要明確的是,區塊鏈是一套協議和規範,用英文表述就是 Protocol,不是具體的程式碼或者專案。理解了這套協議,你可以基於不同的語言和技術去實現它,這和我們平時定義了一套 API,然後基於不同的技術實現沒有什麼分別。
但是區塊鏈在不同領域的人眼裡,可能是不同的東西。角度不同,我們得出的結論也不一樣。金融領域的人會認為區塊鏈是個分散式的賬本,是一個分散式的去中心化的記賬系統。搞安全和密碼學的人會說區塊鏈是基於密碼學構建的對等網路。而我們程式員瞭解了區塊鏈技術,會認為這不就是一個保證最終一致性的分散式資料庫嘛。
記賬系統
對於普通人來說,記賬系統最容易理解,我們從賬本說起。比如大家一起做生意,總要有個賬本,最初這個賬本由賬房先生管理。但一個人管,總會出現對賬不平衡的情況(比如挪用),於是大家開始輪流管。這種方式也有問題,在某個人保管賬本和記賬期間,一旦發生了資料丟失或賬本損壞的情況,也會搞不清真實原因。最後大家決定用一種新的記賬方式,每個人一個自己的賬本,任何人改動了自己的賬本都要告訴其他所有人,其他人也會在自己的賬本記上一筆。只要有人發現新的賬目不對,可以拒絕接受。最後以大多數人一致的賬目為準。
這就是分散式的去中心化的記賬系統。但這種做法時間長了還是會有問題,有人天天記,有人偷懶不記,會產生不公平。於是大家決定每天早上擲骰子,根據點數決定誰來記當天的賬,其他人核對一下,沒問題就複製過來。並且,當天的記賬者會獲得一點點獎勵(這就是挖礦)。
去中心化的分散式資料庫
把上面的記賬系統用軟體技術實現了,就是去中心化的分散式資料庫。
什麼是中心化,早期網際網路大都採用 CS 架構,一個伺服器 N 個客戶端,Client 和 Server 之間進行通訊,系統可靠性嚴重依賴 Server,這叫中性化。
隨著業務複雜度的增加,伺服器端也開始分拆,橫向和縱向擴充套件,讀寫分離等等,這就是我們常用的分散式架構系統,系統可靠性依賴分散式系統的熱備份和容災恢復能力。這時候伺服器雖然分佈了,但依然是中性化的。大部分商業公司都採用類似的架構和樣式。
去中心化是怎麼回事呢?就是資料庫不屬於任何機構和管理員。只要伺服器端被某個機構或管理員控制,就存在宕機或資料篡改的風險。區塊鏈和 P2P 的網路通訊技術最終實現了去中心化。區塊鏈的作用就是儲存資訊,可以認為是一個資料庫,而任何人都可以透過 P2P 網路架設伺服器,接入區塊鏈網路,成為一個節點。這下人人平等了,大家都是 Server,也就沒有了 Server,每個節點既是生產者也是消費者。
你可以向任何一個節點讀寫資料,一旦寫入就是歷史,最後所有的節點都會同步資料,保證「賬本」的一致性。
區塊鏈是沒有管理員的,也不需要人工審核和干涉。那人人都能寫資料,資料的可信度怎麼保證呢?資料被篡改了咋辦?別擔心,P2P 網路只是進行資訊通訊,保證資料安全的還有共識演演算法和加密演演算法。
共識演演算法
關於共識演演算法、拜占庭將軍問題,大家可以參考這一篇文章,很長,但容易看懂。
分散式一致性與共識演演算法(https://draveness.me/consensus)
簡單來說,共識演演算法就是保證少數服從多數,也就是我在記賬系統中寫過的「最後以大多數人一致的賬目為準」。大多數人認可的事情,就是事實。這種規則聽起來挺嚇人的,比如我們常常在文學作品和歷史經驗中知道,真理往往掌握在少數人手裡。但是在 P2P 的網路裡,有無數的節點,要想大部分節點一起作惡,除非這些節點都被某個組織控制了。這種可能性雖然不是沒有,但機率非常小。
總的來說,共識演演算法解決的是對某個提案(Proposal)達成一致意見的過程。提案的含義在分散式系統中十分寬泛,包括多個事件發生的順序、某個鍵對應的值…等等,可以認為任何需要達成一致的資訊都是一個提案。
有了共識演演算法和相關的加密演演算法,就可以保證資料的安全性和一致性。
為什麼會挖礦?
談到比特幣,大家耳熟能詳的就是挖礦和礦機這種事。那為什麼會挖礦呢?挖礦其實是一種激勵和競爭機制。
在區塊鏈系統中,總有些節點被選中進行資料整理、驗證、打包,並把相關的改動廣播出去,這個工作還是挺耗資源的,所以會有獎勵機制。負責打包的節點會獲得系統的獎勵,類似積分,對於比特幣系統來說,就是獎勵比特幣。有了獎勵,很多節點都希望獲得這樣的獎勵,於是有些區塊鏈系統,比如比特幣就會設計出一種競爭機制,讓各個節點憑藉自己的算力和資源去搶,能搶到這個資料打包的機會,就會獲得獎勵,也就是比特幣。這個競爭的過程就是挖礦。
什麼是算力呢?就是計算機每秒產生 hash 碰撞的能力。也就是說,手裡的礦機每秒能做多少次 hash 碰撞。算力越高,獲得的獎勵越多。
區塊鏈的未來
很多人覺得區塊鏈的唯一應用就是發行虛擬貨幣,最近國內外市場也是烽煙四起,比如超過百年曆史的伊士曼柯達公司宣佈推出基於區塊鏈技術的「柯達幣」(KodakCoin)和 KodakOne 平臺,讓全球的攝影師能夠更好的控製圖片的版權和交易。然後股價就飆升了……
瞭解了區塊鏈的技術特點,我們就知道,區塊鏈的能力遠不止虛擬貨幣領域,未來的 金融服務、物流、保險、醫療、共享經濟、智慧合約領域,應該都會有區塊鏈的身影。
繁華落盡,洗盡鉛華,所有的技術都將經歷時間的洗禮。歷經爆發期、衰退期併進入成熟期的技術,才是真正能具備生命力的技術。
想詳細瞭解區塊鏈技術,一篇文章是遠遠不夠的,推薦一節免費直播課給感興趣的讀者。
分享者是馮貴彬:
(株)LinkJapan IoT新事業研究室技術主管
2006-2012年北京市氣象局雷達通訊研究室
2012-2015年北京康康盛世資訊科技有限公司
負責BLT通訊開發.現就職於日本LinkJapan Inc主要研究方向:
IoT/big data,deeplearning,self-driving
直播課內容:
1、什麼是區塊鏈
介紹一下區塊鏈的概念和基本技術特點等相關內容
2、區塊鏈的發展史
介紹區塊鏈所解決的問題,談一下區塊鏈的發展史
3、區塊鏈基礎
介紹運算原理、公有鏈、私有鏈、聯盟鏈、常用加密演演算法等機制以及分叉和礦工在鏈中的作用
4、區塊鏈的缺點
5、區塊鏈的典型應用 —— 以比特幣為首的數字貨幣
7、區塊鏈技術的未來發展應用
區塊鏈1.0時代
區塊鏈2.0時代
區塊鏈3.0時代
直播時間:2018年1月24日晚20:30
報名方式:長按識別二維碼
或新增【Sky區塊鏈技術分享群】群號:695649062