摘要:當理解了這些屬性,你應該能夠得出一個結論的機制主要實現了一個分布式,去中心化的時間系統,即一個時鐘。很遺憾,在一個去中心化系統中,不可能通過時間戳來決定事件的先后順序。因此,算力是一個與參與者數量,和那些用來計算哈希設備的速度相關的函數。
原文:Blockchain Proof-of-Work Is a Decentralized Clock原文從區塊鏈如何保持交易有序的基本問題出發,對該問題進行了詳細闡述,并提出 PoW 本質上是實現了一個“時鐘”的觀點,這個時鐘的一個滴答對應的就是 PoW 算出一次的解。
本文解釋了比特幣 PoW(Proof-of-Work, 工作量證明) 的關鍵要素,尤其對 PoW 來說不可或缺的一個特性,同時也表明關于 PoW 經常談到的一些其他特性其實是次要作用,比如安全性,這些次要效應有用,但是非必要。
要想理解本文,首先要懂得在區塊鏈中,PoW 是如何工作的一些有趣的屬性,這些屬性并不那么直觀,甚至可以說相當反直覺,比如參與者如何在從來沒有相互交流的情況下,共同地求解一個問題。
當理解了這些屬性,你應該能夠得出一個結論:PoW 的機制主要實現了一個分布式,去中心化的時間系統,即一個時鐘。
注意本文并非關注 PoW 算法本身的細節,而是探究區塊鏈如何“嚴絲合縫”地將 PoW 運用其中。如果你還沒聽過 PoW,請先閱讀 這里。
分布式賬本時間排序問題在講解決方案之前,先來關注問題本身。很多 PoW 的相關資料都很令人費解,因為它們常常在沒有闡明問題的情況下,就試圖講清楚解決方案。
毫無疑問,任何賬本都需要有序。你不能發費還沒有收到的錢,也不能花費已經花出去的錢。區塊鏈交易(或者說包含交易的塊)必須有序,無歧義,同時無需可信的第三方。
即便區塊鏈不是一個賬本,而是就像日志一樣的數據,對于所有節點來說,如果要想共同保有一份完全相同的區塊鏈副本,有序也是必不可少的。交易順序不同,就是不同的兩條鏈。
但是,如果交易是由全世界的匿名參與者生成,也沒有中心化機構負責給交易排序,那又如何實現這一點呢?有人會說,交易(或者塊)可以包含時間戳,但是這些時間戳又如何可信呢?
時間是一個人類概念,時間的任何來源,比如一個原子時鐘,就是一個“可信第三方”,除此之外,由于網絡延遲和相對論效應,時鐘的大部分時間都有輕微誤差。很遺憾,在一個去中心化系統中,不可能通過時間戳來決定事件的先后順序。
我們所關心的“時間”并不是所熟悉的年,月,日這種概念。我們需要的是這樣一種機制,它可以用來確認一個事件在另一個事件之前發生,或者可能并發發生。
首先,為了建立之前與之后的概念,首先必須要建立一個時間點的概念。理論上來說,建立一個點時間的概念似乎并不太可能,因為沒有技術能夠足夠精確地測量 普朗克時間。但是你會看到,比特幣通過創建屬于自己的時間概念變相解決了這個問題,使得確立精確的時間點概念在事實上成為可能。
Leslie Lamport 1978 年的論文 “分布式系統中的時間,時鐘和事件順序” 中對這個問題有了詳細描述,但是除了“正確同步的物理時鐘”,實際上并沒有提供一個詳細的解決方案。1982 年 Lamport 同樣描述了 “拜占庭將軍問題”,中本聰在他早期的一封郵件中 解釋 了 PoW 如何解決了這個問題,比特幣白皮書 指出“為了在端到端的基礎上實現一個分布式的 時間戳服務器,我們將會使用一個工作量證明系統”,也表明了它主要解決了時間戳的問題。
時間是根本問題必須要強調的是,在分布式系統中,不可能將事件與時間點關聯起來,這是一個尚不可解問題,直到中本聰找到了一個解決方案,才使得分布式賬本成為可能。在區塊鏈中還有很多其他的技術細節,但是時間是最基礎也是最重要的。沒有時間,就沒有區塊鏈。
PoW 回顧簡而言之,比特幣的 PoW 就是 SHA-2 哈希滿足特定的條件的一個解,這個解很難找到。通過要求哈希滿足一個特定的數字,就確定了一個難度(difficulty),難度的值越小,滿足輸入的數字越少,找到解的難度就越大。
這就是所謂的“工作量證明”,因為滿足哈希要求的解非常稀少,這意味著找到這樣一個解需要很多試錯,也就是,“工作(work)”。而工作也就是意味著時間。
塊間無變化鏈的狀態由塊所反映,每個新的塊產生一個新的狀態。區塊鏈的狀態每次向前推動一個塊,平均每個塊 10 分鐘,是區塊鏈里面最小的時間度量單位。
SHA 無記憶,無進展SHA(Secure Hash Algorithm) 在統計學和概率上以無記憶性(memoryless) 聞名。對于我們人類而言,無記憶性有點反直覺。所謂無記憶性,就是無論之前發生了什么,都不影響這一次事件發生的概率。
關于無記憶性,最好的例子就是拋硬幣。如果一個硬幣連續 10 次都是正面,那么下一次是反面的可能性會不會更大呢?我們的直覺是會,但是實際上,無論上一次的結果是什么,每次拋硬幣正反面都是一半一半的概率。
而對于需要無進展(progress-free)的問題,無記憶性又是必要條件。progress-free 意味著當礦工試圖通過對 nonces 進行迭代解決難題時,每一次嘗試都是一個獨立事件,無論之前已經算過了多少次,每次嘗試找到答案的概率是固定的。換句話來說,每次嘗試,參與者都不會離“答案”越近,或者說有任何進展(progress)。就下一次嘗試而言,一個已經算了一年的礦工,與上一秒剛開始算的礦工,算出來的概率是一樣的。
在指定時間內,給定一個難度,找到答案的概率唯一地由所有參與者能夠迭代哈希的速度決定。與之前的歷史無關,與數據無關,只跟算力有關。
因此,算力是一個與參與者數量,和那些用來計算哈希設備的速度相關的函數。
SHA 與輸入無關在比特幣中,輸入的是區塊頭。但是如果給它隨機傳入一些值,找到一個合適哈希的概率仍然是一樣的。無論輸入是一個有效的塊頭,還是 /dev/random 中隨機的一些字節,都要花費平均 10 分鐘來找到一個解。
如果你找到了一個合適的哈希,但是輸入卻不是一個有效的塊頭,雖然無法將塊上鏈,但是它仍然是一個工作量證明(即使沒啥用)。
難度屬于銀河系令人驚奇的是,難度是universe(全宇宙,或者說通用的),也就是說它充滿了整個宇宙,無處不在。火星上的礦工也同樣能參與挖礦,但是他們不需要感知到地球礦工的存在,也不需要與地球上的礦工有交流,仍然是每 10 分鐘就會解決一個“難題”。(好吧,當他們解出難題時,需要告訴地球上的礦工,否則我們永遠也不知道)。
了不起的是,遠距離參與者不需要通過真正的相互交流進行溝通,因為他們在共同地求解同一個統計學問題,并且他們甚至互相感知不到對方的存在。
“通用屬性(universal property)”一開始看起來很神奇,實際上很容易解釋。我用了“通用”一詞,因為就這一個詞即可表達到位,但是它實際指的是“所有參與者都知道(這個難度)”。
SHA-256 的輸入可以是 0 到 2 的 256 方之間的任何一個整數(因為輸出是 32 字節,也就是在 0 到 2^256,任何超過該范圍的數將會導致沖突,也就是多余)。即使這個集合已經非常大了(比已知宇宙里所有原子總數都大),不過每個參與者都知道這個集合,并且只能從這個集合里選取一個數。
如果輸入的集合全世界都知道,SHA-256 全世界都知道,難度要求也是全世界都知道了,那么找到一個解的概率自然也就是“全世界都知道(universe)”。
計算 SHA 即參與如果所述問題是找到一個合適的哈希,那么要想解出這個問題,只需要去試一次,但是,哪怕就試一次,你就已經影響了整個算力。就這次嘗試而言,你就已經成為了一個幫助其他人解決問題的參與者。雖然你不需要告訴其他人你“做了”(除非你找到了答案),其他人也不需要知道,但是想要找到解的這次嘗試真真切切地影響到了結果。對于全宇宙而言,也是如此。
如果上面這段話看起來仍然不是那么令人信服,一個很好的類比就是尋找大素數問題。找到最大的素數很難,并且一旦找到,它就是“被發現”或者“已知的”。有無數的素數,但是在全宇宙中,每個數只有一個實例。因此無論是誰試圖找到最大素數,就是在解同一個問題,而不是這個問題另一個多帶帶的實例。你不需要告訴其他人你已經打算尋找最大素數,你只需要在找到時通知其他人。如果從來沒有人尋找最大素數,那么它永遠也不會被找到。因此,只要參與(也就是試圖找到素數),即使它正在秘密進行,仍會影響結果,只要公布最后的發現(如果找到)。
這就是中本聰設計的精妙之處,他利用了這個令人難以置信的統計學現象,即任何參與都會影響結果,即使秘密進行,即使尚未成功。
值得注意的是,因為 SHA 是 progress-free,每一次嘗試都可以被認為是一個參與者加入其中,然后立即退出。因此可以這么理解,礦工們來了又走,每秒無數次輪回。
參與度由統計學揭示這個神奇的秘密參與(secret participation)屬性反過來也成立。很多網站上顯示的全球算力,并非是由每個礦工在某個“礦工注冊辦公室”注冊,并定期匯報他們的算力而來。并不存在這種事情。
因為對于在 10 分鐘找到一個指定難度的解,所需算力是已知的,一個人平均必須嘗試這么多次(截止成文之時大概 10^21)才能找到答案,無論這個人是誰,他在哪兒。
我們不知道這些參與者是誰,他們也從來都不會說我正在參與其中,沒有找到解的人(實際上他們都是)從來不會告訴其他人他們正在進行計算,他們可能在世界上任何一個地方,但是我們肯定他們必然存在。因為生活還要繼續,問題(找到滿足條件的哈希)始終還是要被解決。
工作(work)是一個時鐘(clock)關鍵之處在于:找到滿足條件的哈希的難度,就類似于一個時鐘的角色。一個宇宙(universe)時鐘,因為全宇宙只有一個這樣的時鐘,不需要同步,任何人都能“看”到這個時鐘。
即使這個時鐘不精確也沒關系。重要的是,對所有人來說,它都是同一個時鐘,鏈的狀態與這個時鐘的滴答(tick)無歧義地綁定到一起。
這個時鐘由遍布地球上的未知數量的參與者共同操作,參與者相互之間完全獨立。
謎題的最后一部分解決方案必須是塊哈希(準確來說,是塊頭)。上面已經提到,對于 SHA 來說,輸入的內容并不重要,但是如果它是真實的塊,那么無論何時找到一個解,它都發生在 PoW 這個時鐘的滴答處。沒有早一點,沒有晚一點,而是恰好在這個點。我們知道這是毫無歧義的,因為塊是整個機制的一部分。
換句話來說,如果塊不是 SHA256 函數的輸入,我們仍然有一個分布式時鐘,但是我們無法將塊綁定到這個時鐘的滴答上。將塊作為輸入就解決了這個問題。
值得注意的是,我們的 PoW 時鐘只提供了滴答。但是我們沒辦法從滴答中分出順序,于是就引入了哈希鏈(hash chain)。
分布式共識共識(consensus)意味著意見一致(agreement)。所有參與者別無選擇,只能同意“時鐘已然滴答”。并且每個人都知道滴答和附加的數據。正如中本聰在郵件里面所解釋的,這確實解決了拜占庭將軍問題,。
在一個罕見卻又常見的情況下,會出現共識分離,有兩個連續的滴答與一個塊有關聯,這就發生了沖突。通過哪個塊與下一個滴答相關聯解決了這個沖突,同時將有爭議的塊變為“孤兒塊(orphan)”。鏈如何繼續是個概率問題(a matter of chance),這也可能間接地歸因于 PoW 的時鐘。
就這樣這就是區塊鏈的 PoW(工作量證明)。它并不是一個為了讓礦工贏得出塊權的“樂透”,也不是為了將實際能源轉換成一個有價值的概念,這些都偏離了本質。
比如礦工獎勵的角度來看,雖然這些獎勵激勵了礦工參與,但是這并不是區塊鏈誕生的必要因素。塊哈希形成一條鏈,但是這與工作量并沒什么關系,它是從密碼學上強制保證了塊的順序。哈希鏈使得前一個滴答“更確定”,“更加不可抵賴”,或者簡單來說,更安全。
PoW 也能使塊不可更改,這是一種好的副作用,也使得隔離見證(Segregated Witness)成為可能,但是隔離見證也能通過保留簽名(見證,witness)實現,所以這也是次要的。
結論比特被的 PoW 只是一個分布式,去中心化的時鐘。
如果你理解了這個解釋,那么你應該能夠更好地理解 PoW 與 PoS 的異同。顯然,兩者不具有可比性:PoS 是有關于(隨機分布的)權力(authority),而 PoW 是一個時鐘。
在區塊鏈的背景下,PoW 這個名字可能是個誤用,起的并不太好。這個詞來源于 Hashcash 項目,它確實用于證實工作(work)。在區塊鏈中,它主要關于可驗證的花費時間。當一個人發現滿足難度的哈希時,我們知道它必然會花費一些時間。實現時間延遲的方法就是“工作”,而哈希就是這段時間的證明。
PoW 是關于 time 而非 work 的事實也表明,可能存在一些其他的統計學問題,這些問題同樣消耗時間,但卻需要更少的能源。這也可能意味著比特幣算力有些“過分”,因為我們在上面所描述的比特幣時鐘,在只有部分算力的情況下,也是可信的,這是這種激勵結構推動了能源消耗。
如果你找到了一個方法能夠同步滴答,并且需要更少的工作,這是一個價值萬億美元的問題,請一定要告訴我!
P.S. 特別感謝 UChicago Statistics 的 Sasha Trubetskoy 對上述文字的 review 和建議。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24034.html
摘要:在本期中,我們將會進入構建加密經濟背后的三大支柱之一的共識部分加密經濟的三大支柱技術實現共識協議經濟模型。區塊鏈的共識節點提供的產品是安全,共識節點是網絡服務的生產者。在中,未來的共識群體是由今天的共識群體決定的。 在秘猿小課堂 16-25 期,我們給讀者介紹了構建加密經濟網絡的技術實現的兩個部分,即 Cell 模型和 CKB-VM 虛擬機。在本期中,我們將會進入構建加密經濟背后的三大...
摘要:任何人或物聯網設備想發起交易,只需要引用其他兩個交易就可以了。只要好人的交易總數足夠多,它就是安全的。要知道,應用場景是物聯網設備,物聯網設備跑真是天才的想法啊。不僅如此,這個電磁爐還能提高烹飪的安全系數。 鑒于有不少小伙伴反映,覺得區塊鏈技術圈亂象橫生,魚龍混雜,導致大家很難去辨識哪些是真正的技術。甚至有些人,打著說技術的名號,其實自己本身都沒弄懂弄明白,只是懂個皮毛,就開始拿著各種...
摘要:任何人或物聯網設備想發起交易,只需要引用其他兩個交易就可以了。只要好人的交易總數足夠多,它就是安全的。要知道,應用場景是物聯網設備,物聯網設備跑真是天才的想法啊。不僅如此,這個電磁爐還能提高烹飪的安全系數。 鑒于有不少小伙伴反映,覺得區塊鏈技術圈亂象橫生,魚龍混雜,導致大家很難去辨識哪些是真正的技術。甚至有些人,打著說技術的名號,其實自己本身都沒弄懂弄明白,只是懂個皮毛,就開始拿著各種...
摘要:任何人或物聯網設備想發起交易,只需要引用其他兩個交易就可以了。只要好人的交易總數足夠多,它就是安全的。要知道,應用場景是物聯網設備,物聯網設備跑真是天才的想法啊。不僅如此,這個電磁爐還能提高烹飪的安全系數。 鑒于有不少小伙伴反映,覺得區塊鏈技術圈亂象橫生,魚龍混雜,導致大家很難去辨識哪些是真正的技術。甚至有些人,打著說技術的名號,其實自己本身都沒弄懂弄明白,只是懂個皮毛,就開始拿著各種...
閱讀 4078·2021-10-08 10:04
閱讀 3061·2021-08-11 11:20
閱讀 2731·2021-07-25 21:37
閱讀 2680·2019-08-30 12:44
閱讀 2306·2019-08-30 11:12
閱讀 1314·2019-08-26 13:45
閱讀 2338·2019-08-26 11:53
閱讀 3057·2019-08-26 11:32