這個(gè)是誤解最多的部分,因?yàn)楹芏嗳艘惶岬絽^(qū)塊鏈就只覺(jué)得是這個(gè)。誠(chéng)然,這部分很重要,而且確實(shí)區(qū)塊鏈也因此得名,但這只是區(qū)塊鏈的定義的一部分。
這個(gè)部分的兩個(gè)核心要點(diǎn)是:(1)密碼學(xué)哈希函數(shù),(2)非對(duì)稱加密。
兩個(gè)都是密碼學(xué)的基礎(chǔ)概念,網(wǎng)上都有非常清晰的定義,我只簡(jiǎn)單說(shuō)下:
(密碼學(xué))哈希函數(shù):一個(gè)函數(shù)Y=H(X),有如下性質(zhì):1,有X可以很容易算出Y;2,有Y不可能算出X;3,有Y不可能找到另一個(gè)X'使得H(X')=Y;3.5,如果X和X'相差很小,H(X)和H(X')則完全不相關(guān)。
這東西主要用于驗(yàn)證信息完整性——在一個(gè)信息后面放上這個(gè)信息的哈希值,這個(gè)值很小,例如256bit,而且計(jì)算方便。收到信息之后收信人再算一遍哈希值,對(duì)比兩者就知道這條信息是否被篡改過(guò)了。如果被篡改過(guò),哪怕只有一bit,整個(gè)哈希值也會(huì)截然不同。而根據(jù)哈希函數(shù)的性質(zhì),沒(méi)有人能夠偽造出另一個(gè)消息具有同樣的哈希值,也就是說(shuō)篡改過(guò)的數(shù)據(jù)完全不可能通過(guò)哈希校驗(yàn)。
非對(duì)稱加密:這東西很好理解——對(duì)稱加密就是有個(gè)密鑰,可以理解成保險(xiǎn)箱鑰匙,你把消息加密變成密文,沒(méi)有人能看懂這是啥,然后同一把鑰匙解密成原來(lái)的消息。
非對(duì)稱加密就是有兩把鑰匙,一把叫公鑰,一把叫私鑰,用其中一把加密的話,只能用另一把解密,反之亦然。另一個(gè)重要的性質(zhì)是,給你密文,明文和其中一把鑰匙,你還是解不出來(lái)另一把鑰匙是啥。原理基本上是基于一些困難數(shù)學(xué)問(wèn)題,例如因數(shù)分解和離散對(duì)數(shù),常用的有RSA,Diffie-Hellman和ECC(橢圓曲線),比特幣用的是橢圓曲線。
非對(duì)稱加密除了和對(duì)稱加密一樣用于信息加密之外,還有另一個(gè)用途,就是身份驗(yàn)證。因?yàn)橥ǔG闆r我們假設(shè)一對(duì)公私鑰,公鑰是公開(kāi)的,而私鑰只有本人有,于是一個(gè)人如果有對(duì)應(yīng)的私鑰,我們就可以認(rèn)定他是本人。其中一個(gè)重要的應(yīng)用就是數(shù)字簽名——某個(gè)消息后面,發(fā)信人對(duì)這個(gè)消息做哈希運(yùn)算,然后用私鑰加密。接著收信人首先對(duì)消息進(jìn)行哈希運(yùn)算,接著用相應(yīng)的公鑰解密數(shù)字簽名,再對(duì)比兩個(gè)哈希值,如果相同,就代表這個(gè)消息是本人發(fā)出的而且沒(méi)有被篡改過(guò)。
以上是基礎(chǔ)知識(shí),至于區(qū)塊鏈怎么實(shí)現(xiàn)的,很簡(jiǎn)單:
交易(數(shù)據(jù))寫(xiě)在區(qū)塊里。
第一個(gè)區(qū)塊叫創(chuàng)世區(qū)塊,寫(xiě)啥都行。
從第二個(gè)區(qū)塊開(kāi)始,每個(gè)區(qū)塊的第一部分有前一區(qū)塊的哈希值。此外,區(qū)塊里的每一筆交易(數(shù)據(jù)),都有發(fā)起人的數(shù)字簽名來(lái)保證真實(shí)性和合法性。于是,先前區(qū)塊里的任何數(shù)據(jù)都不可被篡改,原因見(jiàn)上。
到這為止有人可能會(huì)問(wèn):為什么要弄個(gè)鏈啊?直接所有數(shù)據(jù)加個(gè)哈希值不就行了?
因?yàn)?mdash;—這個(gè)數(shù)據(jù)庫(kù)并不是靜止的啊。
數(shù)據(jù)庫(kù)的數(shù)據(jù)是會(huì)增加的,而每次增加的數(shù)據(jù),就是一個(gè)區(qū)塊,于是這些生成時(shí)間不同的區(qū)塊,就以這種形式鏈在一起了。
至于如何增加區(qū)塊,就涉及到第三個(gè)部分——共識(shí)算法。
新聞熱點(diǎn)
疑難解答
圖片精選