




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、比特幣:一種點對點的電子現(xiàn)金系統(tǒng)Bitcoin:APeer-to-PeerElectronicCashSystem原文作者:中本聰(SatoshiNakamoto)摘要:本文提出了一種完全通過點對點技術實現(xiàn)的電子現(xiàn)金系統(tǒng),它使得在線支付能夠直接由一方發(fā)起并支付給另外一方,中間不需要通過任何的金融機構。雖然數(shù)字簽名(Digitalsignatures)部分解決了這個問題,但是如果仍然需要第三方的支持才能防止雙重支付(double-spending)的話,那么這種系統(tǒng)也就失去了存在的價值。我們(we)在此提出一種解決方案,使現(xiàn)金系統(tǒng)在點對點的環(huán)境下運行,并防止雙重支付問題。該網(wǎng)絡通過隨機散列(ha
2、shing)對全部交易加上時間戳(timestamps),將它們合并入一個不斷延伸的基于隨機散列的工作量證明(proof-of-work)的鏈條作為交易記錄,除非重新完成全部的工作量證明,形成的交易記錄將不可更改。最長的鏈條不僅將作為被觀察到的事件序列(sequence)的證明,而且被看做是來自CPU計算能力放大的池(pool)o只要大多教的CPU計算能力都沒有打算合作起來對全網(wǎng)進行攻擊,那么誠實的節(jié)點將會生成最長的、超過攻擊者的鏈條。這個系統(tǒng)本身需要的基礎設施非常少。信息盡最大努力在全網(wǎng)傳播即可,節(jié)點(nodes)可以隨時離開和重新加入網(wǎng)絡,并將最長的工作量證明鏈條作為在該節(jié)點離線期間發(fā)生的
3、交易的證明。1. 簡介互聯(lián)網(wǎng)上的貿(mào)易,幾乎都需要借助金融機構作為可資信賴的第三方來處理電子支付信息。雖然在絕大多數(shù)情況下這類系統(tǒng)都運作歸好,但是這類系統(tǒng)仍然內(nèi)生性地受制于“基于信用的模式”(trustbasedmodel)的弱點。人們無法實現(xiàn)完全不可逆的交易,因為金融機構總是不可避免地會出面協(xié)調(diào)爭端。而金融中介的存在,也會增加交易的成本,并且限制了實際可行的最小交易規(guī)模,也限制了日常的小額支付交易。并且潛在的損失還在于,很多商品和服務本身是無法退貨的,如果缺乏不可逆的支付手段,互聯(lián)網(wǎng)的貿(mào)易就大大受限。因為有潛在的退款的可能,就需要交易雙方擁有信任。此外,因為商家也必須對自己的客戶小心提防,所以
4、會向客戶索取完全不必要的個人信息。而實際的商業(yè)行為中,一定比例的欺詐性客戶也被認為是不可避免的,相關損失視作銷售費用處理。而在使用物理現(xiàn)金的情況下,因為此時沒有第三方信用中介的存在,這些銷售費用和支付問題上的不確定性卻是可以避免的。所以,我們非常需要這樣一種電子支付系統(tǒng),它基于密碼學原理而不基于信用,使得任何達成一致的雙方,能夠直接進行支付,從而不需要第三方中介的參與。杜絕回滾(reverse)支付交易的可能,這就可以保護特定的賣家免于欺詐;而對于想要保護買家的人來說,在此環(huán)境下設立通常的第三方擔保機制也可謂輕松加愉快。在這篇論文中,我們(we)將提出一種通過點對點分布式的時間戳服務器來生成依
5、照時間前后排列并加以記錄的電子交易證明,從而解決雙重支付問題。只要誠實的節(jié)點所控制的計算能力的總和,大于有合作關系的(cooperating)攻擊者的計算能力的總和,該系統(tǒng)就是安全的。2. 交易(Transactions)我們定義,一枚電子貨幣(anelectroniccoin)是這樣的一串數(shù)字簽名:每一位所多少個區(qū)塊,但是假設誠實區(qū)塊將耗費平均預期時間以產(chǎn)生一個區(qū)塊,那么攻擊者的潛在進展就是一個泊松分布,分布的期望值為:A=z*q/p,當此情形,為了計算攻擊者追趕上的概率,我們將攻擊者取得進展區(qū)塊數(shù)量的泊松分布的概率密度,乘以在該數(shù)量下攻擊者依然能夠追趕上的概率。£入5件)I)if
6、k<zk=o1ifk>z,化為如下形式,避免對無限數(shù)列求和:Ake_xk=0k=0(1-Q)為如下C語言代碼:#include<math.h>doubleAttackerSuccessProbability(doubleq,intz)doublep=1.0-q;doublelambda=z*(q/p);doublesum=1.0;inti,k;for(k=0;k<=z;k+)doublepoisson=exp(-lambda);for(i=1;i<=k;i+)poisson*=lambda/i;sum-=poisson*(1-pow(q/p,z-k);ret
7、urnsum;對其進行運算,我們nJ以得到如卜的概率結果,發(fā)現(xiàn)概率對z值呈指數(shù)卜降。z=0P=1.0000000z=1P=0.2045873z=2P=0.0509779z=3P=0.0131722z=4P=0.0034552z=5P=0.0009137z=6P=0.0002428z=7P=0.0000647z=8P=0.0000173z=9P=0.0000046z=10P=0.0000012當q=0.3時求解令PvO.l%的z值:為使P<0.001,則z=0P=1.0000000z=5P=0.1773523z=10P=0.0416605z=15P=0.0101008z=20P=0.002
8、4804z=25P=0.0006132z=30P=0.0001522z=35P=0.0000379z=40P=0.0000095z=45P=0.0000024z=50P=0.0000006q=0.10z=5q=0.15z=8q=0.20z=llq=0.25z=15q=0.30z=24q=0.35z=41q=0.40z=89q=0.45z=34012.結論我們在此提出了一種不需要信用中介的電子支付系統(tǒng)。我們首先討論了通常的電子貨幣的電子簽名原理,雖然這種系統(tǒng)為所有權提供了強有力的控制,但是不足以防止雙重支付。為了解決這個問題,我們提出了一種采用工作量證明機制的點對點網(wǎng)絡來記錄交易的公開信息,只要
9、誠實的節(jié)點能夠控制絕大多數(shù)的CPU計算能力,就能使得攻擊者事實上難以改變交易記錄。該網(wǎng)絡的強健之處在于它結構上的簡潔性。節(jié)點之間的工作大部分是彼此獨立的,只需要很少的協(xié)同。每個節(jié)點都不需要明確自己的身份,由于交易信息的流動路徑并無任何要求,所以只需要盡其最大努力傳播即可。節(jié)點可以隨時離開網(wǎng)絡,而想重新加入網(wǎng)絡也非常容易,因為只需要補充接收離開期間的工作量證明鏈條即可。節(jié)點通過自己的CPU計算力進行投票,表決他們對有效區(qū)塊的確認,他們不斷延長有效的區(qū)塊鏈來表達自己的確認,并拒絕在無效的區(qū)塊之后延長區(qū)塊以表示拒絕。本框架包含了一個P2P電子貨幣系統(tǒng)所需要的全部規(guī)則和激勵措施。有者通過對前一次交易和
10、下一位擁有者的公鑰(Publickey)簽署一個隨機散列的數(shù)字簽名,并將這個簽名附加在這枚電子貨幣的末尾,電子貨幣就發(fā)送給了下一位所有者。而收款人通過對簽名進行檢驗,就能夠驗證該鏈條的所有者。所有者1的私鑰所有者21的私鑰所有者3的私鑰該過程的問題在于,收款人將難以檢驗,之前的某位所有者,是否對這枚電子貨幣進行了雙重支付。通常的解決方案,就是引入信得過的第三方權威,或者類似于造幣廠(mint)的機構,來對每一筆交易進行檢驗,以防止雙重支付。在每一筆交易結束后,這枚電子貨幣就要被造幣廠回收,而造幣廠將發(fā)行一枚新的電子貨幣;而只有造幣廠直接發(fā)行的電子貨幣,才算作有效,這樣就能夠防止雙重支付??墒窃?/p>
11、解決方案的問題在于,整個貨幣系統(tǒng)的命運完全依賴于運作造幣廠的公司,因為每一筆交易都要經(jīng)過該造幣廠的確認,而該造幣廠就好比是一家銀行。我們需要收款人有某種方法,能夠確保之前的所有者沒有對更早發(fā)生的交易實施簽名。從邏輯上看,為了達到目的,實際上我們需要關注的只是于本交易之前發(fā)生的交易,而不需要關注這筆交易發(fā)生之后是否會有雙重支付的嘗試。為了確保某一次交易是不存在的,那么唯一的方法就是獲悉之前發(fā)生過的所有交易。在造幣廠模型里面,造幣廠獲悉所有的交易,并旦決定了交易完成的先后順序。如果想要在電子系統(tǒng)中排除第三方中介機構,那么交易信息就應當被公開宣布(publiclyannounced)1,我們需要整個
12、系統(tǒng)內(nèi)的所有參與者,都有唯一公認的歷史交易序列。收款人需要確保在交易期間絕大多數(shù)的節(jié)點都認同該交易是首次出現(xiàn)。3. 時間戳服務器(Timestampserver)木解決方案首先提出一個“時間戳服務器”。時間戳服務器通過對以區(qū)塊(block)形式存在的一組數(shù)據(jù)實施隨機散列而加上時間戳,并將該隨機散列進行廣播,就像在新聞或世界性新聞組網(wǎng)絡(Usenet)的發(fā)帖一樣2345。顯然,該時間戳能夠證實特定數(shù)據(jù)必然于某特定時刻是的確存在的,因為只有在該時刻存在了才能獲取相應的隨機散列值。每個時間戳應當將前一個時間戳納入其隨機散列值中,每一個隨后的時間戳都對之前的一個時間戳進行增強(reinforcing)
13、,這樣就形成了一個鏈條(Chain)0交易交易交易交易4, 工作量證明(ProofofWork)為了在點對點的基礎上構建一組分散化的時間戳服務器,僅僅像報紙或世界性新聞網(wǎng)絡組一樣工作是不夠的,我們還需要一個類似于亞當柏克(AdamBack)提出的哈希現(xiàn)金(Hashcash)6。在進行隨機散列運算時,工作量證明機制引入了對某一個特定值的掃描工作,比方說SHA-256下,隨機散列值以一個或多個。開始。那么隨著0的數(shù)目的上升,找到這個解所需要的工作量將呈指數(shù)增長,但是檢驗結果僅需要一次隨機散列運算。我們在區(qū)塊中補增一個隨機數(shù)(Nonce),這個隨機數(shù)要使得該給定區(qū)塊的隨機散列值出現(xiàn)了所需的那么多個0
14、。我們通過反復嘗試來找到這個隨機數(shù),找到為止。這樣我們就構建了一個工作量證明機制。只要該CPU耗費的工作量能夠滿足該工作量證明機制,那么除非重新完成相當?shù)墓ぷ髁?,該區(qū)塊的信息就不可更改。由于之后的區(qū)塊是鏈接在該區(qū)塊之后的,所以想要更改該區(qū)塊中的信息,就還需要重新完成之后所有區(qū)塊的全部工作量。數(shù)的方式是基于IP地址的,一IP地址一票,那么如果有人擁有分配大量IP地址的權力,則該機制就被破壞了。而工作量證明機制的本質(zhì)則是一CPU一票?!按蠖鄶?shù)”的決定表達為最長的鏈,因為最長的鏈包含了最大的工作量。如果大多數(shù)的CPU為誠實的節(jié)點控制,那么誠實的鏈條將以最快的速度延長,并超越其他的竟爭鏈條。如果想要對
15、業(yè)己出現(xiàn)的區(qū)塊進行修改,攻擊者必須重新完成該區(qū)塊的工作量外加該區(qū)塊之后所有區(qū)塊的工作量,并最終趕上和超越誠實節(jié)點的工作量。我們將在后文證明,設想一個較慢的攻擊者試圖趕上隨后的區(qū)塊,那么其成功概率將呈指數(shù)化遞減。另一個問題是,硬件的運算速度在高速增長,且節(jié)點參與網(wǎng)絡的程度會有所起伏。為了解決這個問題,工作量證明的難度(theproof-of-workdifficulty)將采用移動平均目標的方法來確定,即令難度指向令每小時生成區(qū)塊的速度為某一預設的平均數(shù)。如果區(qū)塊生成的速度過快,那么難度就會提高。5.網(wǎng)絡運行該網(wǎng)絡的步驟如下:1)新的交易向全網(wǎng)進行廣播;2)每一個節(jié)點都將收到的交易信息納入一個區(qū)
16、塊中;3)每個節(jié)點都嘗試在自己的區(qū)塊中找到一個具有足夠難度的工作量證明;4)當一個節(jié)點找到了一個工作量證明,它就向全網(wǎng)進行廣播;5)當且僅當包含在該區(qū)塊中的所有交易都是有效的且之前未存在過的,其他節(jié)點才認同該區(qū)塊的有效性;6)其他節(jié)點表示他們接受該區(qū)塊,而表示接受的方法,則是在跟隨該區(qū)塊的末尾,制造新的區(qū)塊以延長該鏈條,而將被接受區(qū)塊的隨機散列值視為先于新區(qū)快的隨機散列值。節(jié)點始終都將最長的鏈條視為正確的鏈條,并持續(xù)工作和延長它。如果有兩個節(jié)點同時廣播不同版本的新區(qū)塊,那么其他節(jié)點在接收到該區(qū)塊的時間上將存在先后差別。當此情形,他們將在率先收到的區(qū)塊基礎上進行工作,但也會保留另外一個鏈條,以防
17、后者變成最長的鏈條。該僵局(tie)的打破要等到下一個工作量證明被發(fā)現(xiàn),而其中的一條鏈條被證實為是較長的一條,那么在另一條分支鏈條上工作的節(jié)點將轉換陣營,開始在較長的鏈條上工作。所謂“新的交易要廣播,實際上不需要抵達全部的節(jié)點。只要交易信息能夠抵達足夠多的節(jié)點,那么他們將很快被整合進一個區(qū)塊中。而區(qū)塊的廣播對被丟棄的信息是具有容錯能力的。如果一個節(jié)點沒有收到某特定區(qū)塊,那么該節(jié)點將會發(fā)現(xiàn)自己缺失了某個區(qū)塊,也就可以提出自己下載該區(qū)塊的請求。6.激勵我們約定如此:每個區(qū)塊的第一筆交易進行特殊化處理,該交易產(chǎn)生一枚由該區(qū)塊創(chuàng)造者擁有的新的電子貨幣。這樣就增加了節(jié)點支持該網(wǎng)絡的激勵,并在沒有中央集權
18、機構發(fā)行貨幣的情況下,提供了一種將電子貨幣分配到流通領域的一種方法。這種將一定數(shù)量新貨幣持續(xù)增添到貨幣系統(tǒng)中的方法,非常類似于耗費資源去挖掘金礦并將黃金注入到流通領域。此時,CPU的時間和電力消耗就是消耗的資源。另外一個激勵的來源則是交易費(transactionfees)。如果某筆交易的輸出值小于輸入值,那么差額就是交易費,該交易費將被增加到該區(qū)塊的激勵中。只要既定數(shù)量的電子貨幣己經(jīng)進入流通,那么激勵機制就可以逐漸轉換為完全依靠交易費,那么本貨幣系統(tǒng)就能夠免于通貨膨脹。激勵系統(tǒng)也有助于鼓勵節(jié)點保持誠實。如果有一個貪婪的攻擊者能夠調(diào)集比所有誠實節(jié)點加起來還要多的CPU計算力,那么他就面臨一個選
19、擇:要么將其用于誠實工作產(chǎn)生新的電子貨幣,或者將其用于進行二次支付攻擊。那么他就會發(fā)現(xiàn),按照規(guī)則行事、誠實工作是更有利可圖的。因為該等規(guī)則使得他能夠擁有更多的電子貨幣,而不是破壞這個系統(tǒng)使得其自身財富的有效性受損。7. 回收硬盤空間如果最近的交易己經(jīng)被納入了足夠多的區(qū)塊之中,那么就可以丟棄該交易之前的數(shù)據(jù),以I可收硬盤空間。為了同時確保不損害區(qū)塊的隨機散列值,交易信息被隨機散歹U時,被構建成一種Merkle樹(Merkletree)7的形態(tài),使得只有根(root)被納入了區(qū)塊的隨機散列值。通過將該樹(tree)的分支拔除(stubbing)的方法,老區(qū)塊就能被壓縮。而內(nèi)部的隨機散列值是不必保存
20、的。以MerkleW形式散列的交易IX塊將TxO-2從IX塊中訶除不含交易信息的區(qū)塊頭(Blockheader)大小僅有80字節(jié)。如果我們設定區(qū)塊生成的速率為每10分鐘一個,那么每一年產(chǎn)生的數(shù)據(jù)位4.2MBo(80bytes*6*24*365=4.2MB)。2008年,PC系統(tǒng)通常的內(nèi)存容量為2GB,按照摩爾定律的預言,即使將全部的區(qū)塊頭存儲于內(nèi)存之中都不是問題。8. 簡化的支付確認(SimplifiedPaymentVerification)在不運行完整網(wǎng)絡節(jié)點的情況下,也能夠?qū)χЦ哆M行檢驗。一個用戶需要保留最長的工作量證明鏈條的區(qū)塊頭的拷貝,它可以不斷向網(wǎng)絡發(fā)起詢問,直到它確信自己擁有最長
21、的鏈條,并能夠通過merkle的分支通向它被加上時間戳并納入?yún)^(qū)塊的那次交易。節(jié)點想要自行檢驗該交易的有效性原本是不可能的,但通過追溯到鏈條的某個位置,它就能看到某個節(jié)點曾經(jīng)接受過它,并且于其后追加的區(qū)塊也進-步證明全網(wǎng)曾經(jīng)接受了它。最長的I:作吊:證明鏈區(qū)塊頭區(qū)塊頭先m散犯值機敷§塊頭先n散列值妙機散液歹(值5Merkle樹上的TX3的一枝|散列值2.當此情形,只要誠實的節(jié)點控制了網(wǎng)絡,檢驗機制就是可靠的。但是,當全網(wǎng)被一個計算力占優(yōu)的攻擊者攻擊時,將變得較為脆弱。因為網(wǎng)絡節(jié)點能夠自行確認交易的有效性,只要攻擊者能夠持續(xù)地保持計算力優(yōu)勢,簡化的機制會被攻擊者焊接的(fabricate
22、d)交易欺騙。那么一個可行的策略就是,只要他們發(fā)現(xiàn)了一個無效的區(qū)塊,就立刻發(fā)出警報,收到警報的用戶將立刻開始下載被警告有問題的區(qū)塊或交易的完整信息,以便對信息的不一致進行判定。對于日常會發(fā)生大量收付的商業(yè)機構,可能仍會希望運行他們自己的完整節(jié)點,以保持較大的獨立完全性和檢驗的快速性。價值的組合與分割(CombiningandSplittingValue)雖然可以單個單個地對電子貨幣進行處理,但是對于每一枚電子貨幣單獨發(fā)起一次交易將是一種笨拙的辦法。為了使得價值易于組合與分割,交易被設計為可以納入多個輸入和輸出。一般而言是某次價值較大的前次交易構成的單一輸入,或者由某兒個價值較小的前次交易共同構
23、成的并行輸入,但是輸出最多只有兩個:一個用于支付,另一個用于找零(如有)。需要指出的是,雖然一筆交易依賴于之前的多筆交易、這些交易又各自依賴于多筆交易,但是這并不存在任何問題。因為這個工作機制并不需要展開檢驗之前發(fā)生的所有交易歷史。9. 隱私(Privacy)新隱私模型傳統(tǒng)的造幣廠模型為交易的參與者提供了一定程度的隱私保護,因為試圖向可信任的第三方索取交易信息是嚴格受限的。但是如果將交易信息向全網(wǎng)進行廣播,就意味著這樣的方法失效了。但是隱私依然可以得到保護:將公鑰保持為匿名。公眾得知的信息僅僅是有某個人將一定數(shù)量的貨幣發(fā)所給了另外一個人,但是難以將該交易同某個特定的人聯(lián)系在一起,也就是說,公眾
24、難以確信,這些人究竟是誰。這同股票交易所發(fā)布的信息是類似的,每一手股票買賣發(fā)生的時間、交易量是記錄在案且可供查詢的,但是交易雙方的身份信息卻不予透露。作為額外的預防措施,使用者可以讓每次交易都生成一個新的地址,以確保這些交易不被追溯到一個共同的所有者。不過由于存在并行輸入,一定程度上的追溯還是不可避免的,因為并行輸入暗示這些貨幣都屬于同一個所有者。此時的風險在于,如果某個人的某一個公鑰被確認屬于他,那么就可以追溯出此人的其它很多交易。11.計算設想如下場景:一個攻擊者試圖比誠實節(jié)點產(chǎn)生鏈條更快地制造替代性區(qū)塊鏈。即便它達到了這一目的,但是整個系統(tǒng)也并非就此完全受制于攻擊者的獨斷意志了,比方說憑空創(chuàng)造價值,或者掠奪本不屬于攻擊者的貨幣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)墻粉刷包工合同樣本
- 書面招標貨物采購合同樣本
- 如何利用大數(shù)據(jù)優(yōu)化生產(chǎn)計劃
- 出售肉牛批發(fā)合同樣本
- 中介代簽合同樣本
- 個人轉讓住房合同范例
- 圖書選題計劃
- 農(nóng)場采購化肥合同標準文本
- 2025如何簽訂正規(guī)的租賃合同
- 2025租賃會議室合同協(xié)議范本
- 網(wǎng)絡零售行業(yè)分析
- 屋頂光伏發(fā)電系統(tǒng)設計原則與方案
- 保安上墻制度
- 2025念珠菌病診斷和管理全球指南解讀課件
- 碘對比劑應用護理安全性
- 水電站安全生產(chǎn)培訓
- 2025年國家藥品監(jiān)督管理局特殊藥品檢查中心招聘6人歷年高頻重點提升(共500題)附帶答案詳解
- 《礦井提升設備》課件2
- 被迫解除勞動合同通知書電子郵件
- 工具表單-崗位價值評估表(海氏)
- DB33T 2515-2022 公共機構“零碳”管理與評價規(guī)范
評論
0/150
提交評論