乾貨 | 比特幣就是時鐘

買賣虛擬貨幣


俗語有云,時間就是金錢。反之,金錢也是時間:時間就是人類體記憶體儲的所有經濟能量。然而,時間和金錢之間的關係遠比乍看之下複雜得多。如果創造金錢不需要時間,金錢就不成其為金錢,至少無法長時間發揮金錢的作用。再想深一層,追蹤資訊世界的事物就是追蹤時間。

當金錢數字化,我們必須就時間的定義達成共識,這就是問題所在。或許你覺得報時無非就是瞥一眼旁邊的時鐘那麼簡單。如果只是處理日常工作,你這麼想也行。但是,如果要讓一個全球的、人們在其中各行其是的分散式網路同步推進狀態,報時就成了巨大的難題。如果時鐘無法信任,你該如何獲得正確的時間?如果你的系統跨越星系,你該如何建立時間的概念?在沒有時鐘的世界,你該如何衡量時間?時間究竟是什麼?

為了解答這些問題,我們必須進一步瞭解時間的概念,以及比特幣是如何自創時間單位(出塊時間,也就是我們通常所說的區塊高度)的。我們將探索的問題包括:為什麼計時最終會與記賬聯絡起來?為什麼去中心化系統中沒有絕對時間?比特幣是如何利用因果關係和不可預測性來定義 “現在” 這一時態的?

記時器已經多次為文明社會帶來巨大改變。正如 lewis mumford 在 1934 年所說:“工業時代最重要的機器不是蒸汽機,而是時鐘。” 如今,計時器再一次推動現代文明發生變革:資訊時代最重要的機器不是計算機,而是時鐘。這個時鐘就是比特幣。

追蹤

“讓孩子學習數東西,從而獲得數字的概念。在計數的時候,這些東西就可以當作都是一模一樣的,它們可能是單個物件或一組物件。”

—— david eugene smith,《初等數學教學》(1900)

總的來說,我們可以透過兩種方法來追蹤物品:物理象徵物和賬本。你可以直接使用現實世界中的物品,例如,貝殼、硬幣或其它有形的東西(來表達相應的數量);也可以透過在一張紙上記下已經發生的事來複制世界的狀態。

想象一下,你是一個牧羊人,想要確保每隻羊都會返回家中。你可以為每隻羊戴上項圈,每當有一隻羊回家,你就取下那個項圈,掛在棚子裡。假設每個項圈都會掛到一個單獨的掛鉤上,只要掛鉤都掛滿了,就說明所有羊都到家了。當然了,你也可以每次都數一遍,然後列一張表。然而,每當你開始數之前,你都要重新列一張表,防止重複計數或漏計。

貨幣本質上就是用來追蹤債務的工具。總的來說,迄今為止充當過貨幣的東西可分為兩類:物理製品和資訊列表。更通俗一點的說法就是,象徵物和賬本。

理解這兩類貨幣的本質區別很重要。我要在此作出明確說明:物理象徵物 直接 表示事物的狀態;賬本則 間接 反映事物的狀態。二者各有優缺點。例如,象徵物是物理的、分散式的,賬本是資訊化的、中心化的;象徵物本質上是免信任的,賬本不是。

在數字世界,我們只能使用賬本(雖然總有許多 “大師” 想讓你相信還有別的辦法)。這是 資訊 世界,不是物質世界。即使你將某類資訊定義為 “象徵物”,它依然是一段寫入硬碟或某種資訊儲存媒介的可塑資訊,以資訊記錄的形式呈現出來。

所有數字資訊本質上都是賬本,這就是產生 “一幣多花” 問題的根源。資訊從不直接表示世界的狀態。此外,資訊的移動也意味著資訊能夠複製。資訊存在於某個地方。要想 “移動” 資訊,你必須將它複製到另一個地方,然後將原有資訊刪除。物質世界則不存在這種問題,移動就是移動,並不意味著複製。資訊世界不具備這種特徵。如果你想將資訊從表 a “移動至” 表 b,你必須將資訊從表 a 複製到表 b。除此之外,沒有其它方法。

另一種思路是 “惟一性”。物理象徵物是獨特的原子組合,不能輕易複製。純粹的資訊不具備這一特徵。只要你可以閱讀某個資訊,你就可以將它完美複製出來。因此,我們可以得出這樣一個結論,物理象徵物具備獨特性,數字象徵物不具備。我甚至認為 “數字象徵物” 一詞有待商榷。象徵物可以表示秘密資訊,但絕不會表示絕無僅有、不可複製的資訊。

這種特徵差異表明,資訊實際上是無法 “移交” 的。數字象徵物不可能像物理象徵物那樣轉移,因為你無法確定原所有者是否破壞了資訊。和所有資訊一樣,數字象徵物只能像想法一樣被傳播。

“……如果你有一個蘋果,我也有一個蘋果,我們可以互換蘋果,換完之後還是一人一個蘋果。但是,如果你有一個想法,我也有一個想法,我們交換完之後,每人就有兩個想法。”

—— charles f. brannan (1949)

物理象徵物(我們稱之為物理不記名資產,或 “現金”)不會面臨這種困境。在現實世界中,如果你給了我一枚硬幣,你就失去了這枚硬幣。這世上沒有魔法可以複製這枚硬幣,要讓我得到一枚硬幣,就必須把一枚硬幣交給我。物理世界的規律阻止了一幣多花。

雖然非數字世界確實存在多重花費的情況(臭名昭著的詐騙犯 george parker 就曾靠著一房多賣牟利,賣的還是布魯克林大橋等地標建築),但是這需要精心設計的騙局和容易上當的買家。數字世界就不一樣了。

在數字世界,由於我們總是在與資訊 打交道,多重花費是一個固有的 問題。凡是複製過檔案或使用過複製貼上功能的人都知道,資訊是可以完美複製的,而且它不會與儲存該資訊的媒介繫結。假設你有一張數碼照片,你可以將它複製 100 萬次,將其中一些副本存入 u 盤,並將其傳送給成千上萬的人。完美的副本是可以實現的,因為可以使用完美的修正手段,消除一切瑕疵。最重要的是,複製幾乎是零成本的,而且副本與原件之間無法區分。

再說一遍:資訊只存在複製一說。數字資訊是無法從 a 移動 至 b 的,只能從 a複製 到 b。如果複製成功,再將a 處的原件刪除,才能叫 “移動”。這就是為什麼多重花費問題如此棘手。沒有權威機構,就無法以不帶對手方風險的方法將任何資訊從 a 轉移給 b。我們必須相信原件會被刪除。一個天然的副作用就是,就數字資訊而言,我們無法確定存在多少副本,以及這些副本都在哪裡。

因此,數字象徵物永遠都無法充當貨幣使用。象徵物因其獨特的物理構造而難以複製,從而具備可靠性。到了數字世界,這一優勢蕩然無存。在數字世界,象徵物是不可信的。由於資訊的固有特性,數字貨幣的唯一可行形式只能是賬本,而非象徵物。因此,數字貨幣不得不面對時間問題。

象徵物是不帶時間屬性的,賬本不是

“看得見的東西是一時的,看不見的東西是永恆的。”

——paul of tarsus, corinthians 4:18b

對於物理象徵物來說,交易是在什麼時候發生的(你的錢是從哪裡來的)並不重要。你的兜裡要麼有錢,要麼沒有。要麼花掉,要麼不花。花錢的唯一前提就是兜裡有錢。剩下的全交給自然法則。從這個意義上來說,物理象徵物是無需信任且不帶時間屬性的。

對於賬本來說,物理佔有就沒那麼重要了。管理賬本的人需要確保所有賬目都井井有條。原本由物理定律(你無法花費不屬於你的錢,也不能重複花費同一筆錢)賦予的特徵必須由人為制定的規則來強制實現。正是這些規則(而非物理定律)在維持賬本的有序運作。

從物理定律轉向人為制定的規則就是問題的癥結所在。後者是可以修改和破壞的,前者則不然。例如,你無法 “偽造” 一枚實物金幣,你得從地底下挖出金子。但是,你可以在紙上偽造金幣。你只需要在賬本上新增一個條目,聲稱自己有一些金幣就行。如果是央行,只需要在電腦上敲幾個鍵,就可以增發數萬億美元。(金融從業人稱之為 “再抵押”、“部分準備金制度” 和 “量化寬鬆” —— 但是千萬不要被這些花裡胡哨的術語弄糊塗了,它們本質上都是造假錢。)

為了確保賬本以及管理賬本的人沒有弄虛作假,我們必須定期對賬本進行獨立審計。對賬本中的每個條目進行核算不是什麼了不得的事 。審計員要能檢查過去的賬簿,來確保賬本的可靠性和有效性。沒有可靠的時間戳,我們就無法驗證賬本的內部一致性。我們必須建立一個機制來確定交易順序。

如果沒有一個絕對的時間概念,我們就無法確定交易順序。如果無法確定交易順序,我們就無法保證賬本沒有偽造。除此之外,還能有什麼方式來證實你擁有多少錢?還能有什麼方式來確保所有賬目都井然有序?

象徵物和賬本之間的區別凸顯了追蹤時間的必要性。在物理世界,貨幣是不帶時間屬性的人工製品,可以在無人監督的情況下用於交易。在數字世界中,標記貨幣需要時間戳。

中心化的貨幣標記

“時間能刻上一切印記,也能抹去一切印記。”

——yahia lababidi (b. 1973)

解決多重花費問題(確保每筆數字轉賬僅發生一次)最常見的方法是建立一箇中心化交易列表。一旦你有了一箇中心化交易列表,你就有了可以充當唯一真相來源的賬本。這時,解決多重花費問題就很簡單,只需仔細檢查交易列表,確保每條賬目都正確無誤即可。這就是 paypal、venmo、alipay 以及全球所有銀行(包括央行)解決多重花費問題的方法:權威機構。

“這一過程的問題在於,收款人難以檢驗,之前的某位持有者是否多重花費過某一筆錢。通常的解決方案是,引入可信的第三方權威,或類似鑄幣廠之類的機構,來對每一筆交易進行檢驗,以防止多重支付……該解決方案的問題在於,整個貨幣系統的命運完全依賴於鑄幣廠的運營方,因為每一筆交易都要經過該鑄幣廠的確認,這個鑄幣廠就好比是一家銀行。”

—— 中本聰,《白皮書》

需要注意的是,中本聰無法讓資訊變得無法複製。比特幣的每個部分(原始碼、賬本、使用者的私鑰)都是可以複製的。這一切都是可以複製並竄改的。然而,中本聰成功建立了一個系統,讓違反規則的副本變得毫無用處。比特幣網路透過執行復雜的機制,來決定哪些副本有用,哪些副本沒用。正是該機制為數字世界帶來了稀缺性。這個機制就好比一支舞蹈,需要控制節奏。

即使是中心化賬本,也必須採用統一的時間追蹤方式,才能解決多重支付問題。當一筆交易發生時,我們必須知道交易方、交易金額,以及最重要的,交易時間。在資訊領域,沒有時間戳就無法標記貨幣。

“必須強調的一點是,由於我們一直未能解決分散式系統中事件與時間點的關聯問題,去中心化賬本無法實現,直至中本聰發明出了解決方案。”

——gregory trubet?skoy(2018)

去中心化的時鐘

“時間會帶走一切。”

—— 埃斯庫洛斯(公元前 525 至 456 年)

時間和順序有著非常密切的關係。正如 leslie lamport 在 1978 年的論文《分散式系統中的時間、時鐘和事件順序》中所述:“時間概念是我們思維方式的基石。它源自一個更基礎的概念,即,事件的發生順序。” 由於缺少一箇中心協調時間點,“先”、“後” 和 “同時” 等看似直觀的概念都沒了參照。用 lamport 的話來說:“ ‘先發生’這一概念定義的是分散式多程序系統中不變的那部分事件順序。”

換言之:如果我們不能讓某個人來負責管理時間(授時),那麼我們如何確定事件發生的順序?如果沒有一箇中心參照系,我們如何才能獲得一個可靠的時鐘?

你可能認為這個問題很容易解決,因為每個人都可以使用他們自己的時鐘。但是,只有在每個人的時鐘都準確無誤(且人人都遵守規則)的情況下,這個方法才有效。在一個人們有對立、有利益衝突的系統中,每個人都使用自己的時鐘會是場災難。而且,根據相對論,這一方法無法跨越空間。

來個思維實驗:假設你生活在一個每個人都自己跟蹤事件發生順序的世界中,你可以怎樣欺騙其他人呢?你可以假裝你今天傳送的一筆交易其實是昨天的(只是因為某個原因而延遲),這樣你今天花掉的錢就還是你自己的。由於每個去中心化系統本質上都是非同步通訊,上述場景不只是理論上的思維實驗。訊息確實會延遲,時間戳會不準確。再加上相對論效應和宇宙的天然速度限制,我們很難在沒有中心化權威機構或觀察者的情況下辨別事件的先後順序。

“who's there? knock knock.”(“咚咚咚!”“誰啊?”)

—— 經典諧音梗

為了更好地說明這個問題,我們來看一個具體的例子。想象一下,你和你的商業夥伴都能夠訪問你公司的銀行賬戶。你的業務遍佈全球,因此你是在瑞士開的銀行賬戶,你本人住在紐約,而你的商業夥伴住在悉尼。你這邊的時間是 1 月 3 日,你正在賓館愜意地度過週末夜晚。你的商業夥伴那邊的時間已經是週一上午,她決定使用共享銀行賬戶的借記卡買早餐。當時卡上餘額為 615 美元。當地時間為上午 8:21。她的早餐花了 27 美元。

於此同時,你打算用另一張關聯該銀行賬戶的借記卡支付住宿費。此時卡上餘額為 615 美元。當地時間為下午 5 : 21。住宿費是 599 美元。

也就是說,你們在同一時刻刷了卡。會發生什麼事?(物理學家們,請原諒我使用了 “同一時刻” 這一表述,此處我們暫且忽略相對論效應,以及宇宙中不存在絕對時間這一事實。另外,我們還要假定同步事件概念是存在的。比特幣本身就已經夠複雜了!)

銀行的中央賬簿很可能是一前一後收到這兩筆交易的,這樣你們中必然有一個成了幸運兒,另一個成了倒黴蛋。如果中央賬簿恰好在同一瞬間(精確到毫秒)收到這兩筆交易,銀行就必須決定由誰來花費這筆錢。

那麼,如果沒有銀行會怎麼樣?誰來決定交易先後?如果不只是你們兩個,而是成百乃至上千人同時交易會怎麼樣?如果你不信任這些人該怎麼辦?如果有人想要作惡,比如將自己的時鐘撥慢,假裝自己的交易是幾分鐘前的,該怎麼辦?

“我們需要一種與時間有關的工具來建立公認的排序,並在不依賴於任何中央協調者的情況下維護唯一的歷史記錄。”

——giacomo zucco, 《發現比特幣》(2019)

這就是為什麼以往所有關於數字現金的嘗試都離不開中心化登錄檔。也就是說,我們必須信任某個人,才能正確決定事務的順序。我們需要中心化參與方來充當中心化時鐘。

比特幣解決這一問題的方法是重新定義時間。比特幣是透過區塊,而非秒來度量時間的。

以區塊為時間單位

帝王息爭,乃時光之風采;

將謊言揭穿,讓真相大白;

將歲月印記,給往事封印;

將黑夜堅守,喚黎明醒來;

將惡人懲治,直至其悔改;

—— 莎士比亞,《魯克麗絲受辱記》(1709)

所有時鐘都依賴於規律的過程,也就是我們常說的 “嘀嗒(讀秒聲)”。從本質上來說,老爺鐘發出的滴答聲與現代石英鐘和原子鐘發出的嗡嗡聲沒有任何區別。具體來說,我們利用鐘錶中某個部件擺動或振動的次數來度量秒或分鐘。

大型擺鐘的鐘擺很長,擺動起來很明顯。更專業的小型時鐘則需要特殊部件。時鐘的振動頻率(“嘀嗒” 的頻率)取決於其應用場景。

大多數時鐘的振動頻率都是固定的,以便精準報時。然而,有些時鐘的振動頻率是可變的。例如,節拍器就可以預先設定振動頻率,一旦設定完成,就會按照恆定頻率打拍子。比特幣每次 “嘀嗒” 的時間間隔都不同,因為其內部機制存在概率性。不過,二者的目的都一樣:演奏音樂,讓舞蹈可以繼續。

老爺鐘

~0.5 hz(hz “赫茲”表示週期性事件在一秒內發生的次數)

節拍器 ~0.67 hz 至 ~4.67 hz

石英錶 32768 hz

銫 133 原子鐘   9,192,631,770 hz

比特幣   一個區塊(0.00000192901 hz* 至 ∞ hz**)

* 創世塊(6 天)

** 區塊之間時間戳的 delta 值可以是負數。

眼前的比特幣不就是一個時鐘嗎?中本聰確實暗示過,整個比特幣網路就像一個時鐘,用他的話來說,一個分散式時間戳伺服器。

在這篇論文中,我們將提出一種透過點對點分散式時間戳伺服器來為一組交易的發生順序生成計算證明,從而解決多重支付問題。

—— 中本聰,《比特幣:一種點對點的電子現金系統》(2009)

從比特幣白皮書最後的參考文獻來看,時間戳顯然是一大根本問題。在 8 篇參考文獻中,有 3 篇與時間戳有關:

《如何為數字文件加上時間戳》,s. haber,w.s. stornetta(1991)

《論如何提高數字時間戳的效率和可靠性》,d. bayer,s. haber,w.s. stornetta(1992)

《如何設計一個信任最小化的安全時間戳服務》,h. massias,x.s. avila,j.-j. quisquater(1999)

正如 haber 和 stornetta 在 1991 年所述,數字時間戳就是利用計算過程讓使用者(或敵對方)無法向前或向後更改數字文件的日期。不同於紙質文件,數字文件易於篡改,而且篡改時並不一定會在物理媒介上留下任何明顯的跡象。在數字世界,偽造和篡改可以達到無懈可擊的地步。鑑於資訊的可塑性,為數字文件新增時間戳成了一個非常複雜的過程。直覺的解決方案根本不起作用。以文字文件為例,只是簡單地在文件末尾加上一個日期是根本沒用的,因為任何人(包括你自己)都可以輕而易舉地修改日期。更何況,你一開始就可以偽造日期。

時間是一條因果鏈

極端一點,整個世界無非就是一張關係網而已。

——tim berners-lee,《編織全球資訊網》(1999)

偽造日期是一個普遍問題,並不僅僅存在於數字世界。例如,在綁架案中,綁匪就需要一種辦法來證實綁票發生的時間。

- 時間證明 -

這個方法之所以可行,是因為報紙很難偽造,而且易於驗證。由於報紙頭版報道的都是前一天的事件,綁匪是不可能提前預知頭版新聞、並提前幾周就偽造好人質照片的。因此,照片中人質手持的報紙的發行日期就是人質在世的證明。

這個方法凸顯了一個重要概念:因果關係。時間箭頭反映了事件的因果關係。沒有因果關係,就無所謂時間。在賽博世界,雜湊函式對於解決時間戳問題來說至關重要,因為它引入了因果關係。如果沒有某份文件,我們就無法生成對應的密碼學雜湊值,因此文件和雜湊值之間存在因果關係:先要有資料,而後才能生成(該資料對應的)雜湊值。換言之,如果沒有單向函式的計算不可逆性,賽博世界中就不會存在因果關係。

- 先有 a,才有 b -

有了因果關係,我們就可以建立出一連串環環相扣的事件。因此,安全的數字時間戳方案得以為原本不存在時間的數字世界譜寫歷史。

因果關係決定了事件的時間順序。如果一個事件由之前的某些事件引發,並且引發了之後的某些事件,則該事件在歷史上的位置得以確定,不會再更改。

——bayer,haber,stornetta (1992)

毋庸置疑的是,因果關係對於經濟計算而言至關重要。鑑於賬本其實是多個合作方之間經濟計算的具象化,因果關係對於每個賬本而言同樣至關重要。

我們需要一個能讓所有參與者就唯一歷史記錄達成共識的系統 …… 我們提出的解決方案基於時間戳伺服器。

—— 中本聰(2009)

有趣的是,讓比特幣得以運作的所有元件其實早已存在。早在 1991 年,haber 和 stornetta 就介紹了兩種 “可以有效防止時間戳造假” 的方案。一個是依賴於可信第三方的方案,另一個是更為複雜的 “分散式信任” 方案,無需依賴於可信第三方。兩位作者甚至發現了信任事件因果鏈背後的固有問題,以及重寫歷史所需的條件。換言之,“有可能成功做惡的唯一方法是,準備好一條足夠長的時間戳鏈,長到連最疑心最重的挑戰者都懷疑不了的地步。”如今,比特幣也存在一個類似的攻擊向量,即 51% 攻擊(詳見下一節)。

一年後,bayer、haber 和 stornetta 在之前的研究基礎上提出使用 “默克爾樹”,而非簡單的連結串列將所有事件連線起來。默克爾樹是一種簡單高效的資料結構,可以根據多個雜湊值計算出一個確定的雜湊值。從時間戳的角度來看,這意味著一單位時間可以容納多個事件。另外,這三位作者還提議對他們在 1991 年提出的分散式信任模型進行改進,即,不斷舉辦 “世界冠軍錦標賽” 來決定唯一的 “獲勝者”,由獲勝者在(類似報紙這樣)公開的地方釋出計算出的雜湊值。聽起來是不是很熟悉?

我們可以看出,報紙是一個絕佳的例子,能讓我們更好地思考時間的第二個特性:不可預測性。

因果關係和不可預測性

時間不是現實(hupostasis),而是一種概念(noêma)或計量單位(metron)……

—— 智者安提豐,《論真理》(公元三世紀)

因果關係雖然很重要,但是遠遠不夠。時間流逝還離不開不可預測性。在物理世界,我們透過觀察自然過程來描述時間的流逝。我們觀察到熵是在不斷增加的,並稱之為時間箭頭。儘管在大多數情況下,自然規律看似與時間箭頭無關,但是某些事情實際上是無法撤銷的。俗話說得好,破鏡難圓。

同樣地,數字世界也需要增熵函式來建立時間箭頭。sha256 雜湊值和密碼學簽名並非絕對不可破解,但就像破鏡幾乎不可能重圓,sha256 和密碼學簽名也幾乎不可破解。

如果沒有熵增,我們就可以任意更改時間戳。例如,斐波納契數字的順序具備因果關係,但不具有熵增特質。在斐波納契數列中,每個數字都是由前兩個數字相加得到的。因此,斐波納契數列是一條因果鏈。但是,斐波納契數列無法用來報時,因為它是完全可預測的。這就好比說,綁匪不能用人質和日曆的合影來證明人質還活著。我們不能使用可預測的東西作為時間證明,只能使用無法提前預測的事物,如,當日報紙的頭版。

比特幣的不可預測性是透過交易和工作量證明實現的。就像沒人能預測明天的報紙會刊登什麼內容,也沒人能預測下一個比特幣區塊長什麼樣。你無法預測區塊中會打包哪些交易,因為你無法預測未來將有哪些交易被廣播 。更重要的是,你無法預測誰會解開當前的工作量證明難題,以及得出的解是什麼。

不同於報紙,工作量證明直接 與已經發生的事件聯絡起來。工作量證明不僅僅是事件的記錄,而且是事件本身。正是這種基於概率的直接聯絡免去了工作量證明的信任需求。找到有效工作量證明的唯一方法是做出大量猜測,每次猜測都要花費少量時間。每找到一個解所需要的猜測次數是概率性的,從而構成比特幣的時間鏈。

利用雜湊鏈的因果順序和工作量證明的不可預測性,比特幣網路提供了一種機制,可以建立無爭議的事件歷史。如果沒有因果關係,我們就無法區分事件先後。如果沒有不可預測性,因果順序就毫無意義。

關於上文提到的綁匪的做法,其實 bayer、haber 和 stornetta 早在 1992 年就給出了明確解釋:“如果要確定某個文件是在某個時間之後建立的,該文件必須記錄已經發生但無法提前預料的事件。”

- 出版證明 -

正是因果關係和不可預測性的結合,我們才能在原本沒有時間概念的數字世界中人為定義 “現在”。正如 bayer、haber 和 stornetta 在 1991 年的論文中指出:“請求時間戳的客戶端的順序以及它們所提交的雜湊值是無法預知的。因此,如果我們在簽名證書中包含之前客戶端請求序列的位元,就知道證書的時間戳晚於這些請求……證書中必須包括之前文件的位元這一要求也可以從另一個方向指明時間的先後,因為時間戳機構無法預先發行證書,除非它擁有此時此刻的請求。”

所有元件都在這裡了。中本聰的高明之處在於將這些元件全都組合到了一起,從而免去對時間戳機構的需求。

時間證明

原因雖被深藏,結果卻已知曉。

—— 奧維德,《變形記》(公元 8 年)

讓我們來概括一下:要想在數字世界花錢,我們必須依靠賬本。要想賬本變得可靠,我們必須明確交易順序。要想明確順序,我們必須使用時間戳。因此,如果我們想要在數字世界創造出免信任貨幣,我們必須移除任何建立並管理時間戳的實體,以及負責計時的單一實體。

天才如中本聰找到了解決方案:“為了實現點對點的分散式時間戳伺服器,我們需要使用工作量證明系統,類似於 adam back 提出的雜湊現金(hashcash)。”

我們之所以需要使用工作量證明系統,是因為我們需要數字世界原生的東西。一旦你瞭解數字世界的本質是資訊化的,那麼顯而易見的是,計算就是我們擁有的一切。如果你的世界是由資料組成的,就會存在資料操縱。

工作量證明是一種點對點機制,因為它無需信任。工作量證明之所以具備免信任性,是因為它與所有外部輸入(如,時鐘或報紙)隔絕。它只依賴於一樣東西:計算離不開工作量的投入。在我們的世界裡,產生工作量需要投入能源和時間。

通往時間的橋樑

我知道我已著魔。

我們跑過橋 —— 熊熊燃燒的橋 ——

火焰在身後肆虐,

我們站在死亡邊緣,

親愛的,你我正與世界為敵。

—— kate bush,《燃燒的橋》(1985)

如果沒有工作量證明,我們必然會遇到資訊輸入機制問題,因為物理世界和資訊世界永遠有隔閡。牧羊人數羊時在列表上做的標記並不是真正的羊,地圖不能與真正的領土相提並論,報紙上的新聞也不一定是真實發生的事件。同理,即使你使用現實世界的時鐘來建立時間戳,也並不代表實際時間就是如此。

坦白來說,我們無法相信資料代表了現實,除非是資料本身所固有的現實。比特幣的難度可調節型工作量證明的高明之處在於,它創造了自己的現實,以及空間和時間。

工作量證明能夠將數字世界和物理世界直接聯絡起來。只有這種連線是以免信任方式建立的。其它一切都依賴於外部輸入。

比特幣的出塊難度是會調整的,從而維持比特幣時間與人類時間之間的聯絡。就像發條一樣,每挖出 2016 個區塊,比特幣系統就會重新調整挖礦難度。難度調整旨在將平均出塊時間控制在 10 分鐘,從而在物理世界和資訊世界之間建立穩定的聯絡。因此,比特幣時鐘的走時需要根據人類的時間感知重新調整。純粹基於時鐘的難度調整是不可行的,因為這會將比特幣與人類世界完全割裂。難度調整的目的就是防止人們的出塊速度太快(或太慢)。

正如愛因斯坦告訴我們的那樣,時間不是絕對的。沒有什麼所謂的宇宙時間。時間是相對的,同時性並不存在。僅憑這一事實,所有時間戳(尤其是跨越了遙遠空間的)本質上都是不可靠的,即使參與者之間不存在對立也是如此。(順帶一提,這就是為什麼 gps 衛星的時間戳必須不斷調整。)

對於比特幣來說,人類時間戳並不精確這一事實不是很重要。一開始就沒有絕對的參考系也不重要。時間戳的精確程度只需讓以 2016 個區塊為基數計算得出的出塊時間足夠可靠,即可。為了保證這一點,只有在滿足以下兩個標準的情況下,一個區塊的 “物理世界” 時間戳才會被接受:

1.該時間戳必須大於之前 11 個區塊的時間戳中位數。

2.該時間戳必須小於網路調整時間加兩小時。(“網路調整時間” 就是與你連線的所有節點返回的時間戳的中位數。)

換言之,難度調整就是保持時間恆定,而非 安全性、難度或能源消耗量恆定。該設計頗具獨創性,因為良幣 必須 具備很高的時間成本,而非能源成本。如果貨幣只與能源關聯,並不足以產生絕對的稀缺性,因為一旦能源生產技術有了改進,我們就能創造出更多貨幣。時間是唯一一個無法再生的東西。正如 julian simon 所言,時間是終極資源。正因如此,比特幣成了貨幣的終極形態,因為比特幣的發行量與宇宙的終極資源(時間)直接相關。

難度調整至關重要。如果沒有難度調整,隨著越來越多礦工加入網路,或礦機效率提高,比特幣的內部時鐘就會越走越快。我們很快就會遇到協調問題。一旦出塊時間降到某個閾值(如 50 毫秒)以下,系統就無法對某個共享狀態達成共識,即使在理論上也是如此。光從地球的一側到達另一側需要大約 66 毫秒。

因此,即使我們的電腦和路由器是完美的,我們也會束手無策:面對兩個事件,將無法斷言其先後順序。如果我們不對比特幣的出塊時間進行週期性調整,就會陷入絕境 —— 必須以超越光速的速度解決協調問題。時間也是導致密碼學不穩定性問題的根源(詳見第一章)。密碼學之所以能發揮作用,是因為利用了時間的不對稱性:建起一道密碼學牆壁只需要一瞬間,打破它卻需要很久,除非你有金鑰。因此,從某種意義上來說,工作量證明以及難度調整都是在人為放慢時間,至少從比特幣網路的角度來看是這樣。換言之,比特幣是在強行控制內部節奏,透過低頻率為對等節點之間的通訊延遲提供充足的緩衝空間。每挖出 2016 個區塊,比特幣的內部時鐘都會重新調整。因此,平均每 10 分鐘只會挖出一個有效區塊。

從外部角度來看,比特幣就是將在全球廣播的非同步訊息集中到一個平行宇宙中。這個平行宇宙有自己的規則,以及時空觀。從比特幣網路的角度來看,交易池中的交易是沒有時間屬性的。只有被打包進有效區塊的交易才會被賦予時間:該交易所在區塊的編號。

- bitcoin v0.01 alpha (2009) -

這個解決方案之精妙已經無以言表。一旦你能夠自行定義時間,就可以輕鬆辨別事件的先後順序。因此,人們也可以輕而易舉地在發生了什麼、按照什麼順序,以及誰欠誰什麼等問題上達成共識。

難度調整可以確保比特幣的內部節拍器打出的拍子是恆定的。它是比特幣這支樂團的指揮,可以讓音樂永葆鮮活。

但是,憑什麼認為,“工作量” 是一個最終值得依賴的東西呢?答案有三重。首先,因為計算需要投入工作量;產生工作量需要花費時間;而在我們這裡,工作 —— 猜測隨機數 —— 是無法取巧的。

基於概率的時間

時間無休止地生出岔路,通往無數個未來。——博爾赫斯,《小徑分叉的花園》(1958)

為比特幣區塊找到有效的 nonce 就是一場猜謎遊戲,類似於擲骰子、拋硬幣或輪盤賭。本質上,你是在尋找一個天文數字。每一次猜測都不會讓你更接近答案。要麼猜中,要麼重來。

每次你拋硬幣,拋中正反面的概率都是 50% —— 哪怕你之前拋了 20 次,次次都是正面朝上。同樣地,在比特幣挖礦過程中,每一秒出現一個有效區塊的概率都是 0.16% 左右。上個區塊是什麼時候找到的並不重要。找到下個區塊之前需要等待的時間永遠都一樣:10 分鐘左右。

因此,比特幣時鐘的每一次 “嘀嗒” 都是不可預測的。相比我們人類使用的時鐘,比特幣時鐘似乎是粗糙且不準確的。正如 gregory trubet?skoy 所言:“這個時鐘是否準確並不重要。重要的是,每個人的時鐘都相同,並且整條鏈的狀態與時鐘的走時明確關聯。”雖然比特幣的時鐘是基於概率的,但它不是一種幻覺。

時間是一種幻覺。午餐時間尤其如此。—— 道格拉斯?亞當斯,《銀河系漫遊指南》(1979)

然而,在比特幣系統中,“現在” 絕對是一種幻覺。由於網路中沒有中央機構,可能會有奇怪的情況出現。雖然不太可能,但是萬一有兩個人同時找到有效區塊呢?(再次向所有物理學家致歉。)也就是說,兩個不同位置的時鐘同時嘀嗒了一聲。這兩個區塊的內容很可能不同。它們雖包含不同的歷史,但都同樣有效。

這就是所謂的鏈分裂(chain split),是中本聰共識在執行中自然而然會出現的一種情形。就像遷徙中的鳥群,時而分成兩列,時而合在一起。經過一段時間之後,比特幣網路中的節點最終會形成一個共享的歷史,這得益於猜測所帶來的概率性。

中本聰共識只是簡單地要求,正確的歷史在最重的鏈(即,包含最多工作量證明的鏈)上。因此,如果我們有 a 和 b 兩個歷史,有些礦工會在 a 上續寫歷史,有些礦工會在 b 上續寫歷史。一旦某一方的礦工找到了下一個有效區塊,另一方的礦工就會接受自己是在錯誤的歷史上挖礦,並轉向最重的鏈(根據定義,就是代表實際發生的事件的鏈)。在比特幣中,歷史是由勝利者書寫的。收款人需要有證據能夠證明,每筆交易發生時,絕大多數節點認同它們最先收到了該交易……當同一筆交易存在多個支付物件時,只有一個是有效的。

收款人必須等待一小時左右,然後才能相信這個交易是有效的。屆時,網路就能解決一切有可能發生的多重花費競賽。—— 中本聰(2009)

上面段話揭開了分散式協調問題的秘密。中本聰就是透過這種方式解決了上文提到的 “同時付款” 問題,而且是一勞永逸地。讓相對論見鬼去吧!

由於比特幣時鐘具有概率性,“現在”(我們稱之為鏈頂端)永遠是不確定的。過去(鏈頂端以下的區塊)永遠是確定的。

若想理解得更深入,我們必須追溯到更早的時間。——gordon clark,《從基督教的角度理解人與物》(1951)

因此,對於某些對等節點來說,比特幣時鐘有時會倒退一兩下。如果你的鏈頂端(現在)恰好輸給了另一個鏈頂端,你的時鐘就會先倒退再前進,覆蓋你原先以為正確的歷史。如果你的時鐘具有概率性,你對歷史的記憶也不得不如此。

嘀嗒嘀嗒 —— 幾點了?嘀嗒嘀嗒…… 停在了c619。真是這樣嗎?會不會慢了?管它準不準:8 在 9 前不會錯。這個鐘不準,有時倒著走。準時才有鬼,中心化要不得!這個鍾在嘀嗒,嘀嗒復嘀嗒,使壞也沒好處,嘀嗒到下個區塊。——一首關於比特幣和時間的小詩(2020)

總結

315一般指國際消費者權益日。設立目的在於擴大消費者權益保護的宣傳,使之在世界範圍內得到重視,以促進各國和地區消費者組織之間的合作與交往。

追蹤資訊世界的事物就意味著追蹤一系列事件,因此需要追蹤時間。追蹤時間需要就 “現在(永遠連線過去和將來的時間點)” 達成共識。在比特幣系統中,“現在” 是最重工作量證明鏈的端點。

對於時間結構來說,最重要的兩個組成部分是:因果關係和不可預測事件。因果關係用來定義過去,不可預測事件用來構建未來。如果事件順序是可預測的,就有可能跳過。如果每個事件之間沒有聯絡,要改變過去就很容易。由於比特幣系統定義了內部時間,作假難度極高。如果有人想作假,必須改寫過去或預見未來。比特幣的時間鏈可以有效防止這兩點。

如果從時間角度來看待比特幣,我們就應該清楚,“區塊鏈(透過因果關係將多個事件連線起來的資料結構)”並非主要創新,甚至不是什麼新想法。只要研究過前人關於時間戳的文獻,我們就能發現這點。

區塊鏈,就只是資料塊組成的鏈條而已。—— peter todd

中本聰的創新之處在於,各方如何在沒有中心化協調的情況下獨立就事件歷史達成共識。中本聰找到了一種實現去中心化時間戳機制的方法。該機制 (a)不依賴於時間戳機構或伺服器,(b)不需要報紙或其它任何物理媒介作為證據,(c)可以確保走時節奏基本不變,即使是在 cpu 時鐘時間更快的環境中執行也是如此。

計時需要 因果關係、不可預測性 和協調性。在比特幣中,因果關係由單向函式提供,即,位於比特幣協議核心的密碼學雜湊函式和數字簽名。不可預測性是透過工作量證明難題和節點互動實現的:你無法提前預知其它節點在幹什麼,你也無法提前預知工作量證明難題的解。協調性是透過難度調整實現的,秘訣就是將比特幣時間與人類時間聯絡起來。只有將物理世界和資訊世界連線起來,我們才能只依賴於資料在時間上達成共識。

比特幣是時間不只體現在一方面。比特幣的最小單位 satoshi 是時間,因為它是貨幣;比特幣的網路也是時間,因為它是一個去中心化時鐘。正是因為比特幣時鐘孜孜不倦地轉動,比特幣才能具備這些神奇的特性。否則,整個比特幣系統就會分崩離析。也正因如此,這一鬼斧神工般的網際網路貨幣才能惠及所有人。


免責聲明:

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

推荐阅读