趣說區塊鏈入門

讓你聽過區塊鏈

不知道你們有沒有聽過區塊鏈?有沒有了解過區塊鏈?有沒有開發過區塊鏈?固然,這些都不重要。重要的是,如今開始,你即將瞭解「區塊鏈」。區塊鏈包括了 數學、密碼學、P2P 通訊、智能合約、分佈式存儲及共識算法等知識,是多種技術共同組合而成的。git

下面從實際生活的例子出發,看看什麼是區塊鏈?區塊鏈解決了什麼問題?github

壓歲錢?

小時候最喜歡過年了,走親訪友咱們都有壓歲錢,也老是這樣的客氣。算法

但開心的時間老是短暫的,到家裏,媽媽總會說:「紅包我就給你保管了,等你須要用到的時候再給你啊」。固然,連續了好多年,我都沒有看見過本身的壓歲錢。數據庫

當時年紀尚小,父母是咱們信任的人。什麼都由父母說了算,這個壓歲錢具體數額,使用日期,使用方式好像跟咱們沒多大關係,都是在父母指定的規則中進行。簡單總結,這就是中心化的操做。中心能夠隨意更改咱們的數據,更改規則,咱們都是中心下運轉的螺絲釘安全

就像如今咱們的錢是存在銀行,由於銀行後面是國家,咱們信任國家,因此把錢放到銀行。銀行就是一箇中心化的機構,執行相關的政策,進行經濟的宏觀調控等。markdown

接下來,讓咱們看看什麼是區塊鏈?解決了什麼問題?網絡

仍是收壓歲錢。框架

可是幾年後的我聰明瞭。不相信媽媽給我保管壓歲錢,每次拿到壓歲錢,我都本身拿個小本子,把誰給個人壓歲錢,具體金額跟時間都記上;而且告訴爸爸,哥哥姐姐,爺爺奶奶,七大姑八大姨,他們都跟我同樣,記錄着誰給個人壓歲錢,具體金額跟時間等。 有一天,我有個喜歡的小女孩,她叫 LL,我向媽媽支出 100 塊錢,想要給小女孩買禮物表白。媽媽一聽?好小子,小小年紀,想法如此通透,果斷拒絕,說個人壓歲錢只有 10 塊錢!!!!媽媽還拿出了她的小本本,上面確實只有 10 塊錢。分佈式

9 龍表現得異常冷靜,超出同齡人的沉着,化身福爾摩斯-龍。緩緩拿出了個人小本本,上面清楚記錄着個人每一筆壓歲錢(記錄着哪位親戚給個人,具體金額是多少)。媽媽開心的笑起來,表現出本身兒子是天才般的浮誇。很快,她的理智打敗了,說我記假帳!!!!這時候又讓我想起我小時候常常問的問題:「媽媽,我是從哪裏來的?」工具

我笑了笑,接着在「相親相愛一家人」羣裏給你們說,「請你們帶上我壓歲錢的小本本,來我家客廳一下」。你們都是愛個人,很快就來了。長輩們的小本本上都記錄着我每一筆壓歲錢,而且跟個人小本本記錄的如出一轍,那場景,異常尷尬啊。媽媽馬上從包裏給了我 100 塊錢,這時,我跟每一位長輩都在本身的小本本上記下:媽媽。。年。。月。。日給了 9 龍 100 塊錢。 9 龍拿着錢,蹦跳着向商店跑去。

太棒了,這就是 amazing。咱們再來分析一下這其中的關鍵。家中的每個人都幫我記錄每一筆壓歲錢的來歷:包括誰給個人,什麼時間,具體金額等。 這就是「去中心化」,你們都在幫我記錄,記錄着個人每一筆入帳與出帳,誰要是修改了本身的小本本,咱們就能夠找你們來覈對一下每一個人的小本本,就能夠知道誰的帳本上錯誤的,而大多數人的帳本都是一致的。

其實這就是區塊鏈最核心的東西,去中心化,數據不可篡改,因此信任帳本(少部分人篡改後,大部分誠實的人數據都是一致的,咱們相信大多數)。

區塊鏈的實質是一個去中心化的分佈式數據庫,只支持以數據增長的方式來更新帳本,每一次更新都是以交易的形式進行,因此能夠追溯餘額的變化緣由,每筆帳單的來源與去向。 由於不能夠更改其中的某一筆交易,也不能夠刪除數據,因此咱們每一個人都信任本身記錄的小本本,信任着本身的帳本。當你對本身的帳本有質疑時,能夠叫你們一塊兒來互相覈對,查看帳本是否有問題。

因此區塊鏈根本解決的是什麼問題?

我認爲根本解決的是信任問題,如何讓互不認識的雙方很放心地進行價值轉移。 基於區塊鏈的特性:去中心化、數據不可篡改。

聰明的你,應該也看出了要想實現區塊鏈須要不少條件才行,下面咱們來看一看。

區塊鏈實現須要克服的問題

咱們從上面的例子能夠看出一些問題。這裏只是說一些大方向的問題,畢竟此篇不涉及技術。後續的文章會詳細說明的,請耐心等待,持續關注。

  1. 能夠看出,記帳的人越多,其實越安全。可能記帳的人分散在世界各地,彼此不認識,如何讓你們都知道彼此何時得到多少壓歲錢,誰給的呢?
  2. 如何保證你們知道的此條帳單信息來源的真實性?(是否傳輸過程當中被人篡改)
  3. 如何保證在有人會修改帳單,或者轉發已經修改的虛假帳單給別人時,別人如何處理此帳單?
  4. 如何保證你們都會按照約定的規則進行記帳呢?確保都會將帳單加入到本身的數據庫中。
  5. 若是有人串通好一塊兒更改帳本,而且廣播這個更改的帳本,這時候又怎麼處理呢?
  • 咱們先說第一個問題:如何讓世界各地的人互相都知道本身的壓歲錢來歷,金額等。這就是P2P 通訊(peer to peer),點對點的傳輸,雙方都是直接發送消息給對方。p2p 是區塊鏈的基石,全部的操做都得靠 p2p 來完成。(引入 p2p 就會有不少網絡問題,好比網絡分區)
  • 第二個問題:能夠採用非對稱加密算法,使用私鑰進行關鍵數據簽名;公鑰及原始數據,簽名進行驗籤。這樣就能夠驗證數據是否與來源對應,數據是否被篡改。
  • 第三個問題:其實問題二說明中,能夠驗證此帳單是否被修改,若是被修改了驗證不經過,丟棄此帳單,等待正確帳單的到來,或者向已經鏈接的其餘人索要帳單。
  • 第四個問題:你們都按照某種規則來驗證此帳單的有效性,最簡單的作法可能經過投票,你們都來表決是否此帳單有效並進行記錄。這一步就是所謂的共識,即你們都對此帳單的有效性進行表決,是否接受帳單。共識是基於 P2P 通訊的,因此可能會出現網絡故障、網絡分區;更甚其過程會有做惡的人篡改帳單,廣播假的帳單,或者一會贊成一會不一樣意等搗亂行爲,影響共識的進行。這就是分佈式事務問題,如何在分佈式場景中對某一個值進行共識,來達到你們都對這個值一致的處理結果——都贊成或者都不一樣意,或者知足指定的規則下容許少部分的人能夠與你們的結果不一致。對於分佈式一致性算法:有 2PC、3PC、PAXOS、PBFT、RAFT 等。還有區塊鏈特有的 POW、POS、DPOS 等,之後慢慢道來。
  • 第五個問題:這個問題其實也是屬於共識範疇,但能夠知道的是,咱們是相信大多數人的帳本,若是大多數人都接受一個更改後的帳本,反過來講,這個「錯誤的帳本」其實就是正確的,被你們所共識後並接受的。

區塊鏈分類

區塊鏈根據需求劃分爲三類

  1. 公有鏈:指全部人均可以參與,能夠隨時上下線;
  2. 聯盟鏈:想要加入的人或者機構須要進行 CA 認證,即須要通過現有聯盟鏈中節點的審批,知足定義的背書策略便可;退出亦然。
  3. 私有鏈:不容許其餘人加入退出,或者只有通過許可的才能加入,可是其餘的人沒有決定權,徹底由私有鏈決定如何處理交易等。我理解私有鏈已經不能稱爲區塊鏈鏈,就是一箇中心化的分佈式帳本。

比特幣?以太坊?EOS(柚子)?

或許你聽過這些名字,也據說了是基於區塊鏈的加密數字貨幣。

但我強調!!!!!比特幣、以太坊、EOS 等數字貨幣,不等同於區塊鏈,它們只是區塊鏈的一種應用。

比特幣是區塊鏈的第一個應用,而且通過時間驗證,是可行的,如今還在正常運行,沒有任何中心化的機構運行,全靠比特幣區塊鏈網絡中的節點來共同維護。

分佈式帳本——Hyperledger Fabric

Hyperledger 是一個開源社區,致力於爲企業級區塊鏈部署開發一套穩定的框架,工具和庫。旗下有不少開源的產品,最出名的非屬 Fabric,是可商用的聯盟鏈框架。國內也是主推聯盟鏈的發展,聯盟鏈纔是可真正承接業務的區塊鏈,公鏈暫時尚未找打比較好的商用場景。若是你們對區塊鏈感興趣,建議向聯盟鏈方向發展。

國內的聯盟鏈框架

如下排名不分前後(狗頭保命)

  • XuperChain:百度徹底自主研發的聯盟鏈框架。github 地址:https://github.com/xuperchain/xuperchain
  • FISCO BCOS:由微衆銀行牽頭,衆多企業參與研發,基於 ethereum 進行研發的聯盟鏈框架。github 地址:https://github.com/FISCO-BCOS/FISCO-BCOS
  • CITA:CITA 由祕猿科技開源, 是一個開源的區塊鏈操做系統內核,以高穩定性,高性能,高可擴展性爲設計目標。gi thub 地址:https://github.com/citahub/cita
  • 梧桐鏈:由蘇州同濟區塊鏈研究院進行研發,基於開放標準研發的聯盟鏈平臺,聚焦行業、結合聯盟、服務社區。github 地址:https://github.com/tjfoc/wutongchain

說到聯盟鏈,怎麼能不說智能合約呢

智能合約(英語:Smart contract )是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約容許在沒有第三方的狀況下進行可信交易,這些交易可追蹤且不可逆轉。智能合約概念於 1995 年由 Nick Szabo 首次提出。

能夠理解爲某個系統中,達到了某個條件後自動觸發執行的程序。 智能合約已經提出不少年了,但爲何都沒有應用,直到以太坊的出現?由於智能合約是自動執行的程序,若是運行其的系統不可信,那系統可能在智能合約運行過程當中更改運行狀態,這就與合約的概念背道而馳。直到區塊鏈的出現,以太坊將智能合約引入到了區塊鏈中,使用區塊鏈的不可篡改特性提供了可信的運行環境,智能合約才能得以應用。

靈魂拷問?

  1. 什麼是區塊鏈?你能夠用本身的話給別人說清楚嗎?
  2. 存在即合理,爲何會產生區塊鏈?區塊鏈解決什麼問題?
  3. 區塊鏈涵蓋哪些主要知識?有什麼分類?
  4. 你理解了區塊鏈是什麼以後,你有什麼好的想法或者應用場景?

這篇文章是區塊鏈的入門文章,以後的文章會偏向底層技術一些,拭目以待吧。

本文使用 mdnice 排版

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息