區(qū)塊鏈就是比特幣世界這個村子的賬本,誰挖到礦,誰就有權(quán)在這個賬本翻開新的一頁,并在新的一頁記下“X年X日,本村某某挖礦得到比特幣一枚,并得到獎勵的手續(xù)費(fèi)若干”。
比特幣又火了。為什么要說又呢?因為比特幣在 2013 年已經(jīng)火過一次了。這次與 2013 年相同的是,比特幣的價格一路飆升,讓人咂舌。與 2013 年不同的是,這次人們不僅僅關(guān)注比特幣的價格,也開始關(guān)注比特幣背后的技術(shù)——區(qū)塊鏈。
一夜之間,區(qū)塊鏈從舞臺背后站到了聚光燈下,成為了人們追捧的熱點。物流、醫(yī)藥、版權(quán)…好像哪都可以憑借區(qū)塊鏈脫胎換骨。那么,這么神奇的技術(shù),到底是怎么回事?
本文就以最通俗的語言,不涉及任何高等數(shù)學(xué)和計算機(jī)知識,來介紹一下比特幣和區(qū)塊鏈系統(tǒng)。
說到區(qū)塊鏈就不得不說比特幣,比特幣是區(qū)塊鏈技術(shù)最好的載體,所以本文就以比特幣為例來介紹區(qū)塊鏈。
別小瞧這兩點,這兩點同時存在可不是一件容易事兒。
首先來說說去中心化,通常去中心化的貨幣一般都要追溯到很久以前了,遠(yuǎn)古時代人們自發(fā)地使用貝殼、石子做為雛形貨幣進(jìn)行交易,這時候的貨幣可以看作是去中心化的貨幣——無需中央銀行來組織發(fā)行、確認(rèn)交易合法性。
但是使用這類貨幣的弊端也不必我多說,貨幣供給不穩(wěn)定,取決于每年的貝類產(chǎn)量;貨幣質(zhì)量不一,有的大有的小,有的是花蛤有的是文蛤;交易很繁瑣,大宗交易動不動就要好幾車的貝殼,這么多貨幣運(yùn)來運(yùn)去還容易被搶劫。
于是貨幣進(jìn)化,信用貨幣時代到來,貨幣成了銀行賬戶里的數(shù)字,上面的問題都解決了,但是我們必須需要銀行來控制貨幣的發(fā)行、防偽,來進(jìn)行交易結(jié)算,我們的財產(chǎn)權(quán)全掌握在了銀行的手中。銀行喜歡動不動搞點QE放點水,我們銀行卡里的錢越來越貶值。
這時候,我們就希望能有一種貨幣,既能像使用貝殼一樣無需銀行插手,又能符合當(dāng)前信息時代對貨幣功能的需求。于是,集這兩種特點于一身的比特幣誕生了。
比特幣的基本原理
做為一種貨幣,通常就要滿足幾個特點:得有人發(fā)行它,得能持有它,人與人之間可以互相交換它。
持有
持有比特幣非常簡單,只要有一個收款地址,就可以持有比特幣并接受比特幣。所持有的比特幣數(shù)量只是這個地址下的一個數(shù)字。
有人會問,這不跟銀行賬戶一樣么,確實很像,但實質(zhì)又很不一樣。銀行系統(tǒng)是一個中心化的系統(tǒng),賬戶的余額是由銀行說了算的,哪天銀行系統(tǒng)出錯余額變成0,那你就真的從ATM機(jī)里取不出錢。
比特幣不使用這種權(quán)威的中心機(jī)構(gòu),又需要一個穩(wěn)定的記賬系統(tǒng),所以解決辦法是每一個“礦工”都把比特幣世界發(fā)生過的所有交易記錄存在自己的硬盤上。有了全部的交易記錄,推算每個人有多少余額也就很容易了。這個被保存在所有人電腦里的交易記錄,學(xué)名就是區(qū)塊鏈。黑客可以黑掉一些人保存的區(qū)塊鏈,但是他做不到黑掉全世界大部分人,只要有大部分仍保存著正確的區(qū)塊鏈,那么整個系統(tǒng)就可以通過糾錯重新恢復(fù)正常。
就像打麻將時,我們有時候用記賬方式來記錄每回合的應(yīng)收應(yīng)付,比特幣世界也通過記賬來交易,每發(fā)生一筆交易都會公之于眾,然后大家把這筆交易記錄在自己的小賬本上,這樣每家有多少錢,大家在自己的小賬本上都能查清楚。只不過當(dāng)記賬由4個人變成全比特幣世界的村民時,這就需要一個稍微復(fù)雜點的系統(tǒng)了。
發(fā)行
再來看看發(fā)行。我們先看紙幣是怎么發(fā)行的,很簡單,央行開動印刷機(jī),一瞬間出現(xiàn)大把“毛爺爺”。而做為一種去中心化的電子貨幣,比特幣是沒有央行的,那怎么發(fā)行呢?
比特幣規(guī)定,人們可以去解答一個困難的問題,誰最先答出來,誰就可以發(fā)行一塊比特幣,也就是我們所謂的“挖礦”。
這個困難的問題是什么呢?是哈希(hashing)的問題。哈希是一個函數(shù)F,對輸入X進(jìn)行一些運(yùn)算來得到哈希值Y。就是咱們高中學(xué)過的Y = F(X)。比特幣讓你解答的問題就是,告訴你哈希值Y和F,求X。
這時候你會說了,這不就是個反函數(shù)的事么。抱歉,哈希函數(shù)這個函數(shù)比較特殊,找不到合適的反函數(shù),要想求出X,唯一的方法就是一個一個數(shù)來試,把每一個數(shù)都代入到F里,看看結(jié)果是不是Y,如果恰好蒙對了,那也就把這個問題解答出來了。
所以說所謂的貨幣發(fā)行、挖礦,實際上就是一幫人在用最好的計算機(jī)來撞大運(yùn)蒙這個數(shù)。當(dāng)一名礦工蒙對X后,也就是挖到礦后,他就獲得了在原有的區(qū)塊鏈末端創(chuàng)造一個新的交易區(qū)塊的權(quán)利,在這個新創(chuàng)建的交易區(qū)塊上,這位礦工可以附帶一個由比特幣世界作為付款人,收款人是任何人交易,這樣,他就通過這個交易,創(chuàng)造并發(fā)行了一枚比特幣。
區(qū)塊鏈就是由一串交易區(qū)塊組成的。我們來看看交易區(qū)塊上包含什么。
一個交易區(qū)塊會顯示誰是它的父區(qū)塊,包含本區(qū)塊上的交易記錄,以及本區(qū)塊的哈希值。
這樣,隨著礦工們不斷挖礦創(chuàng)建新的交易區(qū)塊,一個接一個的區(qū)塊就串成了一串,成為了名副其實的區(qū)塊鏈!在比特幣世界中,由于某些原因,區(qū)塊鏈會發(fā)生分叉(為什么會分叉下文會提到),因而比特幣世界規(guī)定:唯一合法的區(qū)塊鏈?zhǔn)钱?dāng)前最長的區(qū)塊鏈。
區(qū)塊鏈就是比特幣世界這個村子的賬本,誰挖到礦,誰就有權(quán)在這個賬本翻開新的一頁,并在新的一頁記下“X年X日,本村某某挖礦得到比特幣一枚,并得到獎勵的手續(xù)費(fèi)若干”。這個賬本很特殊,并不是由村支書管理,而是所有的村民人手一本,誰挖到礦以后,都可以自己翻頁記賬,并讓全村人按照同樣的方式做,以保證全村所有人的賬本一致。當(dāng)全村人的賬本出現(xiàn)不一致時,規(guī)定誰家的賬本最長就聽誰的。
發(fā)行
比特幣的關(guān)鍵點在于交易。對于一個去中心化的電子貨幣系統(tǒng),交易是很有風(fēng)險的。想象一下,你和另一個人的電子貨幣交易就類似于打欠條,而且這個欠條沒有第三方公證人。如果其中一方突然翻臉,欠條的有效性是很難保障的。
由于不能使用類似銀行結(jié)算中心的第三方公證人(使用了就是中心化系統(tǒng)了),所以比特幣干脆就讓全世界人做為公證人。
所有比特幣的交易都不能偷偷摸摸進(jìn)行,都需要將這筆交易通過互聯(lián)網(wǎng)廣播到全世界。如果C想給B 0.5個比特幣,會向全世界廣播“C給了B 0.5個比特幣!”,這時所有挖礦的礦工們,會把這條交易記錄加到他們正在挖的這個交易區(qū)塊中。
他們?yōu)槭裁匆幽??因為?dāng)?shù)V工挖出礦時,除了規(guī)定獎勵的一枚比特幣外,每加多一條交易記錄,還會額外再多給一點點手續(xù)費(fèi)。蚊子肉也是肉,辛勤的礦工們沒有不喜歡的。
在把交易記錄加到區(qū)塊的過程中,礦工們首先會驗證一下這筆交易合不合法,也就是查查村里的賬本,當(dāng)C名下貨幣不足0.5個時,這條交易記錄就會被拒絕加入到區(qū)塊中。
加入到區(qū)塊中并不代表交易已經(jīng)成功,只有當(dāng)包含這個交易記錄的區(qū)塊的隨機(jī)數(shù)X被某位礦工發(fā)現(xiàn),并創(chuàng)造了新的交易區(qū)塊鏈接在當(dāng)前區(qū)塊后,才能被認(rèn)為是合法交易,這條交易記錄也就成為被驗證的交易。
B可能會問了,那也就是說C發(fā)了給我錢的廣播后,我還不能馬上確定我是不是收到錢了???
沒錯,C發(fā)廣播,只相當(dāng)于C站在村口朝全村人喊了一句 “我給B 五毛錢!”,只有當(dāng)全村的人都聽見,把這件事都記在了個自賬本上,并且記下這件事的那頁被礦工翻過去以后,B的戶頭上多了五毛錢這件事才真正得到了全村村民的認(rèn)可。由于參與比特幣挖礦的礦工眾多,通常每筆交易所需的驗證時間是非常短的,不會給交易帶來延遲感。
由此比特幣的發(fā)行和交易首尾相連扣在了一起。交易通過發(fā)布廣播的形式進(jìn)行,礦工們聽到廣播后把交易寫在交易區(qū)塊中;礦工們通過挖礦來確認(rèn)歷史交易的完成,并由此創(chuàng)建新的區(qū)塊,延長區(qū)塊鏈,發(fā)行新的比特幣。
區(qū)塊鏈的分叉
之前提到了區(qū)塊鏈的分叉。為什么區(qū)塊鏈會發(fā)生分叉呢?原因就在于去中心化。
沒有中心,大家都各自維護(hù)賬本,因此受困于網(wǎng)絡(luò)的延時、交流的不充分,難免有出現(xiàn)分歧的時候。
舉兩個例子,一個是在挖礦時容易出現(xiàn)的問題:礦工B蒙對了隨機(jī)數(shù),挖礦成功,延長了區(qū)塊鏈,注意,此時礦工B延長的區(qū)塊鏈僅僅是自己的,其他人還都不知道這件事。當(dāng)然,礦工B馬上向全世界發(fā)布挖礦成功的消息,讓大家按照他的方式延長區(qū)塊鏈。
但是這時,另一位礦工C也蒙對了隨機(jī)數(shù),他或者因為網(wǎng)速延遲還沒聽到B的廣播,或者聽到廣播但不甘心,存心想破壞規(guī)則,于是他也把自己的區(qū)塊鏈延長了,并開始向全世界發(fā)廣播。
因為網(wǎng)速的延遲,并不是所有人都先聽到B的廣播,此時就會出現(xiàn)一部分人按照B的指示更新區(qū)塊鏈,一部分人按照C的指示更新區(qū)塊鏈,而且因為網(wǎng)速的延遲,大家沒辦法確定到底是B還是C先發(fā)布的廣播,從而引起區(qū)塊鏈分叉。
就好比村里兩位礦工B和C分別住在村東和村西,B和C差不多在同一時間挖礦成功,把自家賬本翻頁,在新的一頁寫下屬于自己的宣言“X年X月,本村B(C)挖礦得到比特幣一枚”,并開始向全村大喊讓全村人翻頁并寫下這句話。由于他們分別住在村子的兩頭,結(jié)果村東頭的人先聽到B大喊于是按找B的話記賬,村西頭的人先聽到C大喊于是按照C的話記賬,導(dǎo)致全村的賬本此時出現(xiàn)了兩個版本。
第二種情況是雙重交易,B與C進(jìn)行交易,發(fā)布廣播宣布付給C一枚比特幣,但是B同時還跟D勾搭,幾乎同時又發(fā)布廣播宣布付給D一枚比特幣,更糟糕的是,B宣布付出的是同一枚。
跟第一種情況一樣,由于網(wǎng)速問題,一部分礦工先聽到B與C交易的廣播,并將這條交易記錄計入到當(dāng)前交易區(qū)塊中,后聽到B與D的交易,并判定不合法,拒不添加到交易區(qū)塊。而另一部分礦工正相反,只把B與D的交易添加到交易區(qū)塊中。
這兩種情況并不是罕見的,由于比特幣世界由全世界各地的人參與,有的地區(qū)用的是100M光寬帶,有的地方用的是56K撥號上網(wǎng),網(wǎng)速千差萬別,而且又有很多人心懷不軌,存心作惡,因此區(qū)塊鏈分叉幾乎時時刻刻都在發(fā)生。此時,比特幣世界的最高原則就起作用了:唯一合法的區(qū)塊鏈?zhǔn)钱?dāng)前最長的區(qū)塊鏈。
可是就上面兩種分叉的情況來看,此時分叉的兩個區(qū)塊鏈一樣長???沒關(guān)系,這兩條都合法,也都不合法,咱們擱置爭議,繼續(xù)開挖,看誰挖得快,誰先再蒙對新的X,讓自己的區(qū)塊鏈再進(jìn)一步,誰的區(qū)塊鏈就變成最長,也就成了唯一合法的了。這么一聽,怎么感覺這個區(qū)塊鏈系統(tǒng)這么隨意,有些不靠譜的樣子啊,如果大家都不守規(guī)則,隨意分叉,世界豈不亂套。
別急,接下來咱們通過分析會發(fā)現(xiàn),最終區(qū)塊鏈肯定會恢復(fù)成穩(wěn)定的一條。
讓我們回到第一個情況礦工B和礦工C分歧問題中,假設(shè)B的鏈條再進(jìn)一步,成為了最長鏈條,這條鏈條也就成為比特幣世界認(rèn)定的合法鏈條。此時C有兩個選擇,一是放棄努力,乖乖的扔掉自己的區(qū)塊鏈,使用B的。另一種選擇是不甘心失敗,扔堅持自己的區(qū)塊鏈,希望自己能很快繼續(xù)追平B并反超。
選擇前者是大家都開心的,比特幣世界的區(qū)塊鏈從此統(tǒng)一,選擇后者實際上繼續(xù)讓區(qū)塊鏈保持分叉狀態(tài)。那么從理性角度,C應(yīng)該如何做呢?實際上C此時應(yīng)該果斷放棄自己的鏈條。
我們可以分析一下,當(dāng)B和C的鏈條分叉時,此時比特幣世界存在4種礦工、兩種勢力,B和擁護(hù)B的吃瓜礦工,C和擁護(hù)C的吃瓜礦工。此時B勢力與C勢力大體相當(dāng),所以大家各挖各的。
當(dāng)B勢力先一步延長了B的鏈條后,此時C勢力就會發(fā)生分化,絕大部分擁護(hù)C的吃瓜群眾只要聽到B鏈條延長的消息,馬上會轉(zhuǎn)投到B鏈條上,因為此時B鏈條更長,在更長的鏈條上繼續(xù)挖礦顯然更有前途。勢力馬上發(fā)生逆轉(zhuǎn),C會尷尬地發(fā)現(xiàn),全世界都在與他為敵(哭)。所以C不得不放棄。
當(dāng)然,假設(shè)是C的勢力先延長了區(qū)塊鏈,那么情形正好相反,全世界的礦工都會馬上投入C的懷抱。盡管可能確實是B先挖到的礦,但此時B也不得不選擇放棄自己的那條已經(jīng)無人問津的區(qū)塊鏈。按照這種理性的假設(shè),全世界大部分礦工都會安分守己的選擇在最長的鏈條上工作,所以偶爾的分叉也不是什么大不了的事。
當(dāng)然仍存在一種極端情況,即B或C一個人的算力超過全世界算力的50%,這時候他們憑借一己之力就有可能反超。但是事實上,由于全世界都在參與,很難有人或組織有這么強(qiáng)的算力,其次即使C有這么強(qiáng)的算力,他老老實實地在最長鏈條上挖礦就好了,也沒必要硬剛?cè)澜纾且@示霸權(quán)只會讓全世界都不陪他玩了,最后比特幣失去價值,C損失更大。
上面所說的第二種分叉情況的解決辦法與第一種情況同理,堅持“唯一合法的區(qū)塊鏈?zhǔn)钱?dāng)前最長的區(qū)塊鏈”原則不動搖,最終合法的一條區(qū)塊鏈只會記錄B與C交易或B與D交易的其中一個,具體原因讀者可以自己想一想。
講了這么多,大家可以發(fā)現(xiàn),比特幣憑借區(qū)塊鏈的巧妙設(shè)計,使得交易與發(fā)行以一種非常穩(wěn)定的狀態(tài)進(jìn)行,而保持穩(wěn)定的核心力量是什么呢?就是無數(shù)礦工提供的算力。
只要礦工夠多,算力夠大,驗證速度夠快,比特幣的交易就可以快速地被驗證,不小心出現(xiàn)的區(qū)塊鏈分叉狀態(tài)可以很快結(jié)束,保證整個系統(tǒng)穩(wěn)定運(yùn)行。所以挖礦可不光只是費(fèi)電,這些電能實際上轉(zhuǎn)化成為維持整個系統(tǒng)穩(wěn)定的能量!
這也告訴我們?yōu)槭裁幢忍貛趴梢砸粋€幣價值數(shù)萬,而有些新發(fā)行的各種幣一文不值,因為比特幣做為歷史最長、受眾最廣的電子貨幣,也擁有數(shù)量最多、分布最廣泛的礦工和算力,是最穩(wěn)定的電子貨幣。
而新發(fā)行的貨幣礦工數(shù)量很少,參與的算力低,根本起不到穩(wěn)定整個系統(tǒng)的作用,算力低也意味著每筆交易的驗證時間會變長,從而降低貨幣的可用性,所以這樣的新興貨幣一文不值。
評論
查看更多