邱宜干
摘 要:與傳統(tǒng)的電子貨幣相比,比特幣具有去中心化、匿名化、存量有限、代碼開(kāi)放、可追溯、不可逆等特點(diǎn)。在闡釋散列、工作量證明、密鑰、交易、區(qū)塊、挖礦等基本概念的基礎(chǔ)上,分析比特幣的生成機(jī)理。比特幣每個(gè)賬戶(hù)的余額都可以通過(guò)對(duì)主區(qū)塊鏈進(jìn)行計(jì)算得到,因而不需要單獨(dú)記錄。因此,比特幣賬戶(hù)安全管理的關(guān)鍵就是用戶(hù)私鑰的管理。
關(guān)鍵詞:比特幣;生成機(jī)理;工作量證明;主區(qū)塊鏈
中圖分類(lèi)號(hào):F820 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-291X(2018)18-0071-01
比特幣(Bitcoin)是一種用戶(hù)自治的、全球通用的加密電子貨幣,2008年由中本聰(Satoshi Nakamoto)提出,其建構(gòu)基礎(chǔ)是P2P網(wǎng)絡(luò)。與傳統(tǒng)的電子貨幣相比,比特幣具有去中心化、匿名化、存量有限、代碼開(kāi)放、可追溯性、不可逆性等特點(diǎn)。
一、幾個(gè)重要的基本概念
1.散列(Hash)。散列函數(shù)的功能是將任意長(zhǎng)度的不同信息轉(zhuǎn)化為長(zhǎng)度相等但內(nèi)容不同的二進(jìn)制數(shù)列(由0和1組成)。以比特幣采用的SHA256為例,任意長(zhǎng)度的信息輸入通過(guò)這個(gè)函數(shù)都可以轉(zhuǎn)換成一組長(zhǎng)度為256個(gè)二進(jìn)制數(shù)字,以便統(tǒng)一地存儲(chǔ)和識(shí)別。256個(gè)0或1最多可組合成2的256次方個(gè)不同的數(shù),輸入信息的任何微小變動(dòng)都將會(huì)導(dǎo)致輸出數(shù)字的巨大變化,同時(shí)也不能由輸出數(shù)字逆向推出輸入信息。這樣,就確保了輸入信息與輸出數(shù)字的一一對(duì)應(yīng)。
2.工作量證明(Proof Of Work)。工作量證明就是對(duì)挖礦者的工作進(jìn)行確認(rèn),防止其他服務(wù)濫用。對(duì)于比特幣而言,挖礦就是要求挖礦者通過(guò)一定量的運(yùn)算,使用隨機(jī)數(shù)進(jìn)行工作量證明。比特幣系統(tǒng)中使用的工作量證明函數(shù)就是SHA256,SHA是安全散列算法(Secure Hash Algorithm)的縮寫(xiě),是一個(gè)密碼散列函數(shù)家族。
3.密鑰。在信息傳遞過(guò)程中,發(fā)送方的信息是通過(guò)密鑰來(lái)加密的。密鑰分為公鑰和私鑰,公鑰需要向其他人公開(kāi),私鑰則由自己保存。在傳遞信息過(guò)程中,公鑰和私鑰配合使用,既可以驗(yàn)證發(fā)信息方的身份,又可以確保發(fā)信人對(duì)自己所發(fā)出的信息不能抵賴(lài),發(fā)送方將信息傳給接收方以后,接收方通過(guò)配對(duì)的另外一把密鑰解密信息,這樣保證了信息傳遞的安全和私密。
4.區(qū)塊(Block)。為了便于統(tǒng)計(jì)全球比特幣的交易情況,系統(tǒng)創(chuàng)造了區(qū)塊這一概念。每個(gè)區(qū)塊包含以下三要素:(1)本區(qū)塊的ID(散列);(2)若干交易單;(3)前一個(gè)區(qū)塊的ID(散列)。比特幣系統(tǒng)大約每10分鐘創(chuàng)建一個(gè)區(qū)塊,全球范圍內(nèi)的所有交易都包含在這個(gè)區(qū)塊內(nèi)。因此,比特幣的交易主要靠主區(qū)塊鏈來(lái)呈現(xiàn)。比特幣所有的交易都記錄在主區(qū)塊鏈上,以每10分鐘增長(zhǎng)1個(gè)節(jié)點(diǎn)的速度擴(kuò)展。而且,主區(qū)塊鏈新增1個(gè)節(jié)點(diǎn)后,系統(tǒng)會(huì)在全網(wǎng)廣播,每臺(tái)參與比特幣交易的電腦就會(huì)記錄下來(lái),保存主區(qū)塊鏈信息。
5.挖礦。由于比特幣使用的是P2P網(wǎng)絡(luò),網(wǎng)絡(luò)上每個(gè)節(jié)點(diǎn)都是平等的,因而參與比特幣交易的每個(gè)挖礦者通過(guò)完成工作量證明的難題和對(duì)交易的有效性進(jìn)行驗(yàn)證后,解決彼此之間的信任問(wèn)題,從而確保新區(qū)塊所記錄的交易信息的真實(shí)。挖礦,是指產(chǎn)生新區(qū)塊并計(jì)算隨機(jī)數(shù)的過(guò)程。具體包括以下步驟:(1)輸入最后一個(gè)區(qū)塊的內(nèi)容,計(jì)算散列值;(2)組合之前區(qū)塊沒(méi)有包含的交易,并納入一個(gè)新區(qū)塊;(3)任意猜一個(gè)隨機(jī)數(shù),大小和長(zhǎng)度不限;(4)將前三步產(chǎn)生的數(shù)據(jù)輸入SHA256散列函數(shù),得到一個(gè)長(zhǎng)度為256的二進(jìn)制數(shù);(5)檢查這個(gè)二進(jìn)制數(shù)的前n位是否符合要求;(6)如符合要求,則該輪挖礦結(jié)束,新區(qū)塊和隨機(jī)數(shù)在網(wǎng)上廣播,并等待其他人的校驗(yàn)和全網(wǎng)的接受。否則,就進(jìn)行下一輪的挖礦,直到自己成功或收到別人發(fā)來(lái)的新區(qū)塊。挖礦的報(bào)酬是每個(gè)成功建立新區(qū)塊的人都將獲得相應(yīng)數(shù)量的比特幣的獎(jiǎng)勵(lì),第一個(gè)四年獎(jiǎng)勵(lì)50個(gè)比特幣,第二個(gè)四年獎(jiǎng)勵(lì)25個(gè)比特幣,規(guī)律是每四年獎(jiǎng)勵(lì)數(shù)減半,最終比特幣數(shù)量將達(dá)到上限2 100萬(wàn)個(gè),至此不再增加。
二、比特幣的生成機(jī)理
1.比特幣的信用。比特幣的信用是以P2P的網(wǎng)絡(luò)環(huán)境為基礎(chǔ)的,參與比特幣挖礦和交易的用戶(hù)通過(guò)大量的計(jì)算,需要花費(fèi)時(shí)間和電力及人工等成本,花費(fèi)的成本越高,對(duì)比特幣的認(rèn)可程度也越高。比特幣的信用體系和其他的信用體系不同,不用個(gè)人或者機(jī)構(gòu)的擔(dān)保,也不需要之(下轉(zhuǎn)73頁(yè))(上接71頁(yè))前的信用記錄,理論和技術(shù)是其信用的基礎(chǔ)保障。
2.比特幣的賬戶(hù)管理。對(duì)比特幣而言,建立賬戶(hù)就是生成一個(gè)地址。地址是由公鑰通過(guò)一系列數(shù)學(xué)計(jì)算推導(dǎo)出來(lái)的,賬戶(hù)、地址、公鑰均是公開(kāi)的。有了地址就可查詢(xún)比特幣賬戶(hù)的余額。與銀行賬戶(hù)不同,該地址的余額并沒(méi)有特意記錄在某個(gè)地方。這是因?yàn)楸忍貛琶總€(gè)賬戶(hù)的余額都可以通過(guò)對(duì)主區(qū)塊鏈進(jìn)行計(jì)算得到,因而不需要單獨(dú)記錄。在傳統(tǒng)銀行交易里,儲(chǔ)戶(hù)只通過(guò)戶(hù)名是不能查詢(xún)賬戶(hù)余額的,還需要與戶(hù)名對(duì)應(yīng)的卡號(hào)。但是比特幣賬戶(hù)查詢(xún)余額的話(huà),通過(guò)計(jì)算主區(qū)塊鏈即可。這是因?yàn)楸忍貛刨~號(hào)是以匿名形式存在的,每個(gè)人可以擁有多個(gè)賬號(hào),僅通過(guò)分析個(gè)人賬號(hào)是不能獲得個(gè)人信息的,保證了比特幣擁有者的個(gè)人隱私。比特幣的所有公開(kāi)信息都保存在主區(qū)塊鏈中,而主區(qū)塊鏈在P2P網(wǎng)絡(luò)運(yùn)行比特幣軟件的計(jì)算機(jī)上都有完整備份。因此,用戶(hù)的私鑰管理就是比特幣賬戶(hù)安全管理的關(guān)鍵。私鑰是獨(dú)立存在的,是由許多數(shù)字組成的,沒(méi)有規(guī)律,是用戶(hù)對(duì)賬戶(hù)所有權(quán)的唯一證明,從而通過(guò)其他方式不能將私鑰反推出來(lái),從而保證了用戶(hù)賬戶(hù)的安全。出于方便考慮,很多用戶(hù)把私鑰保存在文件中或網(wǎng)絡(luò)錢(qián)包中,這就意味著私鑰有遺失或失竊的風(fēng)險(xiǎn)。為此,可通過(guò)采用“紙錢(qián)包”或“腦錢(qián)包”的方法進(jìn)行防范。紙錢(qián)包,是指把私鑰寫(xiě)在紙上或打印出來(lái)的方式進(jìn)行保存。腦錢(qián)包,是指把私鑰轉(zhuǎn)化為一句話(huà)或一幅圖片進(jìn)行保存。
3.比特幣的交易確認(rèn)。傳統(tǒng)銀行賬戶(hù)間的交易通常在短時(shí)間內(nèi)即可完成,間隔時(shí)間可能只有幾秒。但是,比特幣的交易需要得到全網(wǎng)的確認(rèn),進(jìn)入主區(qū)塊連才能生效。在挖礦過(guò)程中,只有有效的交易才會(huì)進(jìn)入?yún)^(qū)塊,失敗的交易就直接被丟棄掉。在挖礦過(guò)程中可能在同一時(shí)間段生產(chǎn)多個(gè)有效區(qū)塊,最終哪個(gè)有效區(qū)塊能夠成為當(dāng)前時(shí)間段的正式區(qū)塊而進(jìn)入主區(qū)塊鏈,就會(huì)存在分歧。因此,比特幣的交易存在一定的缺陷,交易過(guò)程有很長(zhǎng)的時(shí)間間隔,一般需要5—6個(gè)月。基本流程是在包含某個(gè)交易的區(qū)塊產(chǎn)生以后,需要等后續(xù)的區(qū)塊生成才能確認(rèn)當(dāng)前的區(qū)塊是否進(jìn)入了主區(qū)塊鏈。