從道法術三個層面理解區塊鏈:術

image

區塊鏈對當下的你們來講,都仍是盲人摸象的階段,因此常常羣裏有各類爭論,歸結起來,都是有的摸到了大腿,有的摸到了耳朵,相互之間就難以說服對方。javascript

image

各自有各自的認知java

筆者嘗試從道法術這三個層面來解讀下區塊鏈,以便讓你們有個更全面的瞭解,也知道本身的認知的針對性實際是什麼。node

區塊鏈首先是區塊鏈技術,這也幾乎構成了區塊鏈在術部分的所有。 也構成了道和法的基礎。離開術來空談道和法,是不夠腳踏實地的,而是空中樓閣。據傳,三點鐘羣若是談論技術的話,會被踢出羣的,這就暴露了大佬們在技術上的虛弱。git

咱們先來講說區塊鏈的鼻祖比特幣用到的計算機技術:github

  • 1929年的逆波蘭表達式算法

  • 1970年的布隆過濾器bloom filter數據庫

  • 1989年的默克爾merkle樹服務器

  • 1999年的橢圓曲線數字簽名算法微信

  • 2000年的p2p網絡網絡

  • 2001年的sha-256(還有別的,不寫了)

  • 2009年的blockchain(獨創)

今年接近90歲的逆波蘭表達式構成了比特幣的加鎖和解鎖腳本的棧式執行。比特幣的加鎖和解鎖腳本使得比特幣能夠支持很是靈活和多樣的交易形式,保證交易(bond transaction),返還交易(refund transaction),擔保交易,多重簽名等。

70後的布隆過濾器(bloom filter)來了,Bloom filter能夠在一個有不少元素的集合中高效判斷元素是否屬於該集合,元素屬於該集合的不會誤判,元素不屬於該集合的會有小几率誤判。比特幣的輕錢包須要用瘦客戶端模式實現的錢包,由於不存儲完整區塊鏈,就涉及到如何獲取UTXO的問題。比特幣就是用布隆過濾器(Bloom filter)在快速檢索並返回相關數據的節點

80後的默克爾merkle樹能夠高效地比對大文件在傳輸過程當中是否有出錯或改動,同時還能高效地定位出大文件是哪個的片斷出錯了,從而只要從新更新該片斷便可。比特幣用merkle樹來將塊中的全部交易做爲樹的葉節點,來實現塊的交易數據的準確高效傳輸,並把merkle樹根做爲block header的主要數據。

90後的橢圓曲線數字簽名算法正式出場了。全部發行出來的比特幣都體現爲未花費的交易輸出UTXO,也就是目前大約是1640萬枚的比特幣,是呆在一堆UTXO裏。那麼這些UTXO理論上是無主的,每一個UTXO有一個加密腳本,只要誰有辦法解開,誰就可使用這個UTXO裏的比特幣。通常地說,大部分的加密用公鑰加密,用對應的私鑰來解密。因爲橢圓曲線計算的非對稱性,即求乘積很容易,但求除法很困難,換成加解密的角度來講,就是知道私鑰,容易算出公鑰,但知道公鑰,是算不出來私鑰的。這樣客觀上保證了即便UTXO是公開的,也只有私鑰持有者可使用。

00後的p2p網絡重磅登場。其實這個雖然不少人不必定深刻了解它的原理,但多數人又都用過。多數人是用過BT或迅雷來下載過文件,它的背後就是p2p的網絡。這一技術的發明是爲了解決中心化的服務器要不斷地擴容才能知足愈來愈多的用戶請求,並且用戶越多,系統越慢。p2p因爲是peer2peer的,也就是下載的文件來自於全球分散的電腦裏,而不是中心化的服務器,這樣極大的避免了中心化的服務器的擁堵。並且,用戶越多,提供下載的節點也就越多,是一個正向的反饋激勵。比特幣也是應用p2p網絡來進行分佈式計算的。每一個全節點都要將廣播接收來的交易校驗、打包成塊,並廣播出去,將廣播接收來的打包好的塊檢驗後記錄下來,並在其後進行新的打包成塊。p2p網絡也是區塊鏈技術中最爲重要的一個篇章。

sha-256等報文摘要哈希(hash)函數是爲了對數據進行摘要處理,從而發現原始數據是否有被修改,哪怕是很是細微的修改。同時,hash值又能夠用來作key value數據庫的key,這樣查詢就能夠很是快。比特幣採用工做量證實POW(Proof of Work)做爲共識算法,又把隨機數加塊頭的一些數據來計算知足難度的雙sha-256結果的計算看成工做量。POW有效地避免了公開的交易帳本被修改的風險,由於要想修改,也須要足夠的算力去從新計算,由於每一個塊都須要足夠的工做量,也就是時間,因此嘗試修改的人是難於在落後其餘人的狀況下追上其餘人的。

最後是很是狹義角度的區塊鏈。狹義是在於區塊鏈原本只是一種數據結構,也就是最常規的鏈表結構,每一個節點(block)都有一個指針指向前一個節點(block),因爲這裏採用的是塊頭block header的數據生成的hash來做爲指針,也就自然的讓任何一個塊的修改,都須要這個塊後面的指針所有從新計算。

**咱們如今習慣的區塊鏈技術實際是以上技術集成的總稱。**能夠這樣來定義:**區塊鏈(Blockchain)**是指經過去中心化和去信任的方式集體維護一個可靠數據庫的技術方案。該技術方案讓參與系統中的任意多個節點,把一段時間系統內所有信息交流的數據,經過密碼學算法計算和記錄到一個數據塊(block),而且生成該數據塊的指紋用於連接(chain)下個數據塊和校驗,系統全部參與節點來共同認定記錄是否爲真。

有了比特幣開創的區塊鏈技術和第一個實際應用,咱們就容易理解其它區塊鏈應用是怎麼回事了。**首先呢,p2p是必不可少的,是區塊鏈應用用來實現分佈式計算的網絡基礎,其次要有數字簽名,目前確定是非對稱加密,通常而言也會用橢圓曲線,由於這是目前最難被破解的,再就是要報文摘要hash函數。**merkle樹及其變種也是主要的利器。

以太坊主要是針對比特幣的腳本系統進行擴展,用虛擬機VM去替代棧式計算,用仿javascript的solidity來替代腳本語言做爲智能合約的語言,以準圖靈完備來代替比特幣的非圖靈完備。用merkle patricia樹來替代merkle樹。就被追捧和成爲了區塊鏈2.0. vitalik更是由此封神,並擁有價值300億美圓的eth。

從這些基礎的技術展開思考,咱們還能夠看到採用p2p來搭建系統從技術層面上帶來相似用RAID替代高可用硬盤的效果,就是能夠用很low的計算機來實現高可用HA(High Availability),從而達到計算成本的下降。推而廣之,就是能夠不用Iaas層就能夠直接開幹SaaS,直接構建應用,這樣就大大擺脫了對AWS和阿里雲的依賴。

本文內容做者:HiBlock區塊鏈社區**「一塊兒寫筆記」**小夥伴——星星之火待燎原

原文首發於今日頭條

瞭解和加入「一塊兒搞事情」請看文末詳細介紹~

image

HiBlock區塊鏈社區邀請您一塊兒搞事情~

一、一塊兒讀代碼 社區網址:http://hiblock.net/topics/node21 一塊兒讀代碼,好比從以太坊源代碼開始

二、一塊兒寫筆記 社區網址:http://hiblock.net/topics/node22 不積跬步無以致千里,每日寫500字左右關於我對區塊鏈的理解,或者針對某一個問題發表本身的觀點,由HiBlock公衆號統一篩選整理對外發布

三、一塊兒譯文檔 社區網址:http://hiblock.net/topics/node23 英文文檔、資訊有太多太多頗有價值的,咱們一塊兒來作知識的搬運工吧

當前一塊兒譯團隊的工做:Solidity官方文檔,參考Github倉庫,智能合約-Solidity官方文檔(1)

四、一塊兒磨課程 社區網址:http://hiblock.net/topics/node24 將專業技術知識分享給更多的人。能夠是一堂課的分享,也能夠是打磨一個系列課程。

若是您要報名以上哪一個活動,請添加微信小助手(baobaotalk_com),而後直接回複姓名+數字【可多選,如Bob 1/2/3】

image

點擊「閱讀原文」進入HiBlock「搞事情」的GitHub頁面~

相關文章
相關標籤/搜索