講一個故事,什麼是區塊鏈

區塊鏈與騎自行車的人

2016年,包括摩根大通、花旗集團、高盛集團、納斯達克等在內的金融巨頭,都表達了對區塊鏈技術的熱衷。這些巨頭們熱衷的區塊鏈技術,又被稱為分佈式賬本,那麼分佈式賬本究竟是什麼呢?我們先從另外一件事說起。

在納斯達克成立之前,人們用自行車馱著裝滿債券的包,在華爾街騎來騎去,目的就是盡快完成清算。後來業務越來越多,自行車就忙不過來了。20世紀60年代,華爾街每週只交易4天,每天4個小時,就是為了能讓清算速度跟上交易量。

圖2–1華爾街上騎自行車的人

這樣發展下來,大家覺得不行啊,自行車肯定跑不過計算機。1971年,有人就開會說,咱們想想辦法吧,於是提出了DTC(美國存管信託公司)清算系統。這個系統的辦法就是所有的交易都要在系統內進行,包括經紀人也要接入這個系統,現在納斯達克還在用。

很明顯,它的問題只是換了一輛可以踩油門的自行車。我們常常看到一些影視劇裡,皇上、一家之主的去世導致整個國家和民族陷入混亂甚至崩潰,根本原因就在於中央集權這種系統是沒辦法長存的。當交易足夠多、經紀人足夠多的時候,我們發現,這個系統也有癱瘓甚至崩盤的危險。

圖2–2 中心化的DTC清算系統

於是專家們想,自治式、分佈式的系統會不會好一點呢?答案是肯定的。區塊鏈就是一個分佈式的賬本,每個節點都可以顯示總賬,然後維護總賬,而且不能篡改賬本,除非你控制了超過51%的節點,但這是不可能的。

再簡單一點,假如你們家裡有個賬本,讓你來記賬。在以前,就是爸爸媽媽把工資交給你,讓你記到賬本上——想想還是有點小激動的。中間萬一你貪吃,想買點好吃的,可能賬本上的記錄會少十幾塊,然後你想買個手機,賬本上就少記錄幾千塊。這只是舉一個例子,我相信小時候大家都想從爸爸媽媽的口袋裡拿點錢來花。

圖2–3 中心化的家庭賬本

但有了分佈式賬本後,這些問題就不會有了,因為你在記賬,你爸爸也在記賬,你媽媽也在記賬,他們都能看到總賬,你不能改,爸爸媽媽也不能改,這樣想買煙抽的爸爸和想貪吃的你都沒辦法啦。

區塊鏈本質上是一個去中心化的分佈式賬本,其本身是一系列使用密碼學而產生的互相關聯的數據塊,每一個數據塊中包含了多條經比特幣的網絡交易有效確認的信息。

圖2–4分佈式家庭賬本

中心化與去中心化

前面我們說到了區塊鏈的本質是一個去中心化的分佈式賬本,那麼,所謂的中心化又是什麼呢?我們首先思考這樣一個問題,你要在網上買一本書,交易流程是什麼?

第一步:你下單之後把錢打給了支付寶。

第二步:支付寶收款後通知賣家可以發貨了。

第三步:賣家收到通知後給你發貨。

第四步:你收到貨之後很滿意,於是確認收貨。

第五步:支付寶收到了你的通知並打錢給賣家。

圖2–5 中心化的交易流程

我們可以看出,在這個過程中,雖然你是在和賣家交易,但是整個交易都是圍繞支付寶展開。因此,如果支付寶系統出了問題,比如天上降下來一塊隕石,把支付寶的服務器全砸了,或者由於全球經濟危機支付寶倒閉了,無奈的支付寶只好淡然地表示不存在這筆交易,那麼這筆交易就會以失敗告終,到時候買家賣家就會糾纏不清,雙方無法自證。

圖2–6 中心節點毀壞會導致交易失敗

模擬一個區塊鏈小城市

為了說明去中心化的區塊鏈是如何運行的,我們先把整個去中心化的分佈式結構簡化為一個極端的情況來探究。我們假設有一個去中心化的小城市,在這個城市裡有5個可愛活潑的小夥伴,他們互相借錢的時候,是這麼幹的:

假設B向A借了1塊錢,這個時候,城市裡的人怎麼辦呢?A在人群中大喊:「我是A,我借給了B1塊錢!」B也在人群中大喊:「我是B,A借給了我1塊錢!」

此時城市裡的其他人C、D、E都聽到了這些消息,他們拿出了手中的小賬本並默默記下:「某年某月某日,A借給了B1塊錢。」

圖2–7 去中心化城市的記賬

當我們把一個去中心化的模型極度簡化之後,我們就會發現,在這個只有5個人的城市中,已經建立了一個去中心化的系統,這個系統不需要銀行,也不需要支付寶。這個模型不需要信任關係,也不需要一個擁有公信力的組織。當分佈式結構中的每個人都記賬的時候,篡改賬本是不可行的。比如B突然不認賬了:「我不欠A的1塊錢!」這個時候,人民群眾C或D或E就會站出來說:「不對,我的賬本上明明記錄了你在某年某月某日向了A借了1塊錢,並且沒有查到你還款的記錄。」

圖2–8 去中心化賬本無法篡改

說到這裡,你有沒有發現一個問題,在這個模型中,所謂的1塊錢根本不重要,也沒有人在意,「1塊錢」已經變成了一個變量,它可以被替換成任何概念,只要大家承認這是一個有價值的東西即可。

比如A在這個城市中大喊一聲:「我創造了一個巴拉拉能量!」城市中的其他人都聽見了,於是大家紛紛在自己的小本子上記下「某人有一個巴拉拉能量」,大家甚至不用知道巴拉拉能量是什麼,A竟然真的有了一個巴拉拉能量。之後呢?A還能幹什麼呢?A可以再大喊一聲:「我給了B一個巴拉拉能量。」

圖2–9 巴拉拉能量的流通

只要城市中的B、C、D、E,即城市裡的所有人都承認了這個交易,那麼這個交易就真的成立了,雖然現實生活中並沒有巴拉拉能量。

小城市裡的幾個問題

當然,區塊鏈的世界不會這麼簡單,它還有其他的規則來相互制約,我們先來解決下面這幾個問題:

問題一:憑什麼幫你記賬?

憑什麼你對著天空大喊一聲,別人就要幫你記賬,別人的時間不要錢嗎?別人的小本子不要錢嗎?於是,為了讓大家都幫我記賬,我增加了一條新的規則,我決定給第一個聽到我喊話並且將其記錄在小本子上的人獎勵。獎勵機制也很簡單,第一個聽到我喊話並記錄下來的人,可以得到一個巴拉拉能量的獎勵。

這個巴拉拉能量不是白給的,是對你勞動的報酬,就像打工可以掙錢一樣,你幫我記賬,整個系統都會給你報酬。你要做的事情,有這樣幾點:首先,你要搶在所有人之前聽到了我的喊話並記在了自己的小本子上;記錄之後,你還要馬上告訴整個城市裡的人——這句話我記錄完了,你們再記錄也沒有用了,別人就會放棄這筆賺錢的生意;與此同時,你還要做一件事,就是給自己的記錄加一個獨一無二的編號,然後把記錄和編號一起喊出來,於是,下一個人再記錄的時候,就會帶著這個記錄和獨一無二的編號繼續下去。

圖2–10 記賬獲得獎勵

在這條新的規則開始實行之後,一定會有這樣一些人,他們為了得到巴拉拉能量,開始屏氣監聽周圍發出的各種聲音,只為了能在第一時間記下一條新的記錄。

這個時候,對區塊鏈有所瞭解的讀者是不是想到了這樣的名詞——「比特幣挖礦」。沒錯,這就是比特幣挖礦的簡單說明。

關於比特幣挖礦的話題,知乎用戶「玲瓏邪僧」的一篇文章舉過一個更生動的例子,大致是這樣的:單身男士們要找女朋友,「國民岳母」說,我有好多膚白貌美、乖巧可愛的女兒,這樣吧,我給你們出一個曠世難題,解出一個就給你們其中一個姑娘的微信號。

1. 新的交易向全網進行廣播;

2. 每一個節點都將收到的交易信息納入一個區塊中;

3. 每個節點都嘗試在自己的區塊中找到一個具有足夠難度的工作量證明;

4. 當一個節點找到了一個工作量證明,它就向全網進行廣播;

5. 當且僅當包含在該區塊中的所有交易都是有效的且之前未存在過的,其他節點才認同該區塊的有效性;

6. 其他節點表示他們接受該區塊,而接受的方法則是跟隨在該區塊的末尾,製造新的區塊以延長該鏈條,並將該區塊的隨機散列值視為新區塊的隨機散列值。

也就是說,交易發生的一刻起,比特幣的交易數據就被蓋上了時間戳;而當這筆交易數據被打包到一個區塊中後,就算完成了一次確認;在連續進行6次確認之後,這筆交易就不可逆轉了;在比特幣中,每一次確認都需要「解決一個複雜的難題」,也就是說每一次確認都需要一定的時間。

圖2–15 6次確認後不可逆轉

在這種情況下,當我試圖於把一筆資金進行兩次支付交易的時候,因為確認時間較長,後一筆交易想要與前一筆交易同時得到確認幾乎是不可能的,而這筆資金在第一次交易確認有效後,第二次交易時就無法得到確認。區塊鏈的全網記賬需要在整個網絡中達成共識,雙花問題是無法產生的。

圖2–16 雙花問題無法產生

《圖說區塊鏈:神一樣的金融科技和未來社會》