這樣解釋比特幣,初中生都能輕鬆搞懂!

買賣虛擬貨幣
這篇文章寫給想弄明白比特幣到底是什麼,但又看不懂白皮書的朋友。
過去這一個月裡,有很多對於比特幣的討論,但是對於最基本的問題“比特幣到底是什麼”,很多人還是沒有概念。有一些文章用各種比喻解釋了比特幣的原理,我覺得還不夠。要想真正理解,你需要弄明白比特幣的核心機制和數學原理。
這不是一篇爽文,但是也不難懂,有初中數學基礎就夠了。花10分鐘讀完之後,很多問題你會有自己的答案,比如:
“比特幣有什麼用?”
“區塊鏈是不是泡沫?”
“要不要去梭一把?”

面對一個全新的概念和事物,要想直接回答“它是什麼”,答案通常很晦澀。我們換個思路,繞後進攻。想象一下,如果要從零開始一步步重新發明比特幣,這個過程是怎樣的?

假定西遊四人組穿越到現代生活,大家一起吃飯唱k。

每頓飯吃完都要用現金分賬的話,太繁瑣,而且八戒又經常忘帶錢。悟空就提議:以後大家之間的經濟往來,統一先記到一個賬本上,月底發了工資再統一結算。

比如今天大家一起喝酒,師傅買單,花了400塊。老規矩,aa,賬本上就記下這三筆:

  • 悟空 要付給 師傅 100元
  • 沙僧 要付給 師傅 100元
  • 八戒 要付給 師傅 100元

明天大家一起捏腳,八戒買單,花了800塊,也記上:

  • 悟空 要付給 八戒 200元
  • 沙僧 要付給 八戒 200元
  • 師傅 要付給 八戒 200元

到月底了,大家把賬本上的記錄一彙總,再用現金結清就好了。如果這個月就兩筆(這是不可能的),現金結算是這樣的:

悟空為了趕時髦,把這個賬本做成了一個網站,他們四人都可以去網站上記一筆,都是兄弟嘛,放心。這套系統規則可以總結為:

  1. 每個人都能在賬本上記一筆交易
  2. 月底用現金一次結清

最開始的幾個月一切順利。但是人性是經不住考驗的,很快賬就對不上了。悟空一查後臺,發現八戒偷摸摸地寫了好幾筆假賬:

  • 師傅 要付給 八戒 200元
  • 沙僧 要付給 八戒 300元

眾人盤問之下,八戒承認錯了,說是最近買嫩模幣虧了太多,想湊點錢回本。

為了應對可能的作弊,悟空又想了一個辦法,電子簽名。

手寫簽名大家都很熟悉,你刷卡買一個東西,你的簽名就代表你知道並認可這筆交易,不能抵賴,同時其他人也沒法偽造你的筆跡,這樣就保證了這筆交易是真的。

電子簽名就不同了。理論上,電子簽名就是一串0和1構成的字元,電腦是可以直接複製的,別人就可以仿造你的簽名。

怎麼辦呢?密碼學給出了一個很巧的方法。

我們先給每個人發一對密碼,一個是別人都能看的,叫公鑰,一個是絕不能給別人看的,叫私鑰。

如果你想對一筆交易簽上你的名字,表示你認可它,你需要做如下操作:以這筆交易包含的資訊和你的私鑰為兩個變數,輸入簽名函式,得出的結果就是對應這筆交易的簽名,一個256位的二進位制數字。

這個簽名是無法偽造的,因為其他人不知道你的私鑰,缺一個變數自然無法得出結果。

不用擔心別人會根據簽名算出你的私鑰,因為這個簽名函式是不可逆的。

同時這個簽名也是無法直接複製並用到其他交易上的,因為一旦交易資訊稍有變化,對應的簽名也完全不同。

也就是說,特定的私鑰、交易資訊和簽名是緊密耦合的,改變任意一個,這個組合就出問題了。

還有一個問題是,別人怎麼才能確定這個簽名的確是你按照私鑰和交易資訊算出來的正確簽名呢?有請公鑰出場了,任何人都可以如此驗證:以這筆交易包含的資訊、簽名和公鑰為三個變數,輸入驗證函式,得出的結果為真,簽名就是對的,反之亦然。

理論上說,這個驗證函式提供了一絲偽造簽名的機會。你可以拿各種可能的組合去試,輸入到驗證函式中,撞上結果為真,那這個簽名就對了。

問題在於,這是一個256位二進位制數的簽名,可能的組合數是2的256次方,大概是10的80次方,差不多和全宇宙的原子數是一個量級,一秒試一萬次,你算到宇宙滅亡也算不完。

所以,如果經過驗證這個簽名為真,給出簽名的這個人肯定是交易的主人沒跑了(或者上帝本人)。

悟空說,有了電子簽名,以後每筆交易都需要交易的主人簽上自己的簽名才算有效。

比如這條交易:“沙僧 要付給 八戒 1000元”,交易的主人是沙僧,那就得沙僧拿自己的私鑰去生成針對這條交易資訊的簽名並且簽上去,這條交易才算有效。其他人可以用沙僧的公鑰去驗證,看這個簽名是否為真。這樣一來誰都不能作弊了。

另外,為了督促八戒改邪歸正,悟空還加了一條,大家先交1000的保證金,之後誰的賬戶餘額降到0了,就不能繼續交易了,也就是不能透支。

問題解決了,幾個月過去,大家發現在新規則下,每個月不用現金結算也可以了,這個賬本變成了小銀行,賬本上的餘額就是每個人在銀行賬戶裡的錢。只要不透支,不需要現金大家也可以互相交易了,借錢還錢都可以靠記賬解決。不妨把這個賬本上的錢叫做西遊幣,兌換起來就是1元=1西遊幣

到這裡,你會發現,賬本在某種程度上已經扮演了貨幣的角色。系統規則也演變成了2.0版本:

  1. 每個人都能在賬本上記一筆交易,不過必須交易主人簽名才有效
  2. 不能透支

————————————————————

有一天,師傅突然給悟空出了個難題,現在這個系統雖好,但是也有隱患,如果控制賬本所在的網站的人想作弊,誰去監督他呢?有沒有可能每個人都有一個賬本,各自記各自的,然後互相同步,互相監督?

八戒提出質疑,那要是大家記得賬不一樣,以誰的為準呢?

眾人陷入了沉思。大家都記賬的確可以免除對特定中心的依賴,但是如果有人作弊,導致大家的賬本不一致,這時候怎麼解決爭端呢?

只見一片紫氣東來,中本聰現身了。他丟下一張8頁紙的天書,飄然而去。悟空拿起書,卻見書中寫道:

誰的算力大,誰說話算話。

悟空被瞬間點醒,開始給大家講新方法:

咱們先分頭記賬,每隔一段時間,咱們就碰頭核對下賬本。怎麼核對呢?玩一個數學遊戲,就是找到一個對應賬本的幸運數字,唯一的方法就是靠猜,誰的計算力大誰就更有可能猜中,而且猜中有獎勵。猜中之後,這次核對的賬本才算確定了,大家都以這個賬本為準。

如果核對的時候,發現八戒寫的賬本有個地方和其他人都不一樣,怎麼辦?沒關係,還是玩這個猜數字的遊戲,只要作弊的那一方擁有的算力沒有過半,沒有作弊的一方就會獲勝,因為它的算力更大。最後大家還是會以遊戲勝利者也就是正確賬本為準。

大體就是這樣,具體細節是怎樣的呢?到這裡,我們已經準備深入到比特幣的核心思想了。為了徹底搞明白,我們需要先介紹幾個不那麼常見但是非常有用的概念。

先來介紹關鍵的大殺器:sha256演算法。

sha256是一種密碼雜湊函式,輸入任意一段資訊,執行sha256函式,輸出的結果會是一串256位的2進位制數,這個數字就是這段資訊的雜湊值或者摘要,可以理解為這段資訊的特定id。世界上所有資訊都有自己特有的雜湊值,一一對應,絕不重複。

sha256還有一個特性,就是沒法逆向運算,只能根據資訊算出資訊的雜湊值,而沒法根據資訊的雜湊值去算出資訊本身。如果給出一個雜湊值,想知道對應的資訊,唯一的方法是一個個試,沒錯,又是2的256次方分之一的機會,試到宇宙毀滅也不一定能試出來。

這個大殺器就是剛才提到的數學遊戲的基礎。只要它依然堅挺,沒有被破解,比特幣就是數學上可靠的。

接下來我們詳細看看這個數學遊戲是怎麼執行的。

我們假定在賬本上每一頁只能記十條交易資訊,記完一頁就得找一個幸運數字簽在這一頁的最後,這個數字必須使得這一頁所有資訊(包括數字本身)的雜湊值滿足一個特點,比如前30位都為0。只有簽上這個數字,這一頁賬本才算有效。

如此一來,由於sha256的特性,找到這個數字只能靠試錯,成功機會又特別低,2的30次方分之一,也就是說,大概 得試上十億次,才能成功一次。靠買彩票中五百萬就是這個遊戲的翻版,不過中五百萬的機率還是不錯的。

一旦有人找到了這個數字,其他人要想驗證這個數是否正確,只需要算一遍就可以了,非常簡單。這一點和買彩票也很像,你有沒有中獎,查一下就行。

這個幸運數字就叫proof of work,工作量證明。如果你能找到這個特定數字,就說明你投入了足夠的時間和算力(因為也沒有其他方法了),同時其他人還能很簡單的驗證這件事情,不用重新花力氣再算一遍。

那麼為什麼會有人願意投入時間、機器和電費來玩這個遊戲呢?因為我們設計了獎勵機制,猜中這個數字的人會獲得一定數目的比特幣作為獎勵,那一頁賬本上會加一條,誰誰誰獲得2個比特幣。

有了這種遊戲,人們就會自發的去驗證比特幣網路裡的交易是否有效,而且唯一的方法就是投入時間和計算力去猜。初看起來可能並不高明,浪費這麼多資源就為了玩數字遊戲?別急,一會你會發現別有洞天。

最後要介紹的是blockchain,區塊鏈。這個詞是怎麼來的呢?比特幣把賬本分成了很多塊,每塊上記錄一定數量的交易,每一塊叫做一個block,區塊。每個區塊的底部會附上對應的幸運數字,工作量證明。同時,在區塊的頂部,還會附上前一個區塊所包含資訊的雜湊值。於是區塊就連成了一條鏈。其實區塊鏈就是一種結構比較特殊的賬本,改變其中一頁,整本都會出問題。

把區塊連成鏈是一個非常精巧的設計。

第一,改變任意一個區塊的資訊,都會導致這個區塊的雜湊值變化,同樣也會改變下一個區塊的資訊(因為是包含關係),接著之後所有的區塊都會改變,整條區塊鏈都會變的無效,得重新再算一遍,找到對應的pow才行。這一點保證了整個賬本的嚴密準確性。

第二,不同區塊之間的位置代表了不同交易發生的先後順序,如果改變區塊的位置,因為同樣的原因,整條鏈也會變得無效。這一點保證了交易時間記錄的準確性。

最困難的部分介紹完了,我們可以歇口氣回顧一下:

一個大殺器:

sha256演算法可以讓我們輸入任意一段資訊,得到一個對應的數字,這個數字就是這段資訊的雜湊值,就像個人id一樣獨特。反過來,透過雜湊值來算出對應的資訊,只能靠猜,而且很難猜。

一個數字遊戲:

對每一頁賬本,我們可以找到一個幸運數字,使得它的雜湊值前30位都是0。這個數字很難猜,猜中的會獲得比特幣作為獎勵。和買彩票很類似。

一個設計精妙的結構:

區塊鏈就是把整個賬本分成許多區塊,前一個區塊的雜湊值寫到下一個區塊的頂部,以此把所有區塊關聯成一條鏈,改變任意區塊的資訊或者位置,都會影響整條鏈。

————————————————————

說完這三件事,我們可以來具體看看比特幣是怎麼執行的了。

對於普通使用者來說,完成一筆交易,就把這筆交易的資訊廣播出去。同時,有一些使用者會不斷收聽整個網路裡的交易資訊,把這些交易資訊打包成區塊,然後飛快的猜那個幸運數字。一旦有一個人猜到這個幸運數字,就會獲得幾個比特幣作為獎勵。這個區塊也被證明有效,並再次廣播到全網,被大家記下來。這些不斷猜數字的使用者就是我們常聽到的“礦工”,猜數字的過程就叫“挖礦”。

考慮到他們在做的事情,的確是有點像辛勤工作挖金子的過程。不過真實的比特幣礦工並不用親自下地,只需要用大量的計算機去瘋狂的玩這個猜數字的遊戲。

礦工和普通使用者都是比特幣網路中的一個節點,區別在於,驗證區塊需要很高的計算力,所以礦工通常都是有專業裝置比如asic或者高階顯示卡的。普通使用者用的就是普通電腦,求沒法參與驗證交易了,但是把自己的交易資訊廣播出去還是可以的。礦工更像是這個系統裡的管理員,能做更多普通使用者不能做的事情,比如驗證區塊並獲得獎勵。

礦工需要收聽全網的廣播資訊,普通使用者則只需要收聽礦工廣播出來的驗證過的區塊,同步到自己儲存的區塊鏈上。如果收聽到兩個區塊不一致,到底聽誰的呢?中本聰給出的方法是,算力為王,哪個區塊背後的算力更大,或者哪個區塊所在的鏈更長,就聽誰的。

為什麼這麼做有效呢?我們再次繞後從反面來破解這個問題。想想看,如果你想在比特幣網路中作弊,具體過程是怎樣的?需要什麼條件才能實現?

假設八戒想作弊,大家一起吃了飯,師傅買單,按道理八戒應該給師傅100塊。其他礦工都在區塊裡記上了這一筆:

  • 八戒 要付給 師傅 100元

同樣是礦工,八戒卻在區塊裡抹掉了這筆賬,打包出了一個“不一樣”的區塊,驗證之後發給了老實的沙僧。

沙僧那邊收到的訊息在這個節點上開始分裂了。八戒發給他的區塊單獨形成了一條鏈,其他礦工的區塊則形成了另一條鏈。

那麼,哪條鏈延長的速度會更快呢?考慮到這是一個完全隨機的猜數字過程,長期來看,兩方鏈延長的速度正比於各自掌握的計算力大小。也許八戒最開始的幾個能撞到狗屎運,比其他人加起來都快,但是時間一長,自然會寡不敵眾。其他礦工的區塊鏈會飛速延長,基於“誰的區塊鏈長就聽誰的”這條規則,沙僧會放棄掉八戒那條鏈,轉而把其他礦工的鏈儲存到自己的區塊鏈中,共識就這麼達成了。

也就是說,當你收到兩個不一樣的區塊時,先別急著決定聽誰的,讓區塊鏈再飛一會,等到其中一條領先另一條至少六個區塊以後,基本就板上釘釘了。

當然,如果八戒自己掌握了全球一半以上的算力,自己成了多數派,那這個系統就崩潰了。但是由於各種複雜的現實原因,這個條件很難達成。

比特幣的這個算力為王的機制,有點像投票表決。大家意見不一致的時候就透過投票來達成一致,票數為王,少數服從多數。如果你想作弊,不是不可以,但必須獲得過半數的票。

到這裡,比特幣的完全體誕生了,系統規則3.0版:

  1. 只要投入算力和時間,每個人都能記賬和驗證
  2. 區塊鏈分裂時,保留算力大的那條鏈

————————————————————

以上就是比特幣的基礎執行原理了。我們從原始的現金交易,到電子簽名和中心化賬本,再到更先進的分散式賬本+pow+區塊鏈,短短十分鐘走完了人類貨幣演化史。未來人類的貨幣金融體系會如何演化,比特幣的兒子孫子命運如何,也許你我都有一個模糊的答案。

很多技術細節在這篇文章中沒有提到,是因為我希望用盡量短的篇幅把比特幣的骨架型原理講清楚。想了解更多的朋友可以看這裡:

https://www.bilibili.com/video/av12465079/?t=381

https://bitcoin.org/bitcoin.pdf

http://www.michaelnielsen.org/ddi/how-the-bitcoin-protocol-actually-works/

“人類由故事和共識驅動。”比特幣和區塊鏈完美詮釋了這句話。如果你也相信這個故事,幫我也幫你一個忙,讓更多人看到這篇文章,相信這個故事。

together, we will...


來源:橙皮書

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;