比特幣是一個(gè)存儲(chǔ)和消費(fèi)數(shù)字貨幣的革命性方式,并且有著變革其他領(lǐng)域的潛力备闲。無(wú)須成為一個(gè)數(shù)學(xué)家或密碼學(xué)家, 你就可以理解它是怎么回事。當(dāng)開始看到整個(gè)系統(tǒng)是如何形成時(shí),你可能會(huì)變得十分興奮俐末。本文是三篇系列文章中的第一篇。
假設(shè)通過(guò)互聯(lián)網(wǎng)給你發(fā)送一部電影或是一首歌奄侠,我會(huì)將一個(gè)文件添加到郵件中卓箫。一旦我點(diǎn)擊了發(fā)送,那么你就會(huì)收到垄潮。收到以后烹卒,你可以選擇觀看這部電影闷盔,或者是刪除它。你可以對(duì)這個(gè)電影采取任何操作旅急。
但是記追旯础:我仍然擁有一份拷貝。
這就是典型地在互聯(lián)網(wǎng)上數(shù)字信息的移動(dòng)藐吮。你并不是真的 轉(zhuǎn)移(transfer) 內(nèi)容溺拱,而是對(duì)它進(jìn)行了 拷貝(copy)。直到目前為止谣辞,這種方式都十分行得通:但是這可能有點(diǎn)不太恰當(dāng)迫摔,畢竟復(fù)制一首歌或是一部電影并不太可能會(huì)對(duì)經(jīng)濟(jì)造成危害。
但是現(xiàn)在來(lái)考慮一下復(fù)制金錢(copy money)潦闲。
如果我給你發(fā)送一美元攒菠,非常重要的一點(diǎn)是,我無(wú)法保留這一美元的副本歉闰。通過(guò)郵件來(lái)產(chǎn)生無(wú)限的數(shù)字貨幣辖众,可能一開始看起來(lái)很有吸引力,但是如果每個(gè)人都開始這么干的話會(huì)發(fā)生什么事情呢和敬?這會(huì)導(dǎo)致肆虐的貨幣膨脹凹炸,從而使得經(jīng)濟(jì)因此崩塌。
傳統(tǒng)上昼弟,在有線傳輸和使用借記卡的世界里啤它,數(shù)字貨幣是由中心化機(jī)構(gòu)進(jìn)行跟蹤以防止復(fù)制。比如說(shuō)舱痘,銀行的數(shù)據(jù)庫(kù)會(huì)確認(rèn)誰(shuí)到底擁有了多少錢变骡。這個(gè)系統(tǒng)依賴于中心化的機(jī)構(gòu),我們大都已經(jīng)熟悉這個(gè)概念芭逝。當(dāng)然塌碌,這個(gè)中心化機(jī)構(gòu)對(duì)我們的錢有著絕對(duì)的控制權(quán),因?yàn)槲覀兊腻X只是銀行數(shù)據(jù)庫(kù)里的一個(gè)數(shù)字而已旬盯。
但是台妆,如果存在另外一種方式,會(huì)發(fā)生什么呢胖翰?相對(duì)于通過(guò)不可靠的中心化機(jī)構(gòu)來(lái)確認(rèn)我們的財(cái)產(chǎn)所有接剩,如果由一個(gè)不是僅由單方控制的分布式機(jī)構(gòu)來(lái)保證這些信息,會(huì)發(fā)生什么呢萨咳?如果我們的錢是否有價(jià)值懊缺,不是因?yàn)槲覀兿嘈疟槐澈笳牧α浚且驗(yàn)槲覀兿嘈艛?shù)學(xué)的力量某弦?
這就引出了比特幣桐汤。
引入比特幣
比特幣是一個(gè)數(shù)字貨幣系統(tǒng)而克,它并不從屬于任何政府或機(jī)構(gòu)。
這可能會(huì)有點(diǎn)令人疑惑怔毛,上面說(shuō)比特幣是一個(gè)系統(tǒng)员萍,實(shí)際上,比特幣也是貨幣本身的代名詞拣度。比特幣系統(tǒng)創(chuàng)建于 2009 年碎绎,但是做為貨幣單位意義上的比特幣卻是通過(guò)一個(gè)叫做 挖礦 的持續(xù)過(guò)程不斷生成。聽起來(lái)有點(diǎn)像是挖黃金抗果,不過(guò)這是 21 世紀(jì)的數(shù)字黃金擦秽。
在比特幣網(wǎng)絡(luò)中沃暗,所有交易都永久記錄于一個(gè)長(zhǎng)長(zhǎng)的列表之中魄藕,這個(gè)列表就叫做區(qū)塊鏈颤专。區(qū)塊鏈并不是由一個(gè)中心的權(quán)威機(jī)構(gòu)保護(hù)的秘密列表。它是一個(gè)分布式的公開列表逮光,每個(gè)參與其中的計(jì)算機(jī)都有一個(gè)備份代箭。
比特幣區(qū)塊鏈?zhǔn)?strong>不可更改,公開涕刚,分布式的賬簿:
不可更改嗡综。這是指一旦一個(gè)記錄已經(jīng)在區(qū)塊鏈中存在了幾小時(shí),再去改變或是清除該條記錄都是行不通的杜漠。因?yàn)閹讉€(gè)小時(shí)以后极景,會(huì)有很多其他交易基于該條記錄所構(gòu)建。要想改變這條記錄驾茴,就要改變所有基于該記錄的所有后續(xù)記錄盼樟,隨著后續(xù)記錄的不斷增加,這將變得無(wú)法更改锈至。
公開恤批。這是指任何人都能夠查看區(qū)塊鏈,而不僅僅是銀行職員裹赴。這并不意味著你可以精確地看到誰(shuí)正在發(fā)送或者接收比特幣,因?yàn)橛涗浂际?strong>匿名的 -- 通過(guò)使用匿名來(lái)模糊實(shí)體信息诀浪。
分布式棋返。這是指全世界的電腦會(huì)維護(hù)一個(gè)同步的區(qū)塊鏈拷貝。并沒(méi)有主本或副本的概念雷猪,所有的拷貝都是相同的睛竣。
最后,賬簿指的是區(qū)塊鏈?zhǔn)且幌盗薪灰椎募锨笠 H绻?Venmo 交易列表的話射沟,你完全可以將區(qū)塊鏈看做是 Venmo 的交易列表殊者。
這個(gè)分布式賬本之所以叫做“區(qū)塊鏈”,是因?yàn)槊總€(gè)單一的交易被通過(guò)一個(gè)更大的單位“區(qū)塊(block)”進(jìn)行了整合验夯,而這些區(qū)塊會(huì)被按照順序相互連接起來(lái)猖吴。這比一筆一筆的添加交易要快得多,生成一個(gè)新的區(qū)塊大概需要十分鐘挥转。
為了更好的闡釋這個(gè)不可更改海蔽,公開,分布式賬本的威力绑谣,讓我們假設(shè)一個(gè)常見的場(chǎng)景党窜,這個(gè)場(chǎng)景會(huì)涉及 5 美元比特幣交易。(雖然一個(gè)比特幣的價(jià)值可能會(huì)時(shí)高時(shí)低借宵,但是 5 美元基本上只是一個(gè)比特幣的一小部分幌衣。 )
在我們假設(shè)的場(chǎng)景中,我的朋友 Flizabeth 給我發(fā)送了價(jià)值 5 美元的比特幣壤玫,這筆交易會(huì)被記錄在區(qū)塊鏈中 -- 所有的交易都是被記錄在區(qū)塊鏈中豁护。那么,我就擁有了這 5 美元的比特幣垦细,然后我可以把它發(fā)送給你择镇,因?yàn)閰^(qū)塊鏈的每一個(gè)拷貝 Flizabeth 的 5 美元比特幣。在這個(gè)過(guò)程中括改,我腻豌,你,Elizabeth 都沒(méi)有向一個(gè)中心化的權(quán)威數(shù)據(jù)庫(kù)請(qǐng)求誰(shuí)擁有多少錢這樣的信息嘱能,也沒(méi)有請(qǐng)求任何權(quán)限吝梅。授權(quán)是去中心化的,它存在區(qū)塊鏈的每一個(gè)拷貝中惹骂,無(wú)處不在苏携。
你可能會(huì)想問(wèn):Elizabeth 是從哪兒獲得發(fā)給我的比特幣?
一個(gè)簡(jiǎn)單的回答是可能有某個(gè)人發(fā)給了 Elizabeth 比特幣对粪,這也是大多數(shù)人得到比特幣的方式右冻。
但是這些比特幣最初必然是被創(chuàng)造出來(lái)的,那么它是怎么創(chuàng)造出來(lái)的呢著拭?
一個(gè)比特幣是如何誕生的
美元是由美國(guó)政府印刷的纱扭,其他傳統(tǒng)貨幣也是由它們的政府發(fā)行而來(lái)。很久以前儡遮,美元是由在美國(guó)財(cái)政部等量的黃金支持的乳蛾。在那段時(shí)間,要想創(chuàng)造更多貨幣就需要更多等量的黃金,因此挖黃金十分流行肃叶。
比特幣也是通過(guò)一個(gè)叫做 挖礦 的過(guò)程而來(lái)蹂随。它是數(shù)字挖礦,是通過(guò)計(jì)算機(jī)和軟件因惭,而不是炸藥和鐵鏟岳锁。為了能夠?qū)⑿乱粋€(gè)新的區(qū)塊加入到區(qū)塊鏈中,必須要解決一個(gè)非常困難的數(shù)學(xué)題筛欢。第一個(gè)解決了這個(gè)難題的“礦工”就會(huì)獲得新創(chuàng)造出來(lái)的比特幣浸锨。這就是比特幣的挖礦。
換句話說(shuō)版姑,挖礦做了兩件事:
- 向區(qū)塊鏈中加入新的區(qū)塊
- 創(chuàng)造新的比特幣
礦工競(jìng)相解決的數(shù)學(xué)難題是一個(gè)叫做“哈现眩”的問(wèn)題。
初見哈希
一個(gè)哈希就是一個(gè)數(shù)字指紋剥险,因?yàn)樗ㄒ蛔R(shí)別了一串?dāng)?shù)字信息 -- 無(wú)論該信息是一張圖片聪蘸,一個(gè)圖片相冊(cè),一部電影表制,一串密碼健爬,文本,還是其他的任何內(nèi)容么介。它是由數(shù)字信息經(jīng)過(guò)一個(gè)叫做“哈夏茸瘢”的過(guò)程衍生而來(lái)。它的形式可以是一串字母壤短,數(shù)字和其他符號(hào)设拟。
哈希是計(jì)算機(jī)科學(xué)中的核心概念之一,廣泛用于諸多場(chǎng)景久脯。為了增強(qiáng)安全性纳胧,在線服務(wù)經(jīng)常會(huì)存儲(chǔ)密碼的哈希而不是實(shí)際的密碼信息,當(dāng)你登錄的時(shí)候帘撰, 系統(tǒng)會(huì)比較密碼的哈希而非原始密碼跑慕。Facebook 使用哈希來(lái)檢查上傳圖片是否違規(guī)。在 Facebook摧找,不會(huì)有人真的用肉眼檢查每張照片是否是暴力或色情圖片核行。相反,F(xiàn)acebook 會(huì)預(yù)先針對(duì)被認(rèn)為是違規(guī)的圖片蹬耘,進(jìn)行哈希钮科,創(chuàng)建一個(gè)違規(guī)內(nèi)容的哈希列表。每當(dāng)一個(gè)新的圖片被上傳到Facebook婆赠,它會(huì)被同樣的函數(shù)生成一個(gè)哈希。產(chǎn)生的結(jié)果哈希會(huì)與違禁內(nèi)容的哈希相互比較 -- 如果它們相匹配,F(xiàn)acebook 就會(huì)知道這個(gè)圖片是違禁照片休里。
典型地蛆挫,當(dāng)軟件執(zhí)行一個(gè)哈希函數(shù)時(shí),它會(huì)接受輸入數(shù)據(jù) -- 比如一張照片 -- 然后輸出一個(gè)天書一樣的字符串妙黍,這個(gè)字符串就是哈希了悴侵。
舉個(gè)例子,我們用叫做 SHA-256 的一個(gè)哈希函數(shù)來(lái)計(jì)算一個(gè)小狗圖片的哈希拭嫁。
顯然可免,大家應(yīng)該都能看得出,這張小狗的圖片不會(huì)是 Facebook 的違禁圖片做粤。不過(guò)浇借,F(xiàn)acebook 里面的人不會(huì)真的去看這張照片,而是使用相關(guān)程序檢測(cè)這張圖片的哈希怕品,如下:
8EC9D4718F919C6087CA589EDA09E7DD9A7ACCDB820F42B4196E1D0D4BEDE77A
這就是上面那張圖片的 SHA-256 哈希結(jié)果妇垢,采用 16 進(jìn)制表示。是不是沒(méi)有之前的小狗可愛了:).
哈希函數(shù)一個(gè)非常有趣的特性是肉康,只要我們稍微改變一下輸入闯估,輸出就會(huì)完全不同。比如吼和,如果我們改變這張圖片的一個(gè)像素點(diǎn)涨薪,在小狗的眼睛上面放一個(gè)跳蚤大的黑色像素點(diǎn):
盡管只是改了一個(gè)像素值,但是再次對(duì)圖片進(jìn)行哈希炫乓,我們會(huì)得到一個(gè)完全不同的哈希值刚夺,:
039E1AF92F7D00775ECE35C2216FC3F7F0BBCD31F912A105D2601380D8DEABA2
現(xiàn)在,接下來(lái)我們應(yīng)該使用真實(shí)內(nèi)容和真實(shí)的哈希值了厢岂,但是由于哈希的表現(xiàn)形式不太友好光督,肉眼很難進(jìn)行鑒別和區(qū)分。故而塔粒,我們使用表情符號(hào)(emoji)來(lái)代表輸入和輸出结借。在上面的例子中,我們用貓臉來(lái)表示輸入(content to be hashed),綬帶表示輸出(結(jié)果哈希):
想象Facebook在兩張違禁圖片 ?? 和 ? , 執(zhí)行一個(gè)哈希函數(shù)卒茬,得到結(jié)果哈希 ?? 和 ?? 船老。
然后,有人上傳了一張圖片 ? 圃酵,因?yàn)?Facebook 還不知道它是否違規(guī)柳畔,所以 Facebook 會(huì)調(diào)用程序?qū)D片進(jìn)行哈希,結(jié)果是
盡管沒(méi)有人真的去用肉眼觀測(cè)過(guò)這張圖片郭赐,但是 Facebook 已經(jīng)知道它屬于違禁圖片薪韩,因此圖片的哈希匹配了。沒(méi)有人需要去直接查看新上傳的輸入,只要它有著與已有違禁圖片的相同哈希俘陷,我們就認(rèn)為這是違規(guī)圖片罗捎。
圖片識(shí)別僅僅是哈希的其中一個(gè)應(yīng)用。創(chuàng)造新的比特幣和將新的交易加入到區(qū)塊鏈中的比特幣挖礦拉盾,是另一個(gè)應(yīng)用桨菜。
至此,在本系列的第一篇捉偏,我們知道了比特幣是一個(gè)去中心化的貨幣倒得,并非由任何的政府或金融機(jī)構(gòu)發(fā)行,還知道了什么是哈希夭禽。在下一篇霞掺,我們將會(huì)了解比特幣礦工是如何利用哈希來(lái)創(chuàng)造比特幣,密碼學(xué)是如何在完全可轉(zhuǎn)移且不可逆的情況下驻粟,使得比特幣具有唯一性和不可復(fù)制性根悼,。