在比特幣白皮書中靠粪,有三段話很關(guān)鍵的話,解釋了交易 Transactions 是什么毫蚓。
- 雖然數(shù)字簽名(Digital signatures)部分解決了電子現(xiàn)金系統(tǒng)的問題占键,但是仍然需要第三方的支持才能防止雙重支付(double-spending)的話,那么這種系統(tǒng)也就失去了存在的價值元潘。
- 將一枚電子貨幣定義為數(shù)字簽名鏈( a chain of digital signatures)畔乙。電子貨幣從所有者轉(zhuǎn)移給下一個人是通過,所有者使用私鑰翩概,對交易 Transactions 和下一個人的公鑰進(jìn)行數(shù)字簽名 digital signatures牲距,并將數(shù)字簽名附在這枚電子貨幣(數(shù)字簽名鏈)的后面返咱。收款人對數(shù)字簽名進(jìn)行檢驗(yàn),就能校驗(yàn)自己是否收到了電子貨幣牍鞠。
- 在每一筆交易 Transactions 結(jié)束后咖摹,這枚電子貨幣就要被造幣廠回收,而造幣廠將發(fā)行一枚新的電子貨幣皮服;而只有造幣廠直接發(fā)行的電子貨幣楞艾,才算作有效,這樣就能夠防止雙重支付 double-spend龄广。
第一段話硫眯,講清楚了誕生的電子貨幣交易的土壤是數(shù)字簽名。
第二段話择同,講清楚了比特幣中的電子貨幣是什么两入、如何交易的原理。
第三段話敲才,講清楚了比特幣創(chuàng)建和銷毀電子貨幣流程裹纳,保證電子貨幣唯一。
數(shù)字簽名
在密碼學(xué)上紧武,喜歡用 Alice 和 Bob 兩個虛擬人物來舉例的剃氧。Alice 代表路人 A,Bob 代表路人 B阻星。后文會經(jīng)常用到朋鞍。
在現(xiàn)實(shí)世界中,交易達(dá)成基于的是文字形式的簽名妥箕。比如滥酥,Alice 給一張 "Alice 給 Bob 的 100 元" 的支票簽名后,并把通過秘書畦幢,將這張簽名后的支票給了 Bob坎吻, Bob 找專家驗(yàn)證簽名無誤后,確認(rèn)了本次交易宇葱。在互聯(lián)網(wǎng)上瘦真,交易達(dá)成基于的是數(shù)字簽名。
數(shù)字簽名(digital signatures)是基于非對稱加密實(shí)現(xiàn)的黍瞧。先來看下維基百科關(guān)于非對稱加密的定義:
非對稱加密(asymmetric cryptography)吗氏,是密碼學(xué)的一種算法,它需要兩個密鑰雷逆,一個是公鑰,另一個是私鑰污尉;一個用作加密的時候膀哲,另一個則用作解密往产。使用其中一個密鑰把明文加密后所得的密文,只能用相對應(yīng)的另一個密鑰才能解密得到原本的明文某宪;甚至連最初用來加密的密鑰也不能用作解密仿村。
數(shù)字簽名是非對稱加密的一種應(yīng)用方式。數(shù)學(xué)上兴喂,可以通過一個簡單公式來表示蔼囊,整個數(shù)字簽名的大概流程如下:
hash: x = hash(data)
send: c(x) and data
------- network -------
receive: c(x) and data
verify: d(c(x)) = x = hash(data)
- Alice 需要轉(zhuǎn) 100 元電子貨幣給 Bob。Bob 需要一種手段衣迷,驗(yàn)證該交易是來自 Alice畏鼓,且 Alice 不能抵賴。
- Alice 寫好交易信息 data: Alice 給 Bob 100 元電子貨幣壶谒。
- Alice 使用哈希算法生成交易信息的哈希值 x = hash(data)云矫。
- Alice 通過通過隨機(jī)數(shù)生成器生成一對秘鑰,其中一個作為公鑰 d汗菜,一個作為私鑰 c让禀。
- Alice 使用私鑰 c 對交易信息 x 進(jìn)行簽名,得到數(shù)字簽名 c(x)陨界。
- Alice 使用互聯(lián)網(wǎng)將數(shù)字簽名 c(x) 和交易信息 data 傳遞給 Bob巡揍。
- Bob 使用公鑰 d,對數(shù)字簽名進(jìn)行解密 d(c(x)) 得到交易信息哈希值 x菌瘪。
- Bob 用公鑰 d 解密數(shù)字簽名 c(x) 的值得到交易信息的哈希值 x腮敌。
- Bob 用哈希算法生成交易信息的哈希值 hash(data)。
- 如果 Bob 生成的交易信息的哈希值 hash(data) 等于 Alice 生成的交易信息的哈希值 x 麻车,那么 Alice 擁有私鑰缀皱,否則 Alice 沒有私鑰。
- 如果 Alice 抵賴动猬,任何人都可重復(fù) Bob 的校驗(yàn)步驟啤斗,并確認(rèn)交易 data:Alice 給 Bob 100 元電子貨幣。
區(qū)塊鏈研習(xí)社源碼研讀班 蔣宏偉