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