比特幣網(wǎng)絡(luò)正在創(chuàng)造的7個以上價值

比特幣已經(jīng)在眾人面前,吸引足夠多的眼球,更多是因為比特幣瘋漲的價格和財

富效應(yīng),把他定位為數(shù)字黃金是幾乎不完整的定義。更是極少有人去思考其背后

的原因。其實,比特幣上漲的最重要的原因是機制設(shè)計,簡單直接解決了問題。

比特幣網(wǎng)絡(luò)每10分鐘誕生一個賬本,網(wǎng)絡(luò)上所有礦工參與爭奪這個記賬權(quán),把這?

10分鐘所有的交易打包在一個賬本里面,形成區(qū)塊。一旦爭奪到區(qū)塊的記賬權(quán),

就可以獲得12.5個比特幣的獎勵,所有區(qū)塊連在一起,就變成區(qū)塊鏈。就是今天

媒體、機構(gòu)、大家耳熟能詳?shù)膮^(qū)塊鏈。

創(chuàng)造了前所未有巨大的機制商業(yè)奇跡,在比特網(wǎng)絡(luò)解決了那些問題:

把當(dāng)中一條拿出來,都是現(xiàn)代商業(yè)上的奇跡,沒有任何一個公司能夠做到。但比

特幣一個做到了以上所有7條。

這一切都是正是因為一個全新的機制模型設(shè)計創(chuàng)新。我們都知道,逐利本是商業(yè)

的天性,比特幣的偉大之處在于讓單純的逐利行為(挖礦)變成了維護整個商業(yè)

系統(tǒng)穩(wěn)定發(fā)展的有效驅(qū)動力(POW),這是機制設(shè)計商業(yè)模型的偉大創(chuàng)新。

好了,做了以上分享,我附贈:以下比特幣白皮書

用心看,一定對您有更多思考。

[摘要]:提出了一種完全通過點對點技術(shù)實現(xiàn)的電子現(xiàn)金系統(tǒng),它使得在線支

付能夠直接由一方發(fā)起并支付給另外一方,中間不需要通過任何的金融機構(gòu)。

雖然數(shù)字簽名(Digital signatures)部分解決了這個問題,但是如果仍然需

要第三方的支持才能防止雙重支付(double-spending)的話,那么這種系統(tǒng)

也就失去了存在的價值。我們(we)在此提出一種解決方案,使現(xiàn)金系統(tǒng)在點對

點的環(huán)境下運行,并防止雙重支付問題。該網(wǎng)絡(luò)通過隨機散列(hashing)對

全部交易加上時間戳(timestamps),將它們合并入一個不斷延伸的基于隨機

散列的工作量證明(proof-of-work)的鏈條作為交易記錄,除非重新完成全

部的工作量證明,形成的交易記錄將不可更改。最長的鏈條不僅將作為被觀察

到的事件序列(sequence)的證明,而且被看做是來自CPU計算能力最大的池

(pool)。只要大多數(shù)的CPU計算能力都沒有打算合作起來對全網(wǎng)進行攻擊,

那么誠實的節(jié)點將會生成最長的、超過攻擊者的鏈條。這個系統(tǒng)本身需要的基

礎(chǔ)設(shè)施非常少。信息盡最大努力在全網(wǎng)傳播即可,節(jié)點(nodes)可以隨時離開

和重新加入網(wǎng)絡(luò),并將最長的工作量證明鏈條作為在該節(jié)點離線期間發(fā)生的交

易的證明。

1. 簡介

互聯(lián)網(wǎng)上的貿(mào)易,幾乎都需要借助金融機構(gòu)作為可資信賴的第三方來處理電子支付信息。雖

然這類系統(tǒng)在絕大多數(shù)情況下都運作良好,但是這類系統(tǒng)仍然內(nèi)生性地受制于“基于信用的

模式”(trust based model)的弱點。我們無法實現(xiàn)完全不可逆的交易,因為金融機構(gòu)總是

不可避免地會出面協(xié)調(diào)爭端。而金融中介的存在,也會增加交易的成本,并且限制了實際可

行的最小交易規(guī)模,也限制了日常的小額支付交易。并且潛在的損失還在于,很多商品和服

務(wù)本身是無法退貨的,如果缺乏不可逆的支付手段,互聯(lián)網(wǎng)的貿(mào)易就大大受限。因為有潛在

的退款的可能,就需要交易雙方擁有信任。而商家也必須提防自己的客戶,因此會向客戶索

取完全不必要的個人信息。而實際的商業(yè)行為中,一定比例的欺詐性客戶也被認(rèn)為是不可避

免的,相關(guān)損失視作銷售費用處理。而在使用物理現(xiàn)金的情況下,這些銷售費用和支付問題

上的不確定性卻是可以避免的,因為此時沒有第三方信用中介的存在。

所以,我們非常需要這樣一種電子支付系統(tǒng),它基于密碼學(xué)原理而不基于信用,使得任何達(dá)

成一致的雙方,能夠直接進行支付,從而不需要第三方中介的參與。杜絕回滾(reverse)支

付交易的可能,這就可以保護特定的賣家免于欺詐;而對于想要保護買家的人來說,在此環(huán)

境下設(shè)立通常的第三方擔(dān)保機制也可謂輕松加愉快。在這篇論文中,我們(we)將提出一種通

過點對點分布式的時間戳服務(wù)器來生成依照時間前后排列并加以記錄的電子交易證明,從而

解決雙重支付問題。只要誠實的節(jié)點所控制的計算能力的總和,大于有合作關(guān)系的

(cooperating)攻擊者的計算能力的總和,該系統(tǒng)就是安全的。

2. 交易(Transactions)

我們定義,一枚電子貨幣(an electronic coin)是這樣的一串?dāng)?shù)字簽名:每一位所有者通

過對前一次交易和下一位擁有者的公鑰(Public key) 簽署一個隨機散列的數(shù)字簽名,并將

這個簽名附加在這枚電子貨幣的末尾,電子貨幣就發(fā)送給了下一位所有者。而收款人通過對

簽名進行檢驗,就能夠驗證該鏈條的所有者。

該過程的問題在于,收款人將難以檢驗,之前的某位所有者,是否對這枚電子貨幣進行了雙

重支付。通常的解決方案,就是引入信得過的第三方權(quán)威,或者類似于造幣廠(mint)的機

構(gòu),來對每一筆交易進行檢驗,以防止雙重支付。在每一筆交易結(jié)束后,這枚電子貨幣就要

被造幣廠回收,而造幣廠將發(fā)行一枚新的電子貨幣;而只有造幣廠直接發(fā)行的電子貨幣,才

算作有效,這樣就能夠防止雙重支付。可是該解決方案的問題在于,整個貨幣系統(tǒng)的命運完

全依賴于運作造幣廠的公司,因為每一筆交易都要經(jīng)過該造幣廠的確認(rèn),而該造幣廠就好比

是一家銀行。

我們需要收款人有某種方法,能夠確保之前的所有者沒有對更早發(fā)生的交易實施簽名。從邏

輯上看,為了達(dá)到目的,實際上我們需要關(guān)注的只是于本交易之前發(fā)生的交易,而不需要關(guān)

注這筆交易發(fā)生之后是否會有雙重支付的嘗試。為了確保某一次交易是不存在的,那么唯一

的方法就是獲悉之前發(fā)生過的所有交易。在造幣廠模型里面,造幣廠獲悉所有的交易,并且

決定了交易完成的先后順序。如果想要在電子系統(tǒng)中排除第三方中介機構(gòu),那么交易信息就

應(yīng)當(dāng)被公開宣布(publicly announced)[1] ,我們需要整個系統(tǒng)內(nèi)的所有參與者,都有唯

一公認(rèn)的歷史交易序列。收款人需要確保在交易期間絕大多數(shù)的節(jié)點都認(rèn)同該交易是首次出

現(xiàn)。

3. 時間戳服務(wù)器(Timestamp server)

本解決方案首先提出一個“時間戳服務(wù)器”。時間戳服務(wù)器通過對以區(qū)塊(block)形式存在

的一組數(shù)據(jù)實施隨機散列而加上時間戳,并將該隨機散列進行廣播,就像在新聞或世界性新

聞組網(wǎng)絡(luò)(Usenet)的發(fā)帖一樣[2][3][4][5] 。顯然,該時間戳能夠證實特定數(shù)據(jù)必然于某

特定時間是的確存在的,因為只有在該時刻存在了才能獲取相應(yīng)的隨機散列值。每個時間戳

應(yīng)當(dāng)將前一個時間戳納入其隨機散列值中,每一個隨后的時間戳都對之前的一個時間戳進行

增強(reinforcing),這樣就形成了一個鏈條(Chain)。

4. 工作量證明(Proof-of-Work)

為了在點對點的基礎(chǔ)上構(gòu)建一組分散化的時間戳服務(wù)器,僅僅像報紙或世界性新聞網(wǎng)絡(luò)組一

樣工作是不夠的,我們還需要一個類似于亞當(dāng)·柏克(Adam Back)提出的哈?,F(xiàn)金

(Hashcash)[6] 。在進行隨機散列運算時,工作量證明機制引入了對某一個特定值的掃描

工作,比方說SHA-256下,隨機散列值以一個或多個0開始。那么隨著0的數(shù)目的上升, 找到

這個解所需要的工作量將呈指數(shù)增長,而對結(jié)果進行檢驗則僅需要一次隨機散列運算。

我們在區(qū)塊中補增一個隨機數(shù)(Nonce),這個隨機數(shù)要使得該給定區(qū)塊的隨機散列值出現(xiàn)了

所需的那么多個0。我們通過反復(fù)嘗試來找到這個隨機數(shù),直到找到為止,這樣我們就構(gòu)建

了一個工作量證明機制。只要該CPU耗費的工作量能夠滿足該工作量證明機制,那么除非重

新完成相當(dāng)?shù)墓ぷ髁浚搮^(qū)塊的信息就不可更改。由于之后的區(qū)塊是鏈接在該區(qū)塊之后的,

所以想要更改該區(qū)塊中的信息,就還需要重新完成之后所有區(qū)塊的全部工作量。

同時,該工作量證明機制還解決了在集體投票表決時,誰是大多數(shù)的問題。如果決定大多數(shù)

的方式是基于IP地址的,一IP地址一票,那么如果有人擁有分配大量IP地址的權(quán)力,則該機

制就被破壞了。而工作量證明機制的本質(zhì)則是一CPU一票?!按蠖鄶?shù)”的決定表達(dá)為最長的

鏈,因為最長的鏈包含了最大的工作量。如果大多數(shù)的CPU為誠實的節(jié)點控制,那么誠實的

鏈條將以最快的速度延長,并超越其他的競爭鏈條。如果想要對業(yè)已出現(xiàn)的區(qū)塊進行修改,

攻擊者必須重新完成該區(qū)塊的工作量外加該區(qū)塊之后所有區(qū)塊的工作量,并最終趕上和超越

誠實節(jié)點的工作量。我們將在后文證明,設(shè)想一個較慢的攻擊者試圖趕上隨后的區(qū)塊,那么

其成功概率將呈指數(shù)化遞減。

另一個問題是,硬件的運算速度在高速增長,而節(jié)點參與網(wǎng)絡(luò)的程度則會有所起伏。為了解

決這個問題,工作量證明的難度(the proof-of-work difficulty)將采用移動平均目標(biāo)的方

法來確定,即令難度指向令每小時生成區(qū)塊的速度為某一個預(yù)定的平均數(shù)。如果區(qū)塊生成的

速度過快,那么難度就會提高。

5. 網(wǎng)絡(luò)

運行該網(wǎng)絡(luò)的步驟如下:

1) 新的交易向全網(wǎng)進行廣播;

2) 每一個節(jié)點都將收到的交易信息納入一個區(qū)塊中;

3) 每個節(jié)點都嘗試在自己的區(qū)塊中找到一個具有足夠難度的工作量證

明;

4) 當(dāng)一個節(jié)點找到了一個工作量證明,它就向全網(wǎng)進行廣播;

5) 當(dāng)且僅當(dāng)包含在該區(qū)塊中的所有交易都是有效的且之前未存在過

的,其他節(jié)點才認(rèn)同該區(qū)塊的有效性;

6) 其他節(jié)點表示他們接受該區(qū)塊,而表示接受的方法,則是在跟隨該

區(qū)塊的末尾,制造新的區(qū)塊以延長該鏈條,而將被接受區(qū)塊的隨機散列值視

為先于新區(qū)快的隨機散列值。

節(jié)點始終都將最長的鏈條視為正確的鏈條,并持續(xù)工作和延長它。如果有兩個節(jié)點同時廣播

不同版本的新區(qū)塊,那么其他節(jié)點在接收到該區(qū)塊的時間上將存在先后差別。當(dāng)此情形,他

們將在率先收到的區(qū)塊基礎(chǔ)上進行工作,但也會保留另外一個鏈條,以防后者變成最長的鏈

條。該僵局(tie)的打破要等到下一個工作量證明被發(fā)現(xiàn),而其中的一條鏈條被證實為是

較長的一條,那么在另一條分支鏈條上工作的節(jié)點將轉(zhuǎn)換陣營,開始在較長的鏈條上工作。

所謂“新的交易要廣播”,實際上不需要抵達(dá)全部的節(jié)點。只要交易信息能夠抵達(dá)足夠多的

節(jié)點,那么他們將很快被整合進一個區(qū)塊中。而區(qū)塊的廣播對被丟棄的信息是具有容錯能力

的。如果一個節(jié)點沒有收到某特定區(qū)塊,那么該節(jié)點將會發(fā)現(xiàn)自己缺失了某個區(qū)塊,也就可

以提出自己下載該區(qū)塊的請求。

6. 激勵

我們約定如此:每個區(qū)塊的第一筆交易進行特殊化處理,該交易產(chǎn)生一枚由該區(qū)塊創(chuàng)造者擁

有的新的電子貨幣。這樣就增加了節(jié)點支持該網(wǎng)絡(luò)的激勵,并在沒有中央集權(quán)機構(gòu)發(fā)行貨幣

的情況下,提供了一種將電子貨幣分配到流通領(lǐng)域的一種方法。這種將一定數(shù)量新貨幣持續(xù)

增添到貨幣系統(tǒng)中的方法,非常類似于耗費資源去挖掘金礦并將黃金注入到流通領(lǐng)域。此

時,CPU的時間和電力消耗就是消耗的資源。

另外一個激勵的來源則是交易費(transaction fees)。如果某筆交易的輸出值小于輸入

值,那么差額就是交易費,該交易費將被增加到該區(qū)塊的激勵中。只要既定數(shù)量的電子貨幣

已經(jīng)進入流通,那么激勵機制就可以逐漸轉(zhuǎn)換為完全依靠交易費,那么本貨幣系統(tǒng)就能夠免

于通貨膨脹。

激勵系統(tǒng)也有助于鼓勵節(jié)點保持誠實。如果有一個貪婪的攻擊者能夠調(diào)集比所有誠實節(jié)點加

起來還要多的CPU計算力,那么他就面臨一個選擇:要么將其用于誠實工作產(chǎn)生新的電子貨

幣,或者將其用于進行二次支付攻擊。那么他就會發(fā)現(xiàn),按照規(guī)則行事、誠實工作是更有利

可圖的。因為該等規(guī)則使得他能夠擁有更多的電子貨幣,而不是破壞這個系統(tǒng)使得其自身財

富的有效性受損。

7. 回收硬盤空間

如果最近的交易已經(jīng)被納入了足夠多的區(qū)塊之中,那么就可以丟棄該交易之前的數(shù)據(jù),以回

收硬盤空間。為了同時確保不損害區(qū)塊的隨機散列值,交易信息被隨機散列時,被構(gòu)建成一

種Merkle樹(Merkle tree)[7] 的形態(tài),使得只有根(root)被納入了區(qū)塊的隨機散列值。

通過將該樹(tree)的分支拔除(stubbing)的方法,老區(qū)塊就能被壓縮。而內(nèi)部的隨機散

列值是不必保存的。

不含交易信息的區(qū)塊頭(Block header)大小僅有80字節(jié)。如果我們設(shè)定區(qū)塊生成的速率為

每10分鐘一個,那么每一年產(chǎn)生的數(shù)據(jù)位4.2MB。(80 bytes * 6 * 24 * 365 = 4.2MB)。

2008年,PC系統(tǒng)通常的內(nèi)存容量為2GB,按照摩爾定律的預(yù)言,即使將全部的區(qū)塊頭存儲于

內(nèi)存之中都不是問題。

8. 簡化的支付確認(rèn)(Simplified

Payment Verification)

在不運行完整網(wǎng)絡(luò)節(jié)點的情況下,也能夠?qū)χЦ哆M行檢驗。一個用戶需要保留最長的工作量

證明鏈條的區(qū)塊頭的拷貝,它可以不斷向網(wǎng)絡(luò)發(fā)起詢問,直到它確信自己擁有最長的鏈條,

并能夠通過merkle的分支通向它被加上時間戳并納入?yún)^(qū)塊的那次交易。節(jié)點想要自行檢驗該

交易的有效性原本是不可能的,但通過追溯到鏈條的某個位置,它就能看到某個節(jié)點曾經(jīng)接

受過它,并且于其后追加的區(qū)塊也進一步證明全網(wǎng)曾經(jīng)接受了它。

當(dāng)此情形,只要誠實的節(jié)點控制了網(wǎng)絡(luò),檢驗機制就是可靠的。但是,當(dāng)全網(wǎng)被一個計算力

占優(yōu)的攻擊者攻擊時,將變得較為脆弱。因為網(wǎng)絡(luò)節(jié)點能夠自行確認(rèn)交易的有效性,只要攻

擊者能夠持續(xù)地保持計算力優(yōu)勢,簡化的機制會被攻擊者焊接的(fabricated)交易欺騙。

那么一個可行的策略就是,只要他們發(fā)現(xiàn)了一個無效的區(qū)塊,就立刻發(fā)出警報,收到警報的

用戶將立刻開始下載被警告有問題的區(qū)塊或交易的完整信息,以便對信息的不一致進行判

定。對于日常會發(fā)生大量收付的商業(yè)機構(gòu),可能仍會希望運行他們自己的完整節(jié)點,以保持

較大的獨立完全性和檢驗的快速性。

9. 價值的組合與分割(Combining and

Splitting Value)

雖然可以單個單個地對電子貨幣進行處理,但是對于每一枚電子貨幣單獨發(fā)起一次交易將是

一種笨拙的辦法。為了使得價值易于組合與分割,交易被設(shè)計為可以納入多個輸入和輸出。

一般而言是某次價值較大的前次交易構(gòu)成的單一輸入,或者由某幾個價值較小的前次交易共

同構(gòu)成的并行輸入,但是輸出最多只有兩個:一個用于支付,另一個用于找零(如有)。

需要指出的是,當(dāng)一筆交易依賴于之前的多筆交易時,這些交易又各自依賴于多筆交易,但

這并不存在任何問題。因為這個工作機制并不需要展開檢驗之前發(fā)生的所有交易歷史。

10. 隱私(Privacy)

傳統(tǒng)的造幣廠模型為交易的參與者提供了一定程度的隱私保護,因為試圖向可信任的第三方

索取交易信息是嚴(yán)格受限的。但是如果將交易信息向全網(wǎng)進行廣播,就意味著這樣的方法失

效了。但是隱私依然可以得到保護:將公鑰保持為匿名。公眾得知的信息僅僅是有某個人將

一定數(shù)量的貨幣發(fā)所給了另外一個人,但是難以將該交易同特定的人聯(lián)系在一起,也就是

說,公眾難以確信,這些人究竟是誰。這同股票交易所發(fā)布的信息是類似的,股票交易發(fā)生

的時間、交易量是記錄在案且可供查詢的,但是交易雙方的身份信息卻不予透露。

作為額外的預(yù)防措施,使用者可以讓每次交易都生成一個新的地址,以確保這些交易不被追

溯到一個共同的所有者。但是由于并行輸入的存在,一定程度上的追溯還是不可避免的,因

為并行輸入表明這些貨幣都屬于同一個所有者。此時的風(fēng)險在于,如果某個人的某一個公鑰

被確認(rèn)屬于他,那么就可以追溯出此人的其它很多交易。

11. 計算

設(shè)想如下場景:一個攻擊者試圖比誠實節(jié)點產(chǎn)生鏈條更快地制造替代性區(qū)塊鏈。即便它達(dá)到

了這一目的,但是整個系統(tǒng)也并非就此完全受制于攻擊者的獨斷意志了,比方說憑空創(chuàng)造價

值,或者掠奪本不屬于攻擊者的貨幣。這是因為節(jié)點將不會接受無效的交易,而誠實的節(jié)點

永遠(yuǎn)不會接受一個包含了無效信息的區(qū)塊。一個攻擊者能做的,最多是更改他自己的交易信

息,并試圖拿回他剛剛付給別人的錢。

誠實鏈條和攻擊者鏈條之間的競賽,可以用二叉樹隨機漫步(Binomial Random Walk)來描

述。成功事件定義為誠實鏈條延長了一個區(qū)塊,使其領(lǐng)先性+1,而失敗事件則是攻擊者的鏈

條被延長了一個區(qū)塊,使得差距-1。

攻擊者成功填補某一既定差距的可能性,可以近似地看做賭徒破產(chǎn)問題(Gambler’s Ruin

problem)。假定一個賭徒擁有無限的透支信用,然后開始進行潛在次數(shù)為無窮的賭博,試

圖填補上自己的虧空。那么我們可以計算他填補上虧空的概率,也就是該攻擊者趕上誠實鏈

條,如下所示[8] :

假定p>q,那么攻擊成功的概率就因為區(qū)塊數(shù)的增長而呈現(xiàn)指數(shù)化下降。由于概率是攻擊者

的敵人,如果他不能幸運且快速地獲得成功,那么他獲得成功的機會隨著時間的流逝就變得

愈發(fā)渺茫。那么我們考慮一個收款人需要等待多長時間,才能足夠確信付款人已經(jīng)難以更改

交易了。我們假設(shè)付款人是一個支付攻擊者,希望讓收款人在一段時間內(nèi)相信他已經(jīng)付過款

了,然后立即將支付的款項重新支付給自己。雖然收款人屆時會發(fā)現(xiàn)這一點,但為時已晚。

收款人生成了新的一對密鑰組合,然后只預(yù)留一個較短的時間將公鑰發(fā)送給付款人。這將可

以防止以下情況:付款人預(yù)先準(zhǔn)備好一個區(qū)塊鏈然后持續(xù)地對此區(qū)塊進行運算,直到運氣讓

他的區(qū)塊鏈超越了誠實鏈條,方才立即執(zhí)行支付。當(dāng)此情形,只要交易一旦發(fā)出,攻擊者就

開始秘密地準(zhǔn)備一條包含了該交易替代版本的平行鏈條。

然后收款人將等待交易出現(xiàn)在首個區(qū)塊中,然后在等到z個區(qū)塊鏈接其后。此時,他仍然不

能確切知道攻擊者已經(jīng)進展了多少個區(qū)塊,但是假設(shè)誠實區(qū)塊將耗費平均預(yù)期時間以產(chǎn)生一

個區(qū)塊,那么攻擊者的潛在進展就是一個泊松分布,分布的期望值為:

當(dāng)此情形,為了計算攻擊者追趕上的概率,我們將攻擊者取得進展區(qū)塊數(shù)量的泊松分布的概

率密度,乘以在該數(shù)量下攻擊者依然能夠追趕上的概率。

化為如下形式,避免對無限數(shù)列求和:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容