【摘 要】隨著電子商務(wù)的飛速發(fā)展、互聯(lián)網(wǎng)金融、數(shù)字貨幣也得到了迅猛發(fā)展。一種被全球廣泛認(rèn)可的點(diǎn)對點(diǎn)加密數(shù)字貨幣比特幣應(yīng)運(yùn)而生。
【關(guān)鍵詞】比特幣 Bitcoin 數(shù)字貨幣 BTC HASH算法
2008年全球金融危機(jī)爆發(fā)后,一個自稱中本聰(Satoshi Nakamoto)的人在一個隱秘的密碼學(xué)評論組上發(fā)表了一篇文章,陳述了他對電子貨幣的新設(shè)想。隨后,他以公開對等、共識主動性的理念為基準(zhǔn),把密碼學(xué)原理、對等網(wǎng)絡(luò)技術(shù)和開源軟件相結(jié)合,開發(fā)出能自我完善的、免費(fèi)的比特幣應(yīng)用體系;2009年1月3日,比特幣問世。比特幣問世以來以其點(diǎn)對點(diǎn)去中心化、密碼學(xué)設(shè)計(jì)流通環(huán)節(jié)安全、眾多節(jié)點(diǎn)構(gòu)成分布式數(shù)據(jù)庫的安全性、交易不可逆性、匿名性、稀缺性等眾多優(yōu)點(diǎn)使其在全球范圍內(nèi)迅速得到認(rèn)可,目前已可以兌換成大多數(shù)國家的貨幣,也可以購買一些虛擬和實(shí)物商品,目前在我國被認(rèn)定為一種可交易性資產(chǎn)。同時,重視它的國家和其權(quán)威機(jī)構(gòu)也越來越多,使之成為一個適應(yīng)于互聯(lián)網(wǎng)時代的、獨(dú)立于傳統(tǒng)金融系統(tǒng)的新型金融生態(tài)體系。本文將對比特幣系統(tǒng)原理進(jìn)行簡明陳述。
一、發(fā)行
比特幣網(wǎng)絡(luò)通過“挖礦”來生成新的比特幣。所謂“挖礦”實(shí)質(zhì)上是用計(jì)算機(jī)解決一項(xiàng)復(fù)雜的數(shù)學(xué)問題,來保證比特幣網(wǎng)絡(luò)分布式記賬系統(tǒng)的一致性。比特幣網(wǎng)絡(luò)會自動調(diào)整數(shù)學(xué)問題的難度,讓整個網(wǎng)絡(luò)約每10分鐘得到一個合格答案。隨后比特幣網(wǎng)絡(luò)會新生成一定量的比特幣作為賞金,獎勵獲得答案的人。2009年比特幣誕生的時候,每筆賞金是50個比特幣。誕生10分鐘后,第一批50個比特幣生成了,而此時的貨幣總量就是50。隨后比特幣就以約每10分鐘50個的速度增長。當(dāng)總量達(dá)到1050萬時(2100萬的50%),賞金減半為25個。當(dāng)總量達(dá)到1575萬(新產(chǎn)出525萬,即1050的50%)時,賞金再減半為12.5個。根據(jù)其設(shè)計(jì)原理,比特幣的總量會持續(xù)增長,直至100多年后達(dá)到2100萬的那一天。但比特幣貨幣總量后期增長的速度會非常緩慢。
二、交易
我們定義,一枚電子貨幣(an electronic coin)是這樣的一串?dāng)?shù)字簽名:每一位所有者通過對前一次交易和下一位擁有者的公鑰(Public key) 簽署一個隨機(jī)散列的數(shù)字簽名,并將這個簽名附加在這枚電子貨幣的末尾,電子貨幣就發(fā)送給了下一位所有者。而收款人通過對簽名進(jìn)行檢驗(yàn),就能夠驗(yàn)證該鏈條的所有者。我們需要收款人有某種方法,能夠確保之前的所有者沒有對更早發(fā)生的交易實(shí)施簽名。從邏輯上看,為了達(dá)到目的,實(shí)際上我們需要關(guān)注的只是于本交易之前發(fā)生的交易,而不需要關(guān)注這筆交易發(fā)生之后是否會有雙重支付的嘗試。為了確保某一次交易是不存在的,那么唯一的方法就是獲悉之前發(fā)生過的所有交易。在造幣廠模型里面,造幣廠獲悉所有的交易,并且決定了交易完成的先后順序。如果想要在電子系統(tǒng)中排除第三方中介機(jī)構(gòu),那么交易信息就應(yīng)當(dāng)被公開宣布(publicly announced),我們需要整個系統(tǒng)內(nèi)的所有參與者,都有唯一公認(rèn)的歷史交易序列。收款人需要確保在交易期間絕大多數(shù)的節(jié)點(diǎn)都認(rèn)同該交易是首次出現(xiàn)。
三、時間戳服務(wù)器
本解決方案首先提出一個“時間戳服務(wù)器”。時間戳服務(wù)器通過對以區(qū)塊(block)形式存在的一組數(shù)據(jù)實(shí)施隨機(jī)散列而加上時間戳,并將該隨機(jī)散列進(jìn)行廣播,就像在新聞或世界性新聞組網(wǎng)絡(luò)(Usenet)的發(fā)帖一樣。顯然,該時間戳能夠證實(shí)特定數(shù)據(jù)必然于某特定時刻是的確存在的,因?yàn)橹挥性谠摃r刻存在了才能獲取相應(yīng)的隨機(jī)散列值。每個時間戳應(yīng)當(dāng)將前一個時間戳納入其隨機(jī)散列值中,每一個隨后的時間戳都對之前的一個時間戳進(jìn)行增強(qiáng)(reinforcing),這樣就形成了一個鏈條(Chain)。
四、網(wǎng)絡(luò)
運(yùn)行該網(wǎng)絡(luò)的步驟如下:1.新的交易向全網(wǎng)進(jìn)行廣播;2.每一個節(jié)點(diǎn)都將收到的交易信息納入一個區(qū)塊中;3.每個節(jié)點(diǎn)都嘗試在自己的區(qū)塊中找到一個具有足夠難度的工作量證明;4.當(dāng)一個節(jié)點(diǎn)找到了一個工作量證明,它就向全網(wǎng)進(jìn)行廣播;5.當(dāng)且僅當(dāng)包含在該區(qū)塊中的所有交易都是有效的且之前未存在過的,其他節(jié)點(diǎn)才認(rèn)同該區(qū)塊的有效性;6.其他節(jié)點(diǎn)表示他們接受該區(qū)塊,而表示接受的方法,則是在跟隨該區(qū)塊的末尾,制造新的區(qū)塊以延長該鏈條,而將被接受區(qū)塊的隨機(jī)散列值視為先于新區(qū)快的隨機(jī)散列值。
節(jié)點(diǎn)始終都將最長的鏈條視為正確的鏈條,并持續(xù)工作和延長它。如果有兩個節(jié)點(diǎn)同時廣播不同版本的新區(qū)塊,那么其他節(jié)點(diǎn)在接收到該區(qū)塊的時間上將存在先后差別。當(dāng)此情形,他們將在率先收到的區(qū)塊基礎(chǔ)上進(jìn)行工作,但也會保留另外一個鏈條,以防后者變成最長的鏈條。該僵局(tie)的打破要等到下一個工作量證明被發(fā)現(xiàn),而其中的一條鏈條被證實(shí)為是較長的一條,那么在另一條分支鏈條上工作的節(jié)點(diǎn)將轉(zhuǎn)換陣營,開始在較長的鏈條上工作。
五、激勵
我們約定如此:每個區(qū)塊的第一筆交易進(jìn)行特殊化處理,該交易產(chǎn)生一枚由該區(qū)塊創(chuàng)造者擁有的新的電子貨幣。這樣就增加了節(jié)點(diǎn)支持該網(wǎng)絡(luò)的激勵,并在沒有中央集權(quán)機(jī)構(gòu)發(fā)行貨幣的情況下,提供了一種將電子貨幣分配到流通領(lǐng)域的一種方法。這種將一定數(shù)量新貨幣持續(xù)增添到貨幣系統(tǒng)中的方法,非常類似于耗費(fèi)資源去挖掘金礦并將黃金注入到流通領(lǐng)域。此時,CPU的時間和電力消耗就是消耗的資源。 另外一個激勵的來源則是交易費(fèi)(transaction fees)。如果某筆交易的輸出值小于輸入值,那么差額就是交易費(fèi),該交易費(fèi)將被增加到該區(qū)塊的激勵中。只要既定數(shù)量的電子貨幣已經(jīng)進(jìn)入流通,那么激勵機(jī)制就可以逐漸轉(zhuǎn)換為完全依靠交易費(fèi),那么本貨幣系統(tǒng)就能夠免于通貨膨脹。激勵系統(tǒng)也有助于鼓勵節(jié)點(diǎn)保持誠實(shí)。如果有一個貪婪的攻擊者能夠調(diào)集比所有誠實(shí)節(jié)點(diǎn)加起來還要多的CPU計(jì)算力,那么他就面臨一個選擇:要么將其用于誠實(shí)工作產(chǎn)生新的電子貨幣,或者將其用于進(jìn)行二次支付攻擊。那么他就會發(fā)現(xiàn),按照規(guī)則行事、誠實(shí)工作是更有利可圖的。因?yàn)樵摰纫?guī)則使得他能夠擁有更多的電子貨幣,而不是破壞這個系統(tǒng)使得其自身財(cái)富的有效性受損。
六、回收硬盤空間
如果最近的交易已經(jīng)被納入了足夠多的區(qū)塊之中,那么就可以丟棄該交易之前的數(shù)據(jù),以回收硬盤空間。為了同時確保不損害區(qū)塊的隨機(jī)散列值,交易信息被隨機(jī)散列時,被構(gòu)建成一種Merkle樹(Merkle tree)7的形態(tài),使得只有根(root)被納入了區(qū)塊的隨機(jī)散列值。通過將該樹(tree)的分支拔除(stubbing)的方法,老區(qū)塊就能被壓縮。而內(nèi)部的隨機(jī)散列值是不必保存的。
七、隱私
將交易信息向全網(wǎng)進(jìn)行廣播,但是隱私依然可以得到保護(hù):將公鑰保持為匿名。公眾得知的信息僅僅是有某個人將一定數(shù)量的貨幣發(fā)所給了另外一個人,但是難以將該交易同某個特定的人聯(lián)系在一起,也就是說,公眾難以確信,這些人究竟是誰。這同股票交易所發(fā)布的信息是類似的,每一手股票買賣發(fā)生的時間、交易量是記錄在案且可供查詢的,但是交易雙方的身份信息卻不予透露。作為額外的預(yù)防措施,使用者可以讓每次交易都生成一個新的地址,以確保這些交易不被追溯到一個共同的所有者。不過由于存在并行輸入,一定程度上的追溯還是不可避免的,因?yàn)椴⑿休斎氚凳具@些貨幣都屬于同一個所有者。此時的風(fēng)險在于,如果某個人的某一個公鑰被確認(rèn)屬于他,那么就可以追溯出此人的其它很多交易。
八、攻擊
設(shè)想如下場景:一個攻擊者試圖比誠實(shí)節(jié)點(diǎn)產(chǎn)生鏈條更快地制造替代性區(qū)塊鏈。即便它達(dá)到了這一目的,但是整個系統(tǒng)也并非就此完全受制于攻擊者的獨(dú)斷意志了,比方說憑空創(chuàng)造價值,或者掠奪本不屬于攻擊者的貨幣。這是因?yàn)楣?jié)點(diǎn)將不會接受無效的交易,而誠實(shí)的節(jié)點(diǎn)永遠(yuǎn)不會接受一個包含了無效信息的區(qū)塊。一個攻擊者能做的,最多是更改他自己的交易信息,并試圖拿回他剛剛付給別人的錢。為了解決這個問題,我們提出了一種采用工作量證明機(jī)制的點(diǎn)對點(diǎn)網(wǎng)絡(luò)來記錄交易的公開信息,只要誠實(shí)的節(jié)點(diǎn)能夠控制絕大多數(shù)的CPU計(jì)算能力,就能使得攻擊者事實(shí)上難以改變交易記錄。
九、結(jié)論
比特幣網(wǎng)絡(luò)的強(qiáng)健之處在于它結(jié)構(gòu)上的簡潔性。節(jié)點(diǎn)之間的工作大部分是彼此獨(dú)立的,只需要很少的協(xié)同。每個節(jié)點(diǎn)都不需要明確自己的身份,由于交易信息的流動路徑并無任何要求,所以只需要盡其最大努力傳播即可。節(jié)點(diǎn)可以隨時離開網(wǎng)絡(luò),而想重新加入網(wǎng)絡(luò)也非常容易,因?yàn)橹恍枰a(bǔ)充接收離開期間的工作量證明鏈條即可。節(jié)點(diǎn)通過自己的CPU計(jì)算力進(jìn)行投票,表決他們對有效區(qū)塊的確認(rèn),他們不斷延長有效的區(qū)塊鏈來表達(dá)自己的確認(rèn),并拒絕在無效的區(qū)塊之后延長區(qū)塊以表示拒絕。比特幣系統(tǒng)框架包含了一個P2P電子貨幣系統(tǒng)所需要的全部規(guī)則和激勵措施。
參考文獻(xiàn):
[1]Satoshi N , Bitcoin: A Peer-to-Peer Electronic Cash System[Z], http://www.8btc.com,2009
[2]Dai W , a scheme for a group of untraceable digital pseudonyms to pay each other with money and to enforce contracts amongst themselves without outside help[Z], “B-money”, http://www.weidai.com/bmoney.txt, 1998