先說結論:“中本聰”利用區塊鏈技術,巧妙地解決了賬本同步和信息不重復的問題,這就使得去中心化賬本的理想最終得以實現。
我舉兩個例子來幫助你理解:
在這個游戲規則中,
BT下載的原理與電影網站完全不同,影片并不是存在某個服務器上的,而是大家互相從網絡上的每一個人那里去下載這個影片的一小部分,最后拼成一個完整的文件。在這個游戲中,所有玩家的地位是完全平等的,任何一個玩家可以隨時離場、隨時加入,
在這個游戲中,不同級別玩家的權力、地位是不平等的,最大的Boss當然是央行,它甚至能發行貨幣,它的權力可以大到分分鐘就把我們的錢全部搶光,很簡單,它只要突然增發貨幣就可以了,物價突然上漲100倍,我們的錢就等于被搶光了。
比特幣的游戲規則是這么玩兒的,就兩條核心規則。
第一,它的貨幣發行不是由某個機構說了算,而是公開一套算法,每算出一個符合要求的數字,就相當于挖到了若干個比特幣。誰都可以去算,絕對公平,誰也做不了弊,因為算法本質上就是一個個數字去湊,湊出一個算一個。 第二,比特幣的交易信息不是記在某一臺服務器上的,而是所有參與這個游戲的玩家電腦中一人一份,同步記錄,這種交易記錄在理論上幾乎是無法篡改的。這就是去中心化賬本。這樣一來,所有游戲玩家的地位和權力就完全平等了,幾乎沒有任何一個玩家是特殊的。為什么要加上“幾乎”兩個字呢,因為,畢竟能夠有能力挖比特幣的那些礦主還是有點特殊的,但這種特殊性并不是太大,而且礦主也沒有任何壁壘,只要你買得起好電腦,誰都可以當礦主。
不得不說,比特幣的這個設計非常之妙,妙不可言,他的發明人,神秘的“中本聰”確實是顆大蔥。
理解了去中心化,你就等于理解了區塊鏈,
然而,我這里話鋒一轉,
第一,比特幣客戶端軟件需要巨大無比的存儲空間,因為每一個節點都必須要記錄下從比特幣系統誕生的第一天起所有的交易記錄,截止2018年2月,這個交易記錄文件已經有147GB那么大了,而且只會增加不會減少。
第二,為了防止有人作弊,比特幣系統有一套很復雜的游戲規則來確保交易記錄是真實的,這樣就導致每一筆交易的確認時間一般需要一個小時,甚至幾天。你想想吧,如果用比特幣去街邊買杯奶茶,會是什么情況。
第三,最多只有2100萬枚比特幣,而且,無論有多少人在挖礦,系統規則決定了平均每10分鐘才能產出若干枚比特幣(2018年是12.5枚)。我想起了那句話:人民群眾日益增長的比特幣需求與比特幣總量不充分之間的矛盾。
但是,比特幣不能代表區塊鏈,區塊鏈也不是比特幣。區塊鏈在未來可以有哪些應用呢?
更新:
首先,請記住:比特幣不是區塊鏈,它只是區塊鏈技術的一個具體應用。
好,我們接下來往下說。
到此為止,我們去中心化賬本的理想只實現了一半,并沒完全實現,為什么呢?因為還有兩個重大的問題沒有解決:
第一個問題:
賬本同步問題。比特幣網絡中有那么多臺電腦,一條交易信息發送出來的時候,當然不可能所有的電腦都開機,必然有一些處于離線狀態,開了電腦也未必開著比特幣客戶端,所以總有一些電腦無法立刻收到這條信息。這樣就會導致不同電腦上的記錄不同步,到底以誰的電腦記錄為準呢? 第二個問題:
如何防止同一個比特幣被重復使用呢?假如有一個黑客,他只有1個比特幣,但是他卻同時把這個比特幣付給A和B(雖然理論上無法真正的同時,但可以做到間隔時間極短),于是他就會在網絡上廣播兩條信息,一條是支付給A的信息,一條是支付給B的信息,因為網速的關系,必然有的電腦先收到了信息1,有的電腦先收到了信息2,這就產生了矛盾,如何確定哪一條信息是有效的呢?
再次強調:比特幣不是區塊鏈,它只是區塊鏈技術的一個具體應用。
接下來,讓我一步步為你揭開區塊鏈技術的面紗。
因為中本聰把這個賬本設計成了由一個個“信息包”首尾相連而成的長鏈,每一個“信息包”被稱為一個“區塊”,這些區塊每一個都有唯一的編號(在比特幣系統中,編號被稱為高度(height)),這些編號就是自然數1、2、3、4……一直往下排,不允許跳躍,也不允許中斷和重復。
第一個區塊當然是由區塊鏈的發明人“中本聰”親自創建的,那是北京時間2009年1月4日,在芬蘭赫爾辛基的一臺小型服務器上,第一個區塊誕生了,這也被稱作“
創世區塊
中間那段話是“中本聰”刻在第一個區塊上的紀念,從第2個區塊開始,以后每一個區塊都必須嚴格按照比特幣系統的規則來創建。區塊的規則是:
區塊規則
區塊鏈所有的奧妙就在尾巴上加的這個隨機數上,因為它實在太奧妙,讓我等凡夫俗子只能大呼過癮,
“中本聰”規定:這個新區塊的數字指紋(一個256位的二進制數)的前72位必須全部為0。
回憶一下我們前面介紹過的數字指紋的知識。因為SHA算出來的指紋是毫無規律可循的一個數字,所以,想要滿足“中本聰”的這個變態規定,唯一的辦法就只能憑運氣湊“奧數”,從0開始不斷地去常試,直到滿足要求為止。這就是一個純粹的概率問題。我們來算一下要滿足這個要求的概率是多大。
因為二進制數,每一位只有兩種可能性,0或者1,所以,湊出一個奧數的可能性是2的72次方分之一,也就是1/4722366482869645213696。這個數字已經大到看花眼了吧,它大約就是4.7萬億億分之一。換句話說呢,就是平均要進行4.7萬億億次SHA計算,才可能得到一個“奧數”,你可見每一個“奧數”的金貴。
最巧妙的是,“奧數”并不是某一個方程的解,解出一個少一個,因為每一個區塊的字符串都不同,所以,每一次尋找奧數都需要從0開始,任何一個數字都有可能成為新的奧數,完全沒有規律可循。
比特幣系統規定,每成功增加一個區塊,這臺記賬的電腦(實際上是某個賬號)就能獲得12.5個比特幣的獎勵(截止到2018年2月時的獎金額),以及這個區塊中所有交易的手續費,總額取決于交易頻繁程度(平均約2比特幣)。這樣一來,相當于每找到一個奧數,可以獲得14.5個比特幣獎勵,按照2018年2月的比特幣市場價,相當于12萬美元。這么豐厚的獎勵,自然就會吸引大量的電腦愿意去搶奪記賬權。
但是,我需要給你解釋一下挖礦的難度,讓你打消去挖礦的沖動。個人電腦的運算速度大約是每秒可以進行60萬次SHA計算,也就意味著,一臺個人電腦需要花一千萬年才有可能湊出一個奧數。當然,這是一種概率計算,我不能從理論上排除某人的人品超新星爆發,算了一次奧數就中了4萬億億分之一概率的獎。但我還是想勸你不要相信自己是耶穌轉世,你沒有那個命。
我給你看看人家專業的礦廠是怎樣的:
圖:一個中等規模礦廠(圖片來源:百度圖片搜索)
這只是一個中等規模的礦廠,大規模的礦廠據說有幾萬甚至幾十萬臺礦機同時運行。我在《看看新聞》2017年6月17日的一個新聞中看到,記者拜訪了一座位于中國四川的礦廠,根據報道:這個礦廠有5000多臺礦機的規模,平均每天耗電超過20萬度,當地的電價是3毛/度,一天光是電費就6萬多元,平均每天可以挖出大約50個比特幣,一年左右回本,之后能做到20%左右的利潤。
不過我覺得這個報道中的數據前后矛盾,我查了一下,比特幣當時的市場價是大約2500美金/個,美元兌人民幣的匯率大約是6.8,所以,每天的收入大約是85萬人民幣,一年的收入大約3.1億元,一臺礦機的成本均價是1-2萬元,礦廠的礦機總成本是5000萬-1億元,再算上電費等,一年起碼2億的利潤。我想,在充分市場競爭下,出現這種暴利的可能性很低。所以,不是記者搞錯了,就是被采訪對象在吹牛不打草稿。由于比特幣的價格和全網算力的波動很大,所以投資比特幣礦廠很難做長期預測,不確定因素太多。
圖:看看新聞報道的位于四川的某礦廠(圖片來源:《看看新聞》官網)
根據我們前面掌握的比特幣知識,50個比特幣,相當于找到了4個奧數,搶到了4次記賬權。目前,整個比特幣網絡的所有礦機加起來的總算力能達到的水平,大約平均每10分鐘可以找到一個奧數,也就意味著平均每10分鐘生成一個新的區塊。當然,這個10分鐘是一個平均數,快一點的話3、4分鐘生成一個區塊,慢一點的話15分鐘左右。
正因為奧數太難找,每個區塊平均要10分鐘才能生成一個,所以就能基本解決我在本章開頭提出的第一個問題“如何同步賬本?”,只要有個3、4分鐘的時間,足以讓所有在線的電腦同步到這個區塊了,那些不在線的電腦或者第一次運行客戶端的電腦,上線以后必須要先做一件事情,就是從相鄰的節點上獲取最新的賬本。
在這種情況下,相當于網絡上的其他節點收到了兩個合法的新區塊,因為網絡節點的地域分布不同,所以,不同的節點收到這兩個新區塊的先后次序就會不同。此時,所有的節點會暫時保留兩個新區塊,并且把區塊鏈做一個臨時的分叉,如下圖所示:
(圖片來源:自繪)
接下去,比特幣網絡中必然又會有其中一個節點(礦機)搶到了記賬權,這時該節點就會將生成的最新區塊接到其中的一個分支上,那到底是接到新區塊1上還是2上呢?系統規則是:
(圖片來源:自繪)
比特幣網絡上的所有節點在收到最新的區塊鏈后,只要發現其中一個分支比另外一個分支多2個區塊了,就立即也放棄那個短的分支,
因為有了這個臨時分叉的規則,所以,比特幣玩家在完成一筆交易后,不能立即認為這筆交易是成功的,有可能會被取消,
為什么?先回憶一下每個區塊的規則:
區塊規則
你的交易記錄要被寫到區塊鏈上,有一個前提:礦工將你的這筆交易記錄打包到這個區塊上。你可能想問:為什么會不打包?難道系統規則還允許不打包嗎?打包成功了不是還要給礦工交稅嗎?礦工好不容易搶到一次記賬權,怎么會有錢不賺呢?
現在,比特幣交易滯留是非常普遍的現象,很多小額交易甚至等上好幾天都確認不了,因此,很多人不惜附加很高的交易手續費來讓礦工提前替他們打包。
好了,講到這里,有關區塊鏈的核心原理就講完了,關鍵要記住,“
學習知識,我認為最佳的方式就是帶著問題學習,在學習過程中,先掌握知識的主干,如果還有興趣,再去了解那些枝枝杈杈。