區(qū)塊鏈與比特幣(1)
????比特幣協(xié)議的五大核心特征包括:數(shù)字簽名(Digital?Signature),公共賬本(the?ledger?is?the currency.) ,去中心化存儲(chǔ)(Decentralize),?工作量的證明(Proof?of?work),區(qū)塊鏈(block?chain)。
????
????首先是電子簽名,在比特幣協(xié)議中,只認(rèn)可具有合法簽名的交易,并且會(huì)將交易廣播到網(wǎng)絡(luò)中的所有用戶。這里的數(shù)字簽名技術(shù)就是采用一個(gè)公私鑰對(duì),私鑰用于簽名加密過(guò)程,用戶私有本地保存,公鑰則廣播公開(kāi),提供給網(wǎng)絡(luò)中的其他用戶來(lái)解密驗(yàn)證。交易的簽名人是當(dāng)前bitcoin的所有者。
????注意這里的簽名過(guò)程與非對(duì)稱加密的過(guò)程是不同的,公私鑰的作用恰好相反。
????簽署函數(shù)( 信息,私鑰 )= 簽名? ? ?驗(yàn)證函數(shù)(信息,?簽名,公鑰)=正/否
????這里所使用的加密解密函數(shù)沒(méi)有具體規(guī)定,比較的過(guò)程就是看簽名與信息是否對(duì)應(yīng)的上。?但是加密的信息不是交易記錄本身,而是對(duì)交易信息使用SHA256加密算法,生成的固定為256bit長(zhǎng)度的哈希值,通常會(huì)在每一筆交易記錄中添加交易所獨(dú)有的信息,如ID等,增加原始信息的獨(dú)特性,區(qū)分多筆相同內(nèi)容的交易,也可以避免因?yàn)榻灰變?nèi)容長(zhǎng)度較短而容易復(fù)制的情況。
????公共賬本,因?yàn)槊棵脩舻谋忍貛啪哂胁豢沙?,所以在交易發(fā)生之前,必須知道完整的交易歷史。賬本是分布式放置的,每名用戶均有一個(gè)賬本的記錄,每次發(fā)生交易后,比較賬本記錄后,將交易記錄在賬本上后廣播給其他用戶知曉。
????去中心化,只要超過(guò)50%認(rèn)可了某個(gè)賬本的記錄,那么經(jīng)過(guò)廣播后此賬本內(nèi)所包含的交易內(nèi)容就會(huì)被認(rèn)為是真實(shí)發(fā)生的。既沒(méi)有集中存儲(chǔ)管理賬本信息的用戶,也不存在準(zhǔn)確的賬本版本,只要經(jīng)過(guò)了網(wǎng)絡(luò)內(nèi)用戶的認(rèn)可就是真實(shí)的賬本。
????工作量的證明,這個(gè)利用了hash函數(shù)SHA256的不可逆的特性,輸入任意長(zhǎng)度的信息,輸出為256bit長(zhǎng)度的摘要值。輸入值的微小變化會(huì)引起輸出摘要的巨大變動(dòng),因而無(wú)法使用摘要對(duì)輸入信息進(jìn)行預(yù)測(cè)估計(jì),當(dāng)前計(jì)算條件下逆向計(jì)算是不現(xiàn)實(shí)的。

????因而我們可以利用這個(gè)特性,在每個(gè)賬本的末端附上某個(gè)數(shù)字使得整個(gè)賬本記錄信息經(jīng)過(guò)SHA256后的摘要值,前N位為0,這個(gè)N可能會(huì)不斷變化,因?yàn)闊o(wú)法提前預(yù)估摘要值,只能挨個(gè)數(shù)字進(jìn)行嘗試,這個(gè)過(guò)程較漫長(zhǎng),得到的結(jié)果就可以用作自己工作量的體現(xiàn),其他用戶檢驗(yàn)的時(shí)候只需進(jìn)行一次SHA256算法既可得知是否成立。
????