PoW 本質(zhì)上是個去中心化的時鐘

原文:Blockchain Proof-of-Work Is a Decentralized Clock

原文從區(qū)塊鏈如何保持交易有序的基本問題出發(fā)泳桦,對該問題進(jìn)行了詳細(xì)闡述,并提出 PoW 本質(zhì)上是實現(xiàn)了一個“時鐘”的觀點,這個時鐘的一個滴答對應(yīng)的就是 PoW 算出一次的解。

本文解釋了比特幣 PoW(Proof-of-Work, 工作量證明) 的關(guān)鍵要素,尤其對 PoW 來說不可或缺的一個特性,同時也表明關(guān)于 PoW 經(jīng)常談到的一些其他特性其實是次要作用杂靶,比如安全性,這些次要效應(yīng)有用酱鸭,但是非必要吗垮。

要想理解本文,首先要懂得在區(qū)塊鏈中凛辣,PoW 是如何工作的一些有趣的屬性抱既,這些屬性并不那么直觀,甚至可以說相當(dāng)反直覺扁誓,比如參與者如何在從來沒有相互交流的情況下防泵,共同地求解一個問題。

當(dāng)理解了這些屬性蝗敢,你應(yīng)該能夠得出一個結(jié)論:PoW 的機制主要實現(xiàn)了一個分布式捷泞,去中心化的時間系統(tǒng),即一個時鐘寿谴。

注意本文并非關(guān)注 PoW 算法本身的細(xì)節(jié)锁右,而是探究區(qū)塊鏈如何“嚴(yán)絲合縫”地將 PoW 運用其中。如果你還沒聽過 PoW,請先閱讀 這里咏瑟。

分布式賬本時間排序問題

在講解決方案之前拂到,先來關(guān)注問題本身。很多 PoW 的相關(guān)資料都很令人費解码泞,因為它們常常在沒有闡明問題的情況下兄旬,就試圖講清楚解決方案。

毫無疑問余寥,任何賬本都需要有序领铐。你不能發(fā)費還沒有收到的錢,也不能花費已經(jīng)花出去的錢宋舷。區(qū)塊鏈交易(或者說包含交易的塊)必須有序绪撵,無歧義,同時無需可信的第三方祝蝠。

即便區(qū)塊鏈不是一個賬本音诈,而是就像日志一樣的數(shù)據(jù),對于所有節(jié)點來說续膳,如果要想共同保有一份完全相同的區(qū)塊鏈副本改艇,有序也是必不可少的收班。交易順序不同坟岔,就是不同的兩條鏈。

但是摔桦,如果交易是由全世界的匿名參與者生成社付,也沒有中心化機構(gòu)負(fù)責(zé)給交易排序,那又如何實現(xiàn)這一點呢邻耕?有人會說鸥咖,交易(或者塊)可以包含時間戳,但是這些時間戳又如何可信呢兄世?

時間是一個人類概念啼辣,時間的任何來源,比如一個原子時鐘御滩,就是一個“可信第三方”鸥拧,除此之外,由于網(wǎng)絡(luò)延遲和相對論效應(yīng)削解,時鐘的大部分時間都有輕微誤差富弦。很遺憾,在一個去中心化系統(tǒng)中氛驮,不可能通過時間戳來決定事件的先后順序腕柜。

我們所關(guān)心的“時間”并不是所熟悉的年,月,日這種概念盏缤。我們需要的是這樣一種機制砰蠢,它可以用來確認(rèn)一個事件在另一個事件之前發(fā)生,或者可能并發(fā)發(fā)生唉铜。

首先娩脾,為了建立之前與之后的概念,首先必須要建立一個時間點的概念打毛。理論上來說柿赊,建立一個點時間的概念似乎并不太可能,因為沒有技術(shù)能夠足夠精確地測量 普朗克時間幻枉。但是你會看到碰声,比特幣通過創(chuàng)建屬于自己的時間概念變相解決了這個問題,使得確立精確的時間點概念在事實上成為可能熬甫。

Leslie Lamport 1978 年的論文 “分布式系統(tǒng)中的時間胰挑,時鐘和事件順序” 中對這個問題有了詳細(xì)描述,但是除了“正確同步的物理時鐘”椿肩,實際上并沒有提供一個詳細(xì)的解決方案瞻颂。1982 年 Lamport 同樣描述了 “拜占庭將軍問題”,中本聰在他早期的一封郵件中 解釋 了 PoW 如何解決了這個問題郑象,比特幣白皮書 指出“為了在端到端的基礎(chǔ)上實現(xiàn)一個分布式的 時間戳服務(wù)器贡这,我們將會使用一個工作量證明系統(tǒng)”,也表明了它主要解決了時間戳的問題厂榛。

時間是根本問題

必須要強調(diào)的是盖矫,在分布式系統(tǒng)中,不可能將事件與時間點關(guān)聯(lián)起來击奶,這是一個尚不可解問題辈双,直到中本聰找到了一個解決方案,才使得分布式賬本成為可能柜砾。在區(qū)塊鏈中還有很多其他的技術(shù)細(xì)節(jié)湃望,但是時間是最基礎(chǔ)也是最重要的。沒有時間痰驱,就沒有區(qū)塊鏈证芭。

PoW 回顧

簡而言之,比特幣的 PoW 就是 SHA-2 哈希滿足特定的條件的一個解萄唇,這個解很難找到檩帐。通過要求哈希滿足一個特定的數(shù)字,就確定了一個難度(difficulty)另萤,難度的值越小湃密,滿足輸入的數(shù)字越少诅挑,找到解的難度就越大。

這就是所謂的“工作量證明”泛源,因為滿足哈希要求的解非常稀少拔妥,這意味著找到這樣一個解需要很多試錯,也就是达箍,“工作(work)”没龙。而工作也就是意味著時間

塊間無變化

鏈的狀態(tài)由塊所反映缎玫,每個新的塊產(chǎn)生一個新的狀態(tài)毡鉴。區(qū)塊鏈的狀態(tài)每次向前推動一個塊恢氯,平均每個塊 10 分鐘,是區(qū)塊鏈里面最小的時間度量單位。

SHA 無記憶锅风,無進(jìn)展

SHA(Secure Hash Algorithm) 在統(tǒng)計學(xué)和概率上以無記憶性(memoryless) 聞名蓬坡。對于我們?nèi)祟惗越蜗危瑹o記憶性有點反直覺毕箍。所謂無記憶性,就是無論之前發(fā)生了什么值骇,都不影響這一次事件發(fā)生的概率莹菱。

關(guān)于無記憶性,最好的例子就是拋硬幣吱瘩。如果一個硬幣連續(xù) 10 次都是正面道伟,那么下一次是反面的可能性會不會更大呢?我們的直覺是會搅裙,但是實際上皱卓,無論上一次的結(jié)果是什么裹芝,每次拋硬幣正反面都是一半一半的概率部逮。

而對于需要無進(jìn)展(progress-free)的問題,無記憶性又是必要條件嫂易。progress-free 意味著當(dāng)?shù)V工試圖通過對 nonces 進(jìn)行迭代解決難題時兄朋,每一次嘗試都是一個獨立事件,無論之前已經(jīng)算過了多少次怜械,每次嘗試找到答案的概率是固定的颅和。換句話來說,每次嘗試缕允,參與者都不會離“答案”越近峡扩,或者說有任何進(jìn)展(progress)。就下一次嘗試而言障本,一個已經(jīng)算了一年的礦工教届,與上一秒剛開始算的礦工响鹃,算出來的概率是一樣的。

在指定時間內(nèi)案训,給定一個難度买置,找到答案的概率唯一地由所有參與者能夠迭代哈希的速度決定。與之前的歷史無關(guān)强霎,與數(shù)據(jù)無關(guān)忿项,只跟算力有關(guān)。

因此城舞,算力是一個與參與者數(shù)量轩触,和那些用來計算哈希設(shè)備的速度相關(guān)的函數(shù)。

SHA 與輸入無關(guān)

在比特幣中家夺,輸入的是區(qū)塊頭怕膛。但是如果給它隨機傳入一些值,找到一個合適哈希的概率仍然是一樣的秦踪。無論輸入是一個有效的塊頭褐捻,還是 /dev/random 中隨機的一些字節(jié),都要花費平均 10 分鐘來找到一個解椅邓。

如果你找到了一個合適的哈希柠逞,但是輸入?yún)s不是一個有效的塊頭,雖然無法將塊上鏈景馁,但是它仍然是一個工作量證明(即使沒啥用)板壮。

難度屬于銀河系

令人驚奇的是,難度是universe(全宇宙合住,或者說通用的)绰精,也就是說它充滿了整個宇宙,無處不在透葛”渴梗火星上的礦工也同樣能參與挖礦,但是他們不需要感知到地球礦工的存在僚害,也不需要與地球上的礦工有交流硫椰,仍然是每 10 分鐘就會解決一個“難題”。(好吧萨蚕,當(dāng)他們解出難題時靶草,需要告訴地球上的礦工,否則我們永遠(yuǎn)也不知道)岳遥。

了不起的是奕翔,遠(yuǎn)距離參與者不需要通過真正的相互交流進(jìn)行溝通,因為他們在共同地求解同一個統(tǒng)計學(xué)問題浩蓉,并且他們甚至互相感知不到對方的存在派继。

“通用屬性(universal property)”一開始看起來很神奇帮坚,實際上很容易解釋。我用了“通用”一詞互艾,因為就這一個詞即可表達(dá)到位试和,但是它實際指的是“所有參與者都知道(這個難度)”。

SHA-256 的輸入可以是 0 到 2 的 256 方之間的任何一個整數(shù)(因為輸出是 32 字節(jié)纫普,也就是在 0 到 2^256阅悍,任何超過該范圍的數(shù)將會導(dǎo)致沖突,也就是多余)昨稼。即使這個集合已經(jīng)非常大了(比已知宇宙里所有原子總數(shù)都大)节视,不過每個參與者都知道這個集合,并且只能從這個集合里選取一個數(shù)假栓。

如果輸入的集合全世界都知道寻行,SHA-256 全世界都知道,難度要求也是全世界都知道了匾荆,那么找到一個解的概率自然也就是“全世界都知道(universe)”拌蜘。

計算 SHA 即參與

如果所述問題是找到一個合適的哈希,那么要想解出這個問題牙丽,只需要去試一次简卧,但是,哪怕就試一次烤芦,你就已經(jīng)影響了整個算力举娩。就這次嘗試而言,你就已經(jīng)成為了一個幫助其他人解決問題的參與者构罗。雖然你不需要告訴其他人你“做了”(除非你找到了答案)铜涉,其他人也不需要知道,但是想要找到解的這次嘗試真真切切地影響到了結(jié)果遂唧。對于全宇宙而言芙代,也是如此。

如果上面這段話看起來仍然不是那么令人信服蠢箩,一個很好的類比就是尋找大素數(shù)問題链蕊。找到最大的素數(shù)很難,并且一旦找到谬泌,它就是“被發(fā)現(xiàn)”或者“已知的”。有無數(shù)的素數(shù)逻谦,但是在全宇宙中掌实,每個數(shù)只有一個實例。因此無論是誰試圖找到最大素數(shù)邦马,就是在解同一個問題贱鼻,而不是這個問題另一個單獨的實例宴卖。你不需要告訴其他人你已經(jīng)打算尋找最大素數(shù),你只需要在找到時通知其他人邻悬。如果從來沒有人尋找最大素數(shù)症昏,那么它永遠(yuǎn)也不會被找到。因此父丰,只要參與(也就是試圖找到素數(shù))肝谭,即使它正在秘密進(jìn)行,仍會影響結(jié)果蛾扇,只要公布最后的發(fā)現(xiàn)(如果找到)攘烛。

這就是中本聰設(shè)計的精妙之處,他利用了這個令人難以置信的統(tǒng)計學(xué)現(xiàn)象镀首,即任何參與都會影響結(jié)果坟漱,即使秘密進(jìn)行,即使尚未成功更哄。

值得注意的是芋齿,因為 SHA 是 progress-free,每一次嘗試都可以被認(rèn)為是一個參與者加入其中成翩,然后立即退出沟突。因此可以這么理解,礦工們來了又走捕传,每秒無數(shù)次輪回惠拭。

參與度由統(tǒng)計學(xué)揭示

這個神奇的秘密參與(secret participation)屬性反過來也成立。很多網(wǎng)站上顯示的全球算力庸论,并非是由每個礦工在某個“礦工注冊辦公室”注冊职辅,并定期匯報他們的算力而來。并不存在這種事情聂示。

因為對于在 10 分鐘找到一個指定難度的解域携,所需算力是已知的,一個人平均必須嘗試這么多次(截止成文之時大概 10^21)才能找到答案鱼喉,無論這個人是誰秀鞭,他在哪兒。

我們不知道這些參與者是誰扛禽,他們也從來都不會說我正在參與其中锋边,沒有找到解的人(實際上他們都是)從來不會告訴其他人他們正在進(jìn)行計算,他們可能在世界上任何一個地方编曼,但是我們肯定他們必然存在豆巨。因為生活還要繼續(xù),問題(找到滿足條件的哈希)始終還是要被解決掐场。

工作(work)是一個時鐘(clock)

關(guān)鍵之處在于:找到滿足條件的哈希的難度往扔,就類似于一個時鐘的角色贩猎。一個宇宙(universe)時鐘,因為全宇宙只有一個這樣的時鐘萍膛,不需要同步吭服,任何人都能“看”到這個時鐘。

即使這個時鐘不精確也沒關(guān)系蝗罗。重要的是艇棕,對所有人來說,它都是同一個時鐘绿饵,鏈的狀態(tài)與這個時鐘的滴答(tick)無歧義地綁定到一起欠肾。

這個時鐘由遍布地球上的未知數(shù)量的參與者共同操作,參與者相互之間完全獨立拟赊。

謎題的最后一部分

解決方案必須是塊哈希(準(zhǔn)確來說刺桃,是塊頭)。上面已經(jīng)提到吸祟,對于 SHA 來說瑟慈,輸入的內(nèi)容并不重要,但是如果它是真實的塊屋匕,那么無論何時找到一個解葛碧,它都發(fā)生在 PoW 這個時鐘的滴答處。沒有早一點过吻,沒有晚一點进泼,而是恰好在這個點。我們知道這是毫無歧義的纤虽,因為塊是整個機制的一部分乳绕。

換句話來說,如果塊不是 SHA256 函數(shù)的輸入逼纸,我們?nèi)匀挥幸粋€分布式時鐘洋措,但是我們無法將塊綁定到這個時鐘的滴答上。將塊作為輸入就解決了這個問題杰刽。

值得注意的是菠发,我們的 PoW 時鐘只提供了滴答。但是我們沒辦法從滴答中分出順序贺嫂,于是就引入了哈希鏈(hash chain)滓鸠。

分布式共識

共識(consensus)意味著意見一致(agreement)。所有參與者別無選擇涝婉,只能同意“時鐘已然滴答”哥力。并且每個人都知道滴答和附加的數(shù)據(jù)。正如中本聰在郵件里面所解釋的墩弯,這確實解決了拜占庭將軍問題吩跋,。

在一個罕見卻又常見的情況下渔工,會出現(xiàn)共識分離锌钮,有兩個連續(xù)的滴答與一個塊有關(guān)聯(lián),這就發(fā)生了沖突引矩。通過哪個塊與下一個滴答相關(guān)聯(lián)解決了這個沖突梁丘,同時將有爭議的塊變?yōu)椤肮聝簤K(orphan)”。鏈如何繼續(xù)是個概率問題(a matter of chance)旺韭,這也可能間接地歸因于 PoW 的時鐘氛谜。

就這樣

這就是區(qū)塊鏈的 PoW(工作量證明)。它并不是一個為了讓礦工贏得出塊權(quán)的“樂透”区端,也不是為了將實際能源轉(zhuǎn)換成一個有價值的概念值漫,這些都偏離了本質(zhì)。

比如礦工獎勵的角度來看织盼,雖然這些獎勵激勵了礦工參與杨何,但是這并不是區(qū)塊鏈誕生的必要因素。塊哈希形成一條鏈沥邻,但是這與工作量并沒什么關(guān)系危虱,它是從密碼學(xué)上強制保證了塊的順序。哈希鏈?zhǔn)沟们耙粋€滴答“更確定”唐全,“更加不可抵賴”埃跷,或者簡單來說,更安全邮利。

PoW 也能使塊不可更改弥雹,這是一種好的副作用,也使得隔離見證(Segregated Witness)成為可能近弟,但是隔離見證也能通過保留簽名(見證,witness)實現(xiàn)缅糟,所以這也是次要的。

結(jié)論

比特被的 PoW 只是一個分布式祷愉,去中心化的時鐘窗宦。

如果你理解了這個解釋,那么你應(yīng)該能夠更好地理解 PoW 與 PoS 的異同二鳄。顯然赴涵,兩者不具有可比性:PoS 是有關(guān)于(隨機分布的)權(quán)力(authority),而 PoW 是一個時鐘订讼。

在區(qū)塊鏈的背景下髓窜,PoW 這個名字可能是個誤用,起的并不太好。這個詞來源于 Hashcash 項目寄纵,它確實用于證實工作(work)鳖敷。在區(qū)塊鏈中,它主要關(guān)于可驗證的花費時間程拭。當(dāng)一個人發(fā)現(xiàn)滿足難度的哈希時定踱,我們知道它必然會花費一些時間。實現(xiàn)時間延遲的方法就是“工作”恃鞋,而哈希就是這段時間的證明崖媚。

PoW 是關(guān)于 time 而非 work 的事實也表明,可能存在一些其他的統(tǒng)計學(xué)問題恤浪,這些問題同樣消耗時間畅哑,但卻需要更少的能源。這也可能意味著比特幣算力有些“過分”水由,因為我們在上面所描述的比特幣時鐘荠呐,在只有部分算力的情況下,也是可信的绷杜,這是這種激勵結(jié)構(gòu)推動了能源消耗直秆。

如果你找到了一個方法能夠同步滴答,并且需要更少的工作鞭盟,這是一個價值萬億美元的問題圾结,請一定要告訴我!

P.S. 特別感謝 UChicago StatisticsSasha Trubetskoy 對上述文字的 review 和建議齿诉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筝野,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粤剧,更是在濱河造成了極大的恐慌歇竟,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抵恋,死亡現(xiàn)場離奇詭異焕议,居然都是意外死亡,警方通過查閱死者的電腦和手機弧关,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門盅安,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人世囊,你說我怎么就攤上這事别瞭。” “怎么了株憾?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵蝙寨,是天一觀的道長晒衩。 經(jīng)常有香客問我,道長墙歪,這世上最難降的妖魔是什么听系? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮箱亿,結(jié)果婚禮上跛锌,老公的妹妹穿的比我還像新娘弃秆。我一直安慰自己届惋,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布菠赚。 她就那樣靜靜地躺著脑豹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衡查。 梳的紋絲不亂的頭發(fā)上瘩欺,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音拌牲,去河邊找鬼俱饿。 笑死,一個胖子當(dāng)著我的面吹牛塌忽,可吹牛的內(nèi)容都是我干的拍埠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼土居,長吁一口氣:“原來是場噩夢啊……” “哼枣购!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起擦耀,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤棉圈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眷蜓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體分瘾,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年德召,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垮抗。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡氏捞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冒版,到底是詐尸還是另有隱情液茎,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站捆等,受9級特大地震影響滞造,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栋烤,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一谒养、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧明郭,春花似錦买窟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至话侄,卻和暖如春亏推,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背年堆。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工吞杭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人变丧。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓芽狗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锄贷。 傳聞我的和親對象是個殘疾皇子译蒂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容