一個故事告訴你比特幣的原理及運作機制
周末花時間看了一些比特幣原理相關的資料,雖然不敢說把每個細節(jié)都完全搞懂了,不過整體思路和關鍵部分的主要原理還是比較明白。寫一篇文章分享給大家。這篇文章的定位會比較科普,盡量用類比的方法將比特幣的基本原理講出來。這篇文章不會涉及算法和協(xié)議中比較細節(jié)的部分,打算后面會再寫一篇程序員視角下的比特幣原理,那里會從技術(shù)人員的視角對比特幣系統(tǒng)中較為關鍵的數(shù)據(jù)結(jié)構(gòu)、算法和協(xié)議進行一些講解。
在這篇文章中我會給出一個虛擬的村莊叫“比特村”,整個文章會以講故事的方式,逐步告訴大家比特幣提出的動機、解決了什么問題以及一些關鍵組件的目標和設計方案。
問題的提出我們先從比特幣產(chǎn)生的動機開始。
以物易物的比特村話說在這個世界上,有一個叫比特村的小村莊,村莊共有幾百戶人家。這個村莊幾乎與世隔絕,過著自給自足的生活。由于沒有大規(guī)模貿(mào)易,比特村村民一直過著以物易物的生活,也就是說村民之間并沒有使用統(tǒng)一的貨幣,互相間的貿(mào)易基本上就是老張家拿一袋面粉換老李家一只羊,王大嫂拿一筐野果換劉大嬸兩尺布。村民們一直就這么純樸的生活著。
實物貨幣
終于有一天,村民覺得一直這樣以物易物實在太不方便了,于是村子全員開會,討論如何解決這個問題。有人提議,以便于分割且稀有的東西,例如黃金,作為一般等價物,把其它物品和黃金的對應關系編成一張表格,例如一克黃金對應一只羊,一克黃金對應一袋面粉等等,此時老張再也不用扛著一袋面粉氣喘吁吁的去老李家換羊了,他只要從家里摸出一克金子,就可以去老李家牽回一只羊,而老李拿著這一克黃金可以從任何愿意出讓面粉的人那里換回一袋面粉,當然也可以換取任何和一克黃金等值的物品。
此時比特村進入了實物貨幣時代。
符號貨幣
好景不長,過了一段時間,實物貨幣的弊端也出現(xiàn)了。因為比特村附近金礦并不多,開采和冶煉金子太費時費力了。而隨著使用,金子總是不斷會因為磨損、丟失或有人故意囤積而發(fā)生損耗。全村人又一次坐在了一起,開始商討對策。此時有人說,其實大家也不必一定要真的用黃金啊,隨便找張紙,寫上“一克黃金”,只要全村人都認同這張紙就等于一克黃金,問題不就解決了。其他人紛紛表示認同,但同時也有了新的問題:真實的黃金是需要開采和冶煉的,金礦有限,開采和冶煉也需要成本,所以沒有人可以短期憑空制造大量的黃金,可寫字就不同了,只要我紙夠筆夠,隨便像寫多少寫多少,那這就變成拼誰家里紙多了,搞不好到時一萬張紙才能換一只羊(實際上這就發(fā)生了經(jīng)濟學上的通貨膨脹)。
大家一想也是啊。不過此時又有人提出了解決方案:這個紙不是誰寫都有效,我們只認村里德高望重的老村長寫得,大家都認識老村長的字。老村長寫一些紙,同時按照各家黃金存量發(fā)給大家等量的紙,例如老張家有二百克黃金,老村長就發(fā)給老張二百張寫著“一克黃金”的紙,同時將老張家的黃金拿走作為抵押。就這樣,老村長將村里所有黃金收歸到自己的家里,并按各家上交的黃金數(shù)量發(fā)給等值的寫有字的紙。此時村民就可以拿著這些紙當黃金進行貿(mào)易了,而且大家都認得老村長的字,其他人偽造不出來。另外,如果誰的紙磨損太嚴重,也可拿到老村長那里兌換新的等值的紙,另外老村長承諾任何人如果想要換成真黃金,只要拿紙回來,老村長就會把等值的黃金還給那人。因為老村長寫得紙的黃金量和真實放在家里的黃金量是一樣的,所以只要嚴格按照銷毀多少紙新寫多少紙的原則,每一張有效的紙總能換回相應的真黃金。
此時,比特村進入了符號貨幣(紙幣)時代。而老村長就承擔了政府和銀行的角色。
中央系統(tǒng)虛擬貨幣
又過了幾年,老村長由于每天都要核對大量的舊紙幣,寫新的紙幣,還要把各種賬目仔細做好記錄。一來二去,老村長操勞過度不幸駕鶴西去了。
比特村再次召開全體大會,討論應該怎么辦。此時老村長的兒子二狗子自告奮勇接過了父親的筆,承擔起貨幣發(fā)行的責任。這個年輕的村長二狗子很聰明,他做了幾天,發(fā)現(xiàn)好像也不用真的寫那么多紙。完全可以這樣:村民把紙幣都交上來,銷毀,但是二狗子會記錄下每戶上交的紙幣數(shù)量。以后如果要進行付錢,例如老張要拿一克金子向老李換一只羊,就一起給二狗子打個電話,說明要將老張名下的一克金子劃歸老李名下,二狗子拿出賬本,看看老張名下是否有一克金子,如果有就在老張的名下減掉一克,在老李的名下加上一克,這樣就完成了支付,此時老李在電話中聽到二狗子確認轉(zhuǎn)賬完成,就可以放心讓老張把羊牽走了。
此時比特村進入了中央系統(tǒng)虛擬貨幣時代。每個村民都不需要用實物支付,支付過程變成了二狗子那邊維護的賬本上數(shù)字的變更。
分布式虛擬貨幣