上一節(jié)課講了區(qū)塊鏈?zhǔn)且环N分布式賬本,那么區(qū)塊鏈應(yīng)用了哪些關(guān)鍵技術(shù)來實現(xiàn)賬本,又是怎么工作的呢?
一、區(qū)塊鏈中的關(guān)鍵技術(shù)
1、區(qū)塊鏈賬本:區(qū)塊鏈就是“區(qū)塊+鏈”,區(qū)塊就是數(shù)據(jù)塊的意思,不同的數(shù)據(jù)塊按照時間先后串聯(lián)在一起就是區(qū)塊鏈。就像會計記賬,可以把每個月份的賬記錄在一個區(qū)塊上,從1月份到12月份,按順序排列,就是一個區(qū)塊鏈。
2、共識機制:所謂共識,就是大家達(dá)成一致,共同遵守的一系列規(guī)則。就像鉆石,本身沒有價值,但當(dāng)大家都認(rèn)可那句:“鉆石恒久遠(yuǎn)、一顆永流傳”之后,鉆石也就有了價值。這就是人們達(dá)成的一種共識。那么在區(qū)塊鏈的世界中,共識算法是一個規(guī)則,每個節(jié)點按照這個規(guī)則去確認(rèn)和同步自己的數(shù)據(jù),從而使所有節(jié)點數(shù)據(jù)保持一致。
3、密碼算法:區(qū)塊鏈由于去中心化的特質(zhì),沒有一個中心機構(gòu)來負(fù)責(zé)數(shù)字貨幣的安全。那么如何保證安全性呢?答案是密碼算法。主要的密碼算法是哈希算法,只能加密不能解密,哈希算法是通過對一段不定長數(shù)據(jù)計算后得出的一段固定長度的值,輸出和輸入是唯一對應(yīng)的。當(dāng)修改輸出值時,輸出值也會變化。而且不能從輸出值反向推算出輸入值,算法的單向性保證了安全性。
4、公鑰、私鑰和地址:區(qū)塊鏈采用的是非對稱加密的方式,先生成一對密鑰——公鑰和私鑰。對外公開的密鑰叫公鑰,不公開的密鑰叫私鑰。公鑰就像銀行的賬戶,私鑰就像該賬戶的密碼或者賬戶所有者的簽名。私鑰可以計算出公鑰,公鑰經(jīng)雙哈希運算得到的字符串,被稱為地址。?私鑰的持有者才是數(shù)字貨幣的持有者。
5、時間戳:時間戳用于記錄當(dāng)前區(qū)塊數(shù)據(jù)的寫入時間。每一個隨后區(qū)塊中的時間戳都是對前一個時間戳的增強,形成一個時間遞增的鏈條。時間戳記錄了區(qū)塊鏈上什么時間發(fā)生了什么事情。時間戳可以作為存在性證明,保證了區(qū)塊鏈數(shù)據(jù)的不可篡改和不可偽造。這也為區(qū)塊鏈技術(shù)應(yīng)用于公正、知識產(chǎn)權(quán)等時間敏感領(lǐng)域提供了可能。
二、區(qū)塊鏈的工作流程
區(qū)塊鏈組成示意圖
區(qū)塊鏈中的每個區(qū)塊中主要包含了區(qū)塊頭、交易事務(wù)、交易計數(shù)器和區(qū)塊大小等數(shù)據(jù)。
區(qū)塊頭主要包括上一區(qū)塊的哈希值,用于保證區(qū)塊按順序鏈接;時間戳,記錄該區(qū)塊的生成時間。
交易事務(wù)記錄了每筆交易的轉(zhuǎn)出方、收入方、金額及轉(zhuǎn)出方的數(shù)字簽名,是每個區(qū)塊內(nèi)的主要內(nèi)容。
交易計數(shù)器記錄每個區(qū)塊中包含的交易數(shù)量。區(qū)塊大小標(biāo)識每個區(qū)塊數(shù)據(jù)的大小。
區(qū)塊頭中的梅克爾根關(guān)聯(lián)了區(qū)塊中的交易事務(wù),使區(qū)塊頭和交易事務(wù)是一體的。每個區(qū)塊之間通過區(qū)塊頭哈希值串聯(lián)起來。這樣就把區(qū)塊頭和區(qū)塊體鏈接起來,后一個區(qū)塊和前一個區(qū)塊鏈接起來。
工作流程
當(dāng)區(qū)塊鏈中有新的交易發(fā)生的時候,流程如下:
1、Alice向Bob轉(zhuǎn)賬,由Alice發(fā)起一筆交易,帶上自己的私鑰簽名,制成交易單;
2、Alice將交易單廣播至全網(wǎng),每個節(jié)點都將收到的交易信息放入一個區(qū)塊中;
3、通過競爭機制,搶到記賬權(quán)的節(jié)點把這筆交易記錄到區(qū)塊鏈中,并廣播至全網(wǎng);
4、全網(wǎng)節(jié)點核對該區(qū)塊記賬的正確性,如果驗證通過就記錄到區(qū)塊鏈中。
5、轉(zhuǎn)賬完成。