每天五分鐘,玩轉(zhuǎn)區(qū)塊鏈(5):區(qū)塊鏈關(guān)鍵技術(shù)

鏈?zhǔn)浇Y(jié)構(gòu)

區(qū)塊鏈之所以被稱為“鏈”,就是由于其數(shù)據(jù)結(jié)構(gòu)的奇妙規(guī)劃:多個收支記載打包為一個數(shù)據(jù)塊(第一條記載指定為挖礦所得),數(shù)據(jù)塊附加有描繪信息(頭部信息),其間除了版本號/數(shù)據(jù)校驗值/時刻戳/難度值/隨機(jī)數(shù)等慣例信息外,還包含了前一個數(shù)據(jù)塊的哈希值,這也是區(qū)塊鏈機(jī)制中,數(shù)據(jù)不行修正的原因---一切數(shù)據(jù)都是通過這種鏈狀的結(jié)構(gòu)鏈接起來。每個數(shù)據(jù)塊都是通過很多核算才打包的,修正中心數(shù)據(jù)意味著要修正這以后一切的數(shù)據(jù),除非具有超級核算才能,或許說全網(wǎng)核算才能的一半以上,這也就是所謂的“51%進(jìn)犯”,在核算才能呈現(xiàn)理論機(jī)制等級的提高之前,咱們不必憂慮首要數(shù)字錢銀的“51%進(jìn)犯”問題。

鏈?zhǔn)降臄?shù)據(jù)結(jié)構(gòu)中,存儲的實際上是一切買賣的記載,所以,又被成為“賬本”,或許ledger。

在源碼的 src/primitives/block.h 中,能夠查看 CBlock的結(jié)構(gòu)信息。文件中也包含了對區(qū)塊數(shù)據(jù)的描繪:節(jié)點搜集買賣數(shù)據(jù)進(jìn)行打包,不斷測驗隨機(jī)數(shù)進(jìn)行哈希核算,似的核算結(jié)果契合POW工作量證明機(jī)制的條件,一旦到達(dá)條件,既是挖塊成功,節(jié)點會將信息廣播到網(wǎng)絡(luò)中,買賣信息的第一條數(shù)據(jù)是特別界說,其間記載的是當(dāng)時區(qū)塊的挖礦所得。

時刻戳

區(qū)塊鏈技能要求取得記賬權(quán)的節(jié)點有必要在當(dāng)時數(shù)據(jù)區(qū)塊頭中加蓋時刻戳,標(biāo)明區(qū)塊數(shù)據(jù)的寫入時刻.因而,主鏈上各區(qū)塊是依照時刻次序順次排列的.時刻戳技能自身并不雜亂,但其在區(qū)塊鏈技能中的應(yīng)用是具有重要意義的立異.時刻戳能夠作為區(qū)塊數(shù)據(jù)的存在性證明(Proof of existence),有助于構(gòu)成不行篡改和不行假造的區(qū)塊鏈數(shù)據(jù)庫,從而為區(qū)塊鏈應(yīng)用于公證、知識產(chǎn)權(quán)注冊等時刻敏感的領(lǐng)域奠定了根底.更為重要的是,時刻戳為未來根據(jù)區(qū)塊鏈的互聯(lián)網(wǎng)和大數(shù)據(jù)增加了時刻維度,使得通過區(qū)塊數(shù)據(jù)和時刻戳來重現(xiàn)歷史成為可能。

P2P網(wǎng)絡(luò)

點對點技能并不新鮮,咱們之前經(jīng)常聽到的“P2P下載”也是根據(jù)此機(jī)制。相關(guān)于傳統(tǒng)的server-client方法效勞,P2P的一切節(jié)點都處于對等地位、都具有全量數(shù)據(jù),每一個節(jié)點既是server也是client,這使的體系全體的可擴(kuò)展性、健壯性、功能等方面都十分優(yōu)異。在區(qū)塊鏈技能中,也意味著,任何接入者都有權(quán)獲取一切的賬目信息(公有鏈、聯(lián)盟鏈、私有鏈的劃分咱們在未來獨(dú)自說明),在源碼的 src/net.cpp ,net.h中有P2P相關(guān)的實現(xiàn)。

為了使體系在啟動時主動取得其他節(jié)點的信息,需求有至少一個“種子地址”,所以,在源碼的src/chainparams.cpp 中設(shè)定了多個種子地址(詳見 vSeeds.emplace_back 調(diào)用的參數(shù)),這都是能夠繼續(xù)安穩(wěn)供給效勞的節(jié)點。一起程序還供給了指定節(jié)點的參數(shù)。

一致算法

一致算法有很多種,咱們以比特幣為例,比特幣運(yùn)用工作量證明機(jī)制(POW)的一致算法。這能夠說是經(jīng)濟(jì)學(xué)和核算機(jī)學(xué)的一種立異:由核算機(jī)的工作量來證明其無差別的勞作價值。從概率上講,核算節(jié)點算力占全網(wǎng)算力的份額,既是它挖礦成功的概率。也正是由于這個機(jī)制,使得挖礦、礦機(jī)、礦池成為數(shù)字錢銀產(chǎn)業(yè)鏈條中的重要部分。當(dāng)然這也是數(shù)字錢銀被詬病的地方:人為制造出來的社會資源的耗費(fèi)。支持者以為這是一種合理的機(jī)制,正如實體經(jīng)濟(jì)中的采礦---付出代價取得礦藏,這就是礦藏的價值根底。反對者以為這種資源耗費(fèi)是一種無謂的糟蹋,并以此確定數(shù)字錢銀沒有價值。

POW機(jī)制中,詳細(xì)核算的本錢耗費(fèi)在了哪里呢?就是很多的SHA256核算(拜見 src/crypto/sha256.cpp )。

除工作量證明,數(shù)字錢銀常見的還有股權(quán)證明(POS,Proof of Stake),委任權(quán)益證明(DPOS,Delegated Proof of Stake)。

加密算法

加密算法的代表有hash加密和橢圓曲線。

hash加密:hash函數(shù)是將任意長度的輸入,通過不行逆的處理進(jìn)程,轉(zhuǎn)換為固定長度的輸出內(nèi)容。首要有兩大類:Message Digest Algorithm(最常見的MD5,以及其前身MD2,MD3,MD4)以及Secure Hash Algorithm(常見的SHA-1,SHA-2,SHA-3,RIPEMD160)。

已然hash算法是把內(nèi)容處理之后得到限長度內(nèi)容,那理論上就存在重復(fù)的可能(磕碰),隨著核算才能的增強(qiáng),MD5、SHA系列的函數(shù)都面臨著磕碰進(jìn)犯,事實上,SHA-3就是在這樣的環(huán)境下誕生的更高等級的處理機(jī)制。而未來,加密機(jī)制和核算才能一定是循環(huán)遞進(jìn)的進(jìn)程。

橢圓曲線算法:咱們知道,比特幣錢包中包含了一系列的密鑰對,每個密鑰對是由一個私鑰和公鑰構(gòu)成。公鑰由私鑰生成、公鑰再生成比特幣地址。其間公鑰和私鑰的生成,用到了橢圓曲線算法。詳細(xì)機(jī)制咱們在這里不展開講,可搜索引擎查詢。與傳統(tǒng)的RSA非對稱加密算法比較,橢圓曲線算法安全性更高、核算量更小,所占用的存儲空間也更小,這關(guān)于每個節(jié)點都記載完整買賣信息的數(shù)字錢銀來講,是極其重要的,相關(guān)函數(shù)實現(xiàn),在代碼的 src/crypto/ 目錄下。

默克爾樹

Merkle Tree(默克爾樹)能夠看做Hash List的泛化(Hash List能夠看作一種特別的Merkle Tree,即樹高為2的多叉Merkle Tree)。

在最底層,和哈希列表相同,咱們把數(shù)據(jù)分紅小的數(shù)據(jù)塊,有相應(yīng)地哈希和它對應(yīng)。但是往上走,并不是直接去運(yùn)算根哈希,而是把相鄰的兩個哈希合并成一個字符串,然后運(yùn)算這個字符串的哈希,這樣每兩個哈希就成婚生子,得到了一個”子哈?!啊<偃缱畹讓拥墓?倲?shù)是奇數(shù),那到最后必定呈現(xiàn)一個單身哈希,這種狀況就直接對它進(jìn)行哈希運(yùn)算,所以也能得到它的子哈希。所以往上推,依然是相同的方法,能夠得到數(shù)目更少的新一級哈希,終究必定構(gòu)成一棵倒掛的樹,到了樹根的這個方位,這一代就剩余一個根哈希了,咱們把它叫做 Merkle Root,整個結(jié)構(gòu)如下圖所示:

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 區(qū)塊鏈系統(tǒng)的核心之二-加密技術(shù) 加密技術(shù)主要是用來解決區(qū)塊鏈系統(tǒng)記錄的數(shù)據(jù)的所有權(quán)問題。 1哈希算法 1)...
    yrm23閱讀 1,856評論 0 4
  • 昨天星期五上午,由于整理“八桂畫童”畫稿太過投入,忘記了上午5年級四班的英語課。當(dāng)我意識到我的大意之時,離第三節(jié)下...
    愛吃魚的小白羊閱讀 193評論 5 2
  • 陳雪凡網(wǎng)絡(luò)焦點九期初級堅持分享 第74天 2018-05-09洛陽 以前看到一句話“原諒別人就是原諒自己”...
    樂CXF慧閱讀 181評論 0 0
  • 序章 外面下著小雨。 “敬一,你找我是因為找到它了嗎?” “是的蘇菲婭,我已經(jīng)找到答案了?!?她默默低下頭半晌,似...
    一個有信仰的人閱讀 1,034評論 0 0
  • (1) 我認(rèn)識的男生里有兩個男生一直堅持要送我回宿舍的,z同學(xué)就是其中一個。就像學(xué)霸是學(xué)渣天敵,z同學(xué)是讓我吃虧最...
    穿山甲說閱讀 547評論 0 0

友情鏈接更多精彩內(nèi)容