來源:科技Bibibi
京準(zhǔn)科技 | NTP授時服務(wù)器應(yīng)用分布式區(qū)塊鏈
區(qū)塊鏈的工作證明其實(shí)是一個分布式時鐘
本文主要解釋了區(qū)塊鏈中的重要功能:工作證明(Proof-of-Work),。主要說明工作證明對于區(qū)塊鏈?zhǔn)且粋€重要特征,而且是必須的,;區(qū)塊鏈中其他經(jīng)常被提及特征(如安全性)反而是次要的,,雖有用但非必須。
本文的解釋主要是基于區(qū)塊鏈工作證明的一些有趣特性,,這些特性其實(shí)不能顯而易見,,有時甚至與直覺相反,例如區(qū)塊鏈的參與者可以在不需要溝通的情況下共同解決問題,。
在了解了這些特性之后,,人們應(yīng)該容易得出結(jié)論:工作證明主要是完成分布式或分散式的時間機(jī)制(如時鐘)。
請注意,,這篇文章不是關(guān)于工作證明本身解釋,,它只是說明了區(qū)塊鏈?zhǔn)侨绾卫盟摹H绻鷮ぷ髯C明不了解,,那么這個鏈接可能是一個好的開始,。
分散賬本的時間排序問題
在進(jìn)一步描述解釋之前,讓我們先把重點(diǎn)放在這個問題上,,也就是時間排序問題,。關(guān)于工作證明的許多文獻(xiàn)都很混亂,因為它們總是試圖解釋問題的結(jié)果而不是首先確定問題本身,。
任何分類賬都絕對需要順序,。一個人不能花沒有收到的錢,也不能花已經(jīng)花了的錢,。區(qū)塊鏈交易(或稱區(qū)塊鏈?zhǔn)聞?wù))必須明確順序,,并且不需要可信任的第三方來協(xié)調(diào)順序。
即使區(qū)塊鏈不是分類賬,,而只是某種如順序日志的數(shù)據(jù),,但對于每個節(jié)點(diǎn)都有相同的區(qū)塊鏈復(fù)制副本,順序也是必需的,。區(qū)塊鏈的順序不同就意味著不同的區(qū)塊鏈,。
但是,,如果交易是由世界各地的匿名參與者產(chǎn)生的,并且沒有中心化組織負(fù)責(zé)交易之間的順序排列,,但事實(shí)需要一個排序,,那么該怎么辦呢?雖然一個交易(或塊)可能包括時間戳,,但這些時間戳怎么可信,?
時間只是人的概念,時間的衡器比如一個原子鐘對于人來說是一個“可信賴的第三方”,。但是,,由于網(wǎng)絡(luò)延遲以及時間相對性的影響,依靠時間戳來確定事件順序在分散系統(tǒng)中是不可能的,。
我們感興趣的“時間”不是我們習(xí)慣的像年,、月、日等時間概念,。我們需要的是一種機(jī)制,,通過這種機(jī)制我們可以驗證一個事件發(fā)生在另一個事件之前或者可能同時發(fā)生。(banq注:事件的順序性)
首先,,對于什么是之前和什么是之后的等概念,,需要建立一個時間點(diǎn),。建立一個時間點(diǎn)起初在理論上似乎是不可能的,,因為沒有足夠精確的技術(shù)來測量 普朗克時間。但正如你所看到的,,比特幣通過創(chuàng)建自己的時間概念來解決這個問題,,在這個時間點(diǎn)上,確定精確的時間點(diǎn)實(shí)際上是有可能的,。
Leslie Lamport在 1978年的論文 “分布式系統(tǒng)中的時間,,時鐘和事件順序”中很好地描述了這個問題 , 除了“正確同步的物理時鐘”之外,,該文實(shí)際上并沒有提供全面的解決方案,。在1982年,Lamport還描述了“拜占庭將軍問題”,,而Satoshi在他的第一封電子郵件中解釋了工作證明是如何解決這個問題的,,因為比特幣文件指出“要在對等網(wǎng)絡(luò)上實(shí)現(xiàn)分布式時間戳服務(wù)器,我們將需要使用工作證明系統(tǒng)“,,這表明工作證明主要就是解決時間戳問題的,。
時間是根本問題
必須強(qiáng)調(diào)的是, 在分布式系統(tǒng)中不可能將事件與時間點(diǎn)關(guān)聯(lián)起來,,這是一個未解決的問題,,直到中本聰發(fā)明了區(qū)塊鏈的工作證明這個解決方案之后,分散的分類帳才可能得以實(shí)現(xiàn)。區(qū)塊鏈還有許多其他技術(shù)細(xì)節(jié),,但時間選擇是基礎(chǔ)性和重要的,。沒有時間就沒有區(qū)塊鏈。
工作證明文件
簡而言之,,區(qū)塊鏈的工作證明是一個符合某個要求的SHA-2哈希值,,這個值是非常難以找到的。困難之處在于哈希小于一個特定數(shù)字,,數(shù)字越小,,輸入值越稀少并且發(fā)現(xiàn)它的難度就越高。
它被稱為“工作證明”,,因為已知具有這種哈希的值非常罕見,,這意味著找到這樣的值需要大量的試錯,即“工作”,。反過來,,這意味著 “時間”。
通過改變需求,,我們可以改變難度,,從而改變發(fā)現(xiàn)這種哈希的可能性。比特幣難度動態(tài)調(diào)整,,以便每十分鐘平均能找到一個正確的哈希值,。
在塊之間什么也不會發(fā)生
區(qū)塊鏈的狀態(tài)由其塊體現(xiàn),每個新塊都會產(chǎn)生一個新狀態(tài),。區(qū)塊鏈狀態(tài)一次向前移動一個區(qū)塊的距離,,而一個區(qū)塊需要花費(fèi)平均10分鐘,這個時間是區(qū)塊鏈時間的最小量度,。
SHA是無記憶Memoryless,,無進(jìn)展的Progress-Free
安全哈希算法是統(tǒng)計和概率中的無記憶Memoryless。這是一個對我們?nèi)祟悂碚f特別違反直覺的概念,。
無記憶的最好例子是擲硬幣,。如果一枚硬幣連續(xù)出現(xiàn)10次同一面,這是否意味著下一次投擲更可能是反面,?我們的直覺說是的,,但實(shí)際上每次投擲都是50/50的機(jī)會,,無論前面發(fā)生了多少次巧合現(xiàn)象。
無記憶對于無進(jìn)展的Progress-Free是需要的。無過程意味著,,隨著礦工們試圖解決對隨機(jī)數(shù)進(jìn)行迭代以找到下一個塊的哈希值(解決方案),,每次嘗試都是一個獨(dú)立的事件,,無論過去做了多少工作,每次嘗試都找到解決方案的概率是不變的,。換句話說,在每一次嘗試中,,參與者都沒有更接近解決方案或沒有取得任何進(jìn)展,。一位一直在尋找哈希值一年的礦工在下一次嘗試時不會比一個剛剛開礦的礦工更有可能找到哈希值。
因此,,在給定的時間段內(nèi)找到給定解決方案(哈希值)的可能性僅由所有參與者在哈希中迭代的速度決定,。不是以前的歷史,不是數(shù)據(jù),,只是哈希率,。
哈希率又是參與者數(shù)量和用于計算哈希的設(shè)備速度的函數(shù)。
SHA輸入是不相關(guān)的
在比特幣區(qū)塊鏈中,,輸入是區(qū)塊頭部,。但是如果我們只給它隨機(jī)值,那么找到一致性散列的概率仍然是一樣的,。無論輸入是有效的塊頭還是來自/ dev / random的字節(jié),,平均需要10分鐘才能找到下一塊的哈希值。
當(dāng)然,,如果你發(fā)現(xiàn)一個符合要求的哈希,,但你的輸入不是一個有效的塊,這樣的解決方案不能被添加到區(qū)塊鏈,,但它仍然是工作量驗證(盡管無用),。
難度是銀河系
奇怪的是,困難是普遍的,,這意味著它橫跨整個宇宙,。 我們可以讓在火星上的礦工幫忙尋找,,他們不需要與地球礦工溝通,,關(guān)鍵還是每10分鐘才會找到答案。(好吧,,他們需要以某種方式告訴地球人他們是否解決了這個問題,,否則我們永遠(yuǎn)都不會知道)。
值得注意的是,,遠(yuǎn)方的參與者之間沒有真正的交流溝通,,因為他們共同解決相同的統(tǒng)計問題,但他們甚至不知道彼此的存在,。
這種“普遍性”雖然起初看起來很神奇,,但實(shí)際上很容易解釋。我使用了“通用universal”一詞,,因為它用一個詞來形容它,,但它確實(shí)意味著“每個參與者都知道”,。
SHA-256的輸入可以被認(rèn)為是0到2的 256平方之間的一個整數(shù)(因為輸出是32字節(jié),也就是說0和2的 256平方之間,,任何更大的值都可以保證碰到,,比如變?yōu)槿哂啵<词顾浅4螅?比可感知宇宙中的原子數(shù)目大得多),,它是一組數(shù)字,,每個參與者都知道,參與者只能從這組數(shù)據(jù)中挑選出來,。
如果輸入集是眾所周知的,,函數(shù)(SHA-256)是眾所周知的,并且難度要求是眾所周知的,,那么找到解決方案的可能性也確實(shí)是“普遍的”,。
嘗試SHA會使您成為參與者
如果確定的問題是要找到符合的哈希值,那么您只需要嘗試一次,,而且Bingo,,您也已經(jīng)影響了全局哈希率,并且對于那個嘗試您是參與者幫助其他人解決問題的人,。你不需要告訴別人你做了這件事(除非你真的找到了解決方案),,其他人不需要知道它,但是你的嘗試確實(shí)影響了結(jié)果,。對于整個宇宙來說,,no less。
如果上述情況仍然令人懷疑,,一個很好的比喻可能是尋找大質(zhì)數(shù)的問題,。找到最大的質(zhì)數(shù)是很難的,一旦找到,,它就變成“被發(fā)現(xiàn)”或“已知”,。有無數(shù)的質(zhì)數(shù),但宇宙中每個數(shù)字只有一個實(shí)例,。 因此,,試圖找到最大素數(shù)的人正在研究同一個問題。你不需要告訴任何人你決定尋找最大素數(shù),,你只需要在你找到一個時發(fā)布它,。如果沒有人找到最大的素數(shù),那么它永遠(yuǎn)不會被發(fā)現(xiàn),。因此,,只要最終被發(fā)現(xiàn)(如果被發(fā)現(xiàn)的話)被公布,參與(即試圖找到一個)者,,即使它是完全保密的,,仍然影響結(jié)果,。
想想這個令人難以置信的統(tǒng)計現(xiàn)象,即任何參與者即使在完全保密的情況也會影響結(jié)果,,即使并沒有成功也會,,這正是讓中本聰?shù)陌l(fā)明顯得如此輝煌原因。
值得注意的是,,由于尋找SHA是沒有進(jìn)展的概念問題,,每次嘗試都可以被認(rèn)為是一個參與者努力加入并立即離開。因此,,礦工每秒鐘加入和離開五十次,。
參與是一種統(tǒng)計顯示
在許多網(wǎng)站上列出的全球哈希率并不是因為每個礦工都在某些“礦工注冊辦公室”注冊,他們定期報告哈希率,。但是沒有這樣的東西存在,。
哈希率是已知的,因為對于在10分鐘內(nèi)找到特定難度的解決方案,,平均而言,,這種許多嘗試(在撰寫本文時?10的21)必須由某處某人實(shí)現(xiàn)。
我們不知道這些參與者是誰,,他們從未宣布他們正在工作,,沒有找到解決方案的人(實(shí)際上他們都是)并沒有告訴任何人他們正在工作,他們的位置可能在宇宙中的任何地方,,但我們絕對確定地知道它們存在,。因為問題需要繼續(xù)得到解決(哈希值需要被找到)。
工作是一個時鐘
問題的關(guān)鍵在于:找到一致性哈希的難度就像一個時鐘,。如果你愿意的話,,一個通用的時鐘,因為宇宙中只有一個這樣的時鐘,,所以沒有什么可以同步,,任何人都可以“看”它。
這個時鐘不準(zhǔn)確并不重要,。重要的是,,這對每個人來說都是同一個時鐘,并且區(qū)塊鏈的狀態(tài)可以毫不含糊地與時鐘的滴答聲掛鉤,。
#高考起航夢想生活#
這個時鐘是由遍布全球的未知數(shù)量的集體參與者的多重效率操作的,彼此完全獨(dú)立,。
謎題的最后一部分
解決方案必須是區(qū)塊的哈希(準(zhǔn)確說是區(qū)塊頭部),。正如我們所提到的那樣,輸入并不重要,,但如果它是實(shí)際的塊,,那么無論何時找到解決方案,,它都發(fā)生在我們的工作時間校驗時鐘的滴答處。不是在此之前,,也不是在其之后,,而是正好在滴答此刻。我們毫不含糊地知道這一點(diǎn),,因為該塊是該機(jī)制的一部分,。
換句話說,如果塊不是輸入到SHA256函數(shù),,我們?nèi)匀粫幸粋€分布式時鐘,,但是我們不能將這個塊與這個時鐘的滴答連接起來。使用塊作為輸入解決了這個問題,。
值得注意的是,,我們的工作證明時鐘僅為我們提供了滴答計時。沒有辦法從滴答判斷順序,,這就是Merkle樹的用途,。
分布式共識如何?
共識意味著協(xié)議,。所有參與者只能一致認(rèn)可時鐘的滴答別無選擇能達(dá)成共識,。此外,每個人都知道滴答和附加的數(shù)據(jù),。事實(shí)上,,正如中本聰在前面引用的電子郵件中解釋的那樣,這確實(shí)解決了拜占庭將軍問題,。
在一個罕見但常見的情況下,,有兩個連續(xù)的滴答與一個塊有關(guān)聯(lián),發(fā)生沖突,。這個沖突是通過什么塊與下一個滴答相關(guān)聯(lián)來解決的,,使得有爭議的塊之一成為“孤兒”。區(qū)塊鏈如何繼續(xù)是一個偶然的事情,,所以這也可能間接地歸因于工作時間時鐘,。
就是這樣
這是工作證明為區(qū)塊鏈所做的工作。這不是一個“礦工”,,礦工是獲得解決問題的權(quán)利,,也不是將真正的能量轉(zhuǎn)化為有價值的概念,而是所有的紅鯡魚,。
例如,,礦工中獎的獎勵是鼓勵礦工參與的原因,但這并不是使區(qū)塊鏈成為可能的原因,。區(qū)塊是一個Merkle樹,,但它又與工作證明無關(guān),,它加密地加強(qiáng)了區(qū)塊排序的記錄。Merkle樹也使得以前的滴答“更確定”,,“更不可否認(rèn)”或更簡單,。
工作量證明也是塊體實(shí)際上不可變的機(jī)制,這是一種很好的副作用,,可以使隔離見證成為可能,,但它也可以通過保留簽名(證人)來完成,所以這也是次要的,。
結(jié)論
比特幣區(qū)塊鏈工作證明只是一個分布式的,、分散式的時鐘。
如果你理解了這個解釋,,那么你應(yīng)該更好地把握證明工作證明與權(quán)益證明Proof-of-Stake的比較,,并且很明顯這兩者不具有可比性:權(quán)益證明是關(guān)于(隨機(jī)的分布式)權(quán)限,而工作證明是一個時鐘,。
在區(qū)塊鏈的背景下,,工作證明可能是一種誤用。這個術(shù)語是Hashcash項目的遺產(chǎn) ,,它確實(shí)用于證明工作,。在區(qū)塊鏈中,卻主要是關(guān)于可驗證的花費(fèi)時間,。當(dāng)人們發(fā)現(xiàn)一個滿足難度的哈希值時,,人們發(fā)現(xiàn)它需要一定時間。完成這個時間的方法就是“工作”,,哈希是有趣的,,因為它是時間的證明。
工作證明完全是關(guān)于時間而非工作的事實(shí)也表明,,可能存在其他類似的統(tǒng)計挑戰(zhàn),,這些挑戰(zhàn)既費(fèi)時又耗力。這也可能意味著比特幣哈希率過高,,而且我們上面描述的比特幣時鐘可以在一小部分哈希率上可靠地運(yùn)行,,但哈希率是刺激能源消耗的激勵結(jié)構(gòu)。
如果找到一種方法來減少工作的耗時就會產(chǎn)生萬億美元的問題,,請讓我知道,!
免責(zé)聲明:本文來自網(wǎng)絡(luò)收錄或投稿,觀點(diǎn)僅代表作者本人,,不代表芒果財經(jīng)贊同其觀點(diǎn)或證實(shí)其描述,,版權(quán)歸原作者所有。轉(zhuǎn)載請注明出處:http://lequren.com/1106702.html
溫馨提示:投資有風(fēng)險,,入市須謹(jǐn)慎,。本資訊不作為投資理財建議。