[Paper Weekly外傳]比特幣的誕生:Bitcoin A Peer-to-Peer Electronic Cash System

本文會提到什么

  1. 比特幣是什么?
  2. 比特幣系統(tǒng)是如何運轉(zhuǎn)的?
  3. 比特幣是怎么交易的?

本文不會提到什么

  1. 到哪兒買比特幣?
  2. 怎么挖礦?
  3. 現(xiàn)在買比特幣會不會暴富?(如果有內(nèi)幕消息歡迎私信筆者:)

最近一個非常流行的概念--“比特幣”,朋友圈中充斥著各種“某人”通過投資比特幣實現(xiàn)了財富自由這樣的消息。雖然這種天上掉餡餅不勞而獲的新聞過于流行時總是讓人嗅到陰謀的味道,但是筆者還是懷著看完論文就可以一夜暴富的理想通讀了一遍論文,嘿嘿嘿嘿嘿...
首先比特幣能火并不是沒有道理,這一切都要依賴于它背后有著一套比較完善的理論。那么這次介紹的這篇論文是Satoshi Nakamoto(中本聰)關于比特幣理論基礎的奠基之作:Bitcoin: A Peer-to-Peer Electronic Cash System。


王霸天同學的奇思妙想

比特幣最簡單的解釋就是這是一個“分布式的記賬系統(tǒng)”。
假設末日降臨世界上就剩了三個人,張三李四和王霸天。為了生存他們之間總是要交易一些東西,但是完全的以物易物實在笨拙(比如說張三養(yǎng)了只羊想和李四交換雞蛋,但是李四剛好沒有雞蛋時,交易就不能進行),只有三個人的話還要制作貨幣實在太麻煩了。于是聰明的王霸天同學就想出了一個主意:我們?nèi)齻€人可以使用記賬的方式交易。
一天,王霸天拿出一堆賬本發(fā)給三個人,說:“我有一個想法來解決貨幣的問題,以后把每一筆交易都記錄在賬本上,以后所有的交易我們都告訴其他人,每個人都把這筆交易抄在自己的賬本上,那樣的話每個人有多少錢可以用只需要把賬本重新過一遍就知道了?!?br> 張三李四不解:“那我們的錢從哪里來呢?”
王霸天說:“記賬也是一種勞動嘛,以后每次都給記賬最快的那個同學賬上多記一塊錢作為獎勵,直到賬面上流通了2100萬塊錢,記賬同學可以用這些錢來換東西。你看,趁你倆不注意我已經(jīng)記了好幾筆賬了,現(xiàn)在我快有100塊錢了?!?br> 張三和李四壓著怒火:“你這么狡猾,萬一你做假賬怎么辦?”
王霸天笑了一下:“咱們所有人手上都有一份賬本,我們想確認誰有多少錢時,把每個人手上的賬本擺到一起投票,少數(shù)服從多數(shù),這樣總沒得說了吧。”
張三和李四還想反駁,但是一時找不出什么理由,只能暫時答應下來。
于是,一種新的貨幣系統(tǒng)--比特幣的雛形就誕生了。

恩...比特幣總的來說就是這么一個東西,如果不想關注具體細節(jié),那么接下來的內(nèi)容都是廢話,請直接跳到最后的問題討論。

交易

首先,要明確的是,在比特幣系統(tǒng)中的比特幣到底是什么。
我們將一種數(shù)字簽名(digital signatures)的鏈(chain)定義為一種電子貨幣。每一個數(shù)字簽名代表了一次交易(transacitions):當數(shù)字貨幣的歸屬發(fā)生轉(zhuǎn)移(所有權(quán)從前一個擁有者轉(zhuǎn)移到后一個擁有者)時,通過上一次交易和下一個擁有者的公鑰(public key)生成一個哈希散列作為簽名添加到貨幣的末尾。每一次支付都可以通過簽名確認電子貨幣的所有權(quán)(即是否到賬)。
但是,這樣做存在的問題是沒有辦法驗證貨幣的擁有者是否進行了雙重支付,即某一個電子貨幣的鏈條是否產(chǎn)生了有歧義的分之。一種解決方式是選擇一個可以信賴的機構(gòu),對每一次交易的雙重支付進行檢查。每一次交易中,電子貨幣不是直接改變所有權(quán),而是被歸還給造幣廠,再由造幣廠產(chǎn)生電子貨幣,以此來防止雙重支付的發(fā)生。在這種情況下,所有的交易依然是“中心化”的,即一定要有一個受信任的機構(gòu)成為造幣廠,就像是銀行所扮演的角色。
如何才能防止雙重支付并且排除第三方機構(gòu)的干預呢。一種方法是將所有的交易信息向系統(tǒng)中的結(jié)點“公開宣布”,并通過一種機制保證交易歷史序列的唯一性。一次支付行為在系統(tǒng)中大多數(shù)結(jié)點都認可時,才被認為是有效的。這種方式就像是所有交易的參與者都擁有自己的賬本,上面記錄著迄今為止的所有交易,每一筆交易都向所有的參與者公開,參與者通過一定的方式更新賬本,當一個交易發(fā)生時,收款人向所有的參與者確認,當交易與大多數(shù)參與者的賬本不產(chǎn)生矛盾時就為有效交易。


交易

任務量證明

在本文介紹的電子貨幣系統(tǒng)中,所有的交易數(shù)據(jù)以區(qū)塊(block )的形式存儲。本文提出了一種時間戳服務器(timestamp server)機制。時間戳服務器將存儲數(shù)據(jù)的區(qū)塊打上hash時間戳,并向系統(tǒng)內(nèi)結(jié)點廣播此hash值。這樣的時間戳是該區(qū)塊數(shù)據(jù)在某時間點存在的證明。每一個時間戳都包含了之前時間戳的hash值,以此形成一條鏈(chain)。


timestamp server

為了構(gòu)建一個點對點的分布式時間戳服務器,工作量證明機制被引入到了該系統(tǒng)中。工作量證明系統(tǒng)引入了在哈希時對一個特定值的掃描(例如一個以一定比特0開始的SHA-256碼)。隨著所需0比特數(shù)的增長,要找到這樣一個值的工作量呈指數(shù)級增長,但是要驗證這樣的值只需要進行一次哈希。


工作量證明機制解決了兩個問題:統(tǒng)一交易歷史序列以及如何定義大多數(shù)節(jié)點。

  • 統(tǒng)一交易歷史序列:對于特定的block,時間戳服務器必須不斷嘗試找到一個隨機數(shù),使得將該隨機數(shù)引入block后,哈希值出現(xiàn)足夠比特數(shù)的0。對于特定的block,能滿足條件的隨機數(shù)也是不同的,因此如果要篡改block中的內(nèi)容,需要重新去完成相應的工作量。又因為對應的區(qū)塊包含了前一個區(qū)塊的哈希散列,所以還需要將該區(qū)塊之后所有區(qū)塊的工作量全部完成才能形成一條與誠實區(qū)塊鏈長度相當?shù)逆湕l。
  • 如何定義大多數(shù)節(jié)點:如前文所說,如果把比特幣看作一個分布式賬單系統(tǒng),那么在比特幣系統(tǒng)中,為大部分參與者所接受的賬單版本才能去驗證交易的有效性。那么如何去定義“大多數(shù)”,即如何決定投票權(quán)。一種方式是“一IP一票”,但是這樣的方式在某些人獲得大部分IP分配權(quán)時其公平性被破壞,比較容易受到干擾。而工作量證明其正真的內(nèi)涵是根據(jù)計算力分配票權(quán),當大部分計算力掌握在誠實的節(jié)點手中時,正確的鏈條將以最快的速度延長。而企圖篡改交易內(nèi)容的攻擊者將很難追上正確鏈條的延長速度,由于在認證交易時,只采用最長的鏈條最為基準,攻擊者的行為就會失敗。攻擊者攻擊成功的概率,隨著落后鏈條的總長度指數(shù)級衰減。綜上,哪一個區(qū)塊鏈為有效區(qū)塊鏈是由參與的節(jié)點的計算能力投票產(chǎn)生的。

由于參與區(qū)塊網(wǎng)絡的總的計算量是變化的(原因如硬件計算速度的提升,參與計算的節(jié)點數(shù)量等),為了保持區(qū)塊產(chǎn)生的速度,隨機數(shù)的生成難度(如哈希值零的位數(shù))是隨著計算能力的滑動平均變化的。

網(wǎng)絡機制

在該系統(tǒng)中,所有參與的節(jié)點組成一個網(wǎng)絡。網(wǎng)絡按照如下機制運行著:

  1. 所有的新交易都向所有節(jié)點廣播。
  2. 所有的節(jié)點都將收集到的交易信息封裝為一個區(qū)塊(block)。
  3. 所有的區(qū)塊試圖找到它所擁有區(qū)塊的工作量證明(隨機數(shù))。
  4. 當一個節(jié)點完成工作量證明時(嘗試出隨機數(shù)),會將完成的區(qū)塊對所有節(jié)點進行廣播。
  5. 其他節(jié)點在確認了區(qū)塊中的交易信息是有效的并且第一次發(fā)生后,接受該區(qū)塊。
  6. 當一個節(jié)點接受一個區(qū)塊時,他會采用該區(qū)塊的散列值作為產(chǎn)生下一個區(qū)塊的前置(previous hash),重新開始嘗試產(chǎn)生新的工作量證明。

所有的節(jié)點都將最長的區(qū)塊鏈作為正確的鏈條,并根據(jù)該鏈條嘗試產(chǎn)生新的區(qū)塊來延長該鏈條。當“歧義”產(chǎn)生時,即兩個節(jié)點幾乎同時完成工作,產(chǎn)生了兩個不同版本的區(qū)塊時,不同的節(jié)點接收到兩個不同版本的區(qū)塊的先后順序可能出現(xiàn)差異。那么約定,所有的節(jié)點都工作在他最先接受的區(qū)塊上,并且存儲另外一個區(qū)塊以防止該區(qū)塊變成最長區(qū)塊。此時,不同的節(jié)點工作在了不同的區(qū)塊鏈上,但是當新的工作證明產(chǎn)生時,總會有一條鏈條成為最長的鏈條,那么,其他節(jié)點又重新回到新的鏈條上工作。
交易信息不需要被廣播到所有的節(jié)點中去,只要它被廣播到了足夠多(有能力生成新工作量證明)的節(jié)點后,他總會被整合到新的區(qū)塊中。而當某一個節(jié)點發(fā)現(xiàn)自己缺失了區(qū)塊時,它也可以發(fā)起請求下載缺失的區(qū)塊。

獎勵

接觸到比特幣的人對“挖礦”這個詞應該不會太陌生,那么廣大的礦工們挖到的比特幣是從哪里產(chǎn)生的,這里就要說到比特幣系統(tǒng)的“獎勵”機制。在比特幣系統(tǒng)中,區(qū)塊中的第一筆交易被特殊化為:將一個新的比特幣的擁有權(quán)修改為該區(qū)塊的創(chuàng)建者。通過這種機制,鼓勵節(jié)點為了得到新的電子貨幣而加入到網(wǎng)絡中。同時實現(xiàn)了一種去中心化的電子貨幣發(fā)行方式。通過消耗資源(如電力、時間和硬件設施)來是新的電子貨幣加入到系統(tǒng)中的情形,就像是人類挖掘金礦來講新的黃金加入流通一樣。
獎勵機制的另外一個基礎是“交易費(transaction fees)”。當一個交易的輸出價值小于它的輸入價值,那么其中的差額就作為交易付費被添加到存儲該筆交易的區(qū)塊中。當流通中的貨幣存量達到一定量級時,獎勵機制就可以完全依靠交易費來實現(xiàn),同時,由于不再發(fā)行新的比特幣,該流通系統(tǒng)完全沒有了通貨膨脹。
由于獎勵機制的存在,企圖通過參與網(wǎng)絡獲利的人面臨著兩種選擇:一是誠實勞動來獲得獎勵;二是嘗試攻擊修改交易來使他付出的錢重新回到他手中。就像前面介紹的,第二種方式有著很大的難度,同時攻擊行為也會破壞整個網(wǎng)絡的信用反過來侵害攻擊者的利益基礎。所以,獎勵機制也鼓勵了通過誠實勞動來維護系統(tǒng)公平的行為。
現(xiàn)階段比特幣礦工所做的事情其實就是幫助比特幣系統(tǒng)“記賬”,努力成為第一個工作證明的提交者,從而獲得對區(qū)塊產(chǎn)生時新電子貨幣的所有權(quán)。另外提一下,比特幣的總共有2100萬枚,這個總量是限定的。

壓縮方式

由于交易也是鏈式的,那么其實在進行驗證時,只需要驗證最近的交易信息,多余的交易信息被丟棄。為了保證在丟棄信息的同時,區(qū)塊的信息不被修改,交易信息以默克爾樹(Merkle tree)的形式進行組織,區(qū)塊只保存了根節(jié)點的隨機散列。那么分支節(jié)點的信息就可以隨意裁剪而不更改區(qū)塊的數(shù)據(jù)。


默克爾樹

支付驗證

在支付驗證時,收款方需要驗證的是輸入交易的有效性,從而確認所有權(quán)。用戶不停地向網(wǎng)絡詢問,從而確信自己存儲的工作量證明鏈(區(qū)塊鏈)是最長的工作量證明鏈(區(qū)塊鏈),并找到將該交易封裝到區(qū)塊中的默克爾樹分支。一個節(jié)點無法獨自驗證交易的有效性,但是通過回溯,他可以找到某一個節(jié)點接收過該交易的證據(jù),同時最長鏈條也驗證了整個網(wǎng)絡接收了這筆交易,那么該筆交易就是有效交易。


交易驗證

比特幣如何找零

黃金之所以能夠成為貨幣一個很關鍵的優(yōu)勢就是黃金是便于分割的。之前所說的比特幣都是一枚一枚產(chǎn)生的,如果他不能能夠進行有效的價值分割,那么也很難成為一種有效的貨幣。文中提到的方法是將每一筆交易設計為多輸入多輸出。一個交易的輸入為一個價值較大的前次交易,或多個價值較小的前次交易,輸出為兩個:支付輸出和找零輸出。由此,價值被有效的分割開來,同時每一筆交易的驗證也只需要去查找與這筆交易相關的交易。

比特幣系統(tǒng)的機制基本就是前文這些,剩下的是我在最初看到比特幣這個事物時腦袋里的一些問題,和讀完論文后對這些問題的一些看法。

問題

  1. 比特幣是不是一個騙局?
    答:目前,從理論的角度,不是。比特幣是一種設計非常精妙,擁有替代法幣潛力的系統(tǒng)。但是從投資的角度,沒準。
  2. 比特幣為什么可以被當成一種貨幣?
    答:比特幣的系統(tǒng)機制決定了它的一些特點:可驗證的所有權(quán)歸屬、稀缺性(總量固定)、流通性。這些特性只要有了,只要你“愿意”就可以成為一般等價物。
  3. 比特幣的價值基礎是什么?
    答:比特幣的價值基礎幾個方面:一方面來自于信念,即大家相信這個東西有成為一種貨幣的潛質(zhì)(比如我);另一方面來自于投機倒把的欲望,比如中國大媽會買;還有一方面來自于它確實有它的優(yōu)勢,比如說國際轉(zhuǎn)賬,比如說洗黑錢。
    總之,比特幣的價值來自于大家都愿意用真錢去換虛擬的比特幣。
  4. 比特幣的風險有多大?
    答:比特幣的風險我覺得分為兩種:
    一是比特幣系統(tǒng)的風險,有很多因素會導致比特幣系統(tǒng)失效,比如說比特幣所依賴的密碼理論被破解時,比特幣將失效;當攻擊者掌握了超過50%的計算資源偽造交易時,比特幣會失效等等。
    二是比特幣的投資風險,即人們認為比特幣值多少錢。當大多數(shù)人都看漲比特幣時,擁有者就會持幣觀望,市場上可流通的比特幣稀缺,比特幣就會繼續(xù)上漲,但如果大多數(shù)人都看跌比特幣時,持有者大量拋售,比特幣就會瘋狂下跌。
    其實,我還是比較看好比特幣的理論,即比特幣系統(tǒng)出現(xiàn)風險的概率比較低。而投資風險還是很大的,特別在比特幣價值總量沒那么大時,人為因素可以輕易控制漲跌,請懷著跟莊家喝喝湯的心態(tài)參與,并且做好隨時被收割韭菜的心理準備。
  5. 現(xiàn)在去當?shù)V工能賺錢么?
    答:不能,請別去作死。專業(yè)礦池的硬件設備效率是你cpu、gpu的成百上千倍,不專業(yè)只會虧。
  6. 現(xiàn)在去買比特幣能一夜暴富么?
    答:不好意思,我也想知道。如果有內(nèi)幕消息請聯(lián)系我。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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