︿
Top

比特幣的深奧起源:第二部 工作證明--挖礦

瀏覽次數:1985| 歡迎推文: facebook twitter wechat Linked

科技產業資訊室 (iKnow) - 陳歆 發表於 2019年1月9日
facebook twitter wechat twitter

陳歆

Robert H. Chen [1]
© 2018
 
第二部
工作證明--挖礦
 
默克爾樹根所涵蓋的交易在分散帳本的「認可」是交由所謂的比特幣「礦工」的「挖礦」工作來進行。即礦工所使用的「安全雜湊演算程式-256」(SHA-256)雜湊函數是以一直叠代迭代來求得一個等於或少於比特幣網通則所宣佈而每兩週會被修改的一個「目標雜湊」。成功求得相符目標雜湊的礦工則是將滿載一百萬位元組的區塊之「區塊頭條代號」、雜湊字母數字字符、已經被認可的前段區塊(即「母區塊」)的雜湊字符、時間戳章、比特幣網所估計之求得雜湊的困難度、默克爾樹根、以及一直被增值而迭代的「只一次使用的數字」(nonce)的區塊上宣佈,而合格的區塊就會被聯鎖在比特幣的網路分散帳本區塊鏈上。[2]

該區塊的基本結構可由以下早年的範例參考:[3]
 
Block Header: 156897733…
Hash: 000000000043a8c0fd1d6f726790caa2a406010d19efd2780db27bdbbd93baf6
Previous block: 00000000001937917bd2caba204bb1aa530ec1de9d0f6736e5d85d96da9c8bba
Time Stamp: 2010-09-16 05:03:47
Difficulty: 712.884864
Merkle root: 8fb300e3fdb6f30a4c67233b997f99fdd518b968b9a3fd65857bfe78b2600719
Nonce: 1462756097
 
礦工所使用的SHA-256雜湊函數是以布爾運算和32-bit加法的並行運算而求得一個獨一無二的等於或少於目標雜湊之256位元隨機排列字母數字組合,即所運算出來的字符要相符目標雜湊前端零號數才算數。但由於是64位元組之16隨機字母數字的組合,只有1664排列中之一可以相符目標雜湊字符。即雖然可以按照叠代迭代親自動手運算,由此微乎其微的或然率起見,求得相符的字符是需要一直連續的繁多迭代運算,則是適合用電腦處理,尤其「圖形微處理器」(GPU)以及專用的「制定應用積體電路」(ASIC)的並行運算。[4]

迭代運算求得相符目標雜湊的零號數之後,該區塊就會按時順序聯鎖在比特幣分散帳本的整體區塊鏈,即所屬的所有交易就此被比特幣網「認可」,而交易區塊其中所有交易的比特幣數額、時間、比特幣地址等資料都會以雜湊的形式在分散帳本註冊和公佈。

比特幣的網路分散帳本故而可呈現民衆交易全透明的理想,但是因爲雜湊的數位簽名是隱蔽當事人的身份,也可確保個人隱私權。亦即,比特幣區塊鏈是形成傳統金融機構所不及之可公認且能保密之極難得的交易機制。
 

工作證明的經濟學解釋

比特幣交易如此的認可機制可由經濟學的市場供需分析,即朝氣蓬勃的比特幣網是反映一個極大的市場需求,則提供分散帳本交易服務是極具經濟價值,而取得此有價值的服務者應該願意回饋相同價值的金錢、時間、勞力、腦力、能源等可總稱「經濟工作」的經濟資源。但不同於銀行或金融機構的服務,比特幣的交易服務原則上是免費,而一般人不會願意無償為他人的交易做認可的工作,所以比特幣網是提供比特幣獎金來引誘礦工的挖礦工作,而擬加快交易認可者亦可附加礦工可收取的「比特幣交易費」,二者就可承兌交易服務應該收取的報酬。[5]

挖礦的工作則會花費經濟資源,即求得符合目標雜湊字符所需的演算設備、時間、勞力、腦力、電費等等,也就是將原為虛擬貨幣的交易服務成本歸附資本主義金錢為媒介之傳統「生産要素」經濟論述。故比特幣交易服務的經濟價值是在於比特幣挖礦的「工作證明」,即經濟資源花費的證明。[6]

工作證明如此是帶給比特幣交易服務一個具體的經濟意義,而因爲全球民衆可參與比特幣交易並賺取和交換比特幣,且人人又可參加認可的運算遊戲而贏得可觀的比特幣獎金和交易費,而確實有許多人願意以「工作證明」來認可他人的交易。參與的民衆於是就有維護網路分散帳本之正當性的誘因,即比特幣網的分散帳本運作如此就是具有參與者的「共識」(consensus),而該共識就是取代金錢而確保比特幣交易體系的公信力。
 

工作證明的理論物理詮釋

依據電腦科學的「FLP論述」,任何分散系統不免會有缺陷,譬如在一個群體機器序列中,一台機器的故障會妨礙整體機器群的正常運作,但同步運作的機器系統只要等到下一步的同步就可以偵察到故障的機台而修正系統的運作。然而,非同步運作的機器群因爲沒有同步的下一步,就要一直等到無限的時間才知道該故障的機器是否在運轉,即理論上不可能有一個演算程式能確保非同步分散系統的全然可靠度性。[7]

經由網際網路而聯接的比特幣網個人電腦機群本性就是一個非同步的系統,則因爲網路原本就沒有控制聯接電腦的中央機構,非同步的分散帳本運作原則上就沒有偵察缺陷的機制。
著名史丹佛大學教授張首晟曾從理論物理的觀點分析分散帳本的區塊鏈工作證明認可機制,即任何「分散」的系統之「熵」(entropy)必定會比「有序」的系統高,而由於只有被工作證明而認可的交易區塊可聯鎖在整體區塊鏈上,比特幣的挖礦工作是正在以「物理工作」(work)治理整體比特幣網中的波折。即工作證明就是增加區塊鏈的有序度,則如此就是在降低系統的熵,而順遂防禦譬如「兼得」和「51%」攻擊的分散帳本缺陷。[8]

因爲任何自然進程會加劇分散而增加系統的熵,依照能量守恆定律,工作證明是需要耗費能量才能降低熵,礦工求得目標雜湊的前端零號數運算工作也就是會耗費演算設備、時間、勞力、腦力、電力等等能源的成本,而這就是減少熵的物理兼經濟工作代價。[9]

尤其進行個人或商業性的交易者都會贊同比較有序的交易系統,低熵而較無缺陷的分散帳本應該是比特幣網友的共識,而因爲人人會認知物理和經濟工作的價值,工作證明如此就是增強分散帳本的公信力。

比特幣的價值是基於民衆共存共榮之權力和權利分享,而非中央控制的金融機構和少數金主弱肉強食的惡作,即確實可稱得上一個純民主而富足理想的新金融體制。
 

不動如山的區塊鏈

然而,先人之理想很容易遭遇後人的濫用,即金融全民主化的比特幣網不得不防禦不肖人士的攻擊和敲詐。但是,工作證明的機制不只是賦予比特幣交易經濟價值,其正常的運作程序亦可維護分散帳本的公信力。

即區塊鏈中的任何交易資料的不當竄改會改變該交易的雜湊字符,而改變的交易與另一交易的雜湊也會改變,則所有被雜湊的交易對一直到默克爾樹根的雜湊字符都會變。亦即,任何改變會促使默克爾樹根中的所有雜湊字符之更改,則區塊鏈之竄改是需要重頭進行挖礦的工作證明而修改所有被分散到全比特幣網的每一人的分散帳本。有人曾估計此無望的努力會耗費幾十億美元的運算電源,即是全然不符成本/經濟效益原則。

比特幣的分散帳本如此就是借重不動如山的區塊鏈而達成任何銀行或金融機構所不及的穩定性。

因爲比特幣網的每一交易會記錄當事人比特幣錢包中的比特幣餘額,比特幣網會攔住超額的交易,但是因爲不像鈔票用一次就沒了,且各個比特幣單元本身又沒有代號,而比特幣的交易沒有如銀行的支票、提款卡、信用卡、或移動支付的交易記錄,比特幣則有重復使用的可能。

譬如能直接聯繫另一節點之「賽跑攻擊者」可先傳送一個沒有被認可的交易之一筆比特幣款項來購買某產品,則收到產品之後,在比特幣網廣播該交易並沒有被認可,因而該比特幣款項不會被傳送,而賽跑攻擊者就可騙取免費的產品。當然,如此簡單的敲詐手法應該很容易查出端倪,則不能多用。[10]

所謂的「二者不可兼得的花費攻擊」是利用比特幣網通則之「最長的區塊鏈必須優先認可」的規定,則不肖的礦工可先傳送一筆比特幣款項給自己的另一比特幣錢包,而嗣後以同額的比特幣購買某產品。即「自圓」的交易會在購買的交易之前,則會被聯鎖在一條較長的區塊鏈而優先被認可。涵蓋購買交易的區塊則會被「分叉」(fork)到後來組成而因此比較短的區塊鏈,則會被認可在自圓的交易之後。「兼得攻擊者」如此可魚與熊掌兼得產品而他所「支付」的比特幣款項。[11]

然而,雖然看似可行,由於任何礦工可隨意搜集比特幣地址的交易對,初步的挖礦工作本性係屬分散且隨機,所以第二個交易仍然有趕上第一個交易的可能。「兼得攻擊者」於是若要確保自圓的交易一定會在購買交易之前並被聯鎖在一條較長的區塊鏈上,則購買交易會爾後被分叉到另一條較短的區塊鏈,他總需要監管當時其他的比特幣交易地址而下功夫作必要的調整。但是,他雖然在盡全力安排各相關區塊鏈,則耗費了不少的工作成本,因爲挖礦是無中央控制機制,即各個礦工都是自主而挖礦,兼得攻擊者卻不一定能如願以償地排好相關的區塊鏈,即「兼得」的攻擊是極可能有得不償失之虞。

何況,屢次的自圓交易和相關同額的比特幣款項傳送會在分散帳本留下痕跡,而敲詐的事件被比特幣網友查出而廣播之後,兼得攻擊者會被開除,而他雖然可加持新的私鑰匙和錢包而捲土重來,他的作案手法應可被比特幣網友認出而再一次被開除。

分散帳本的全透明化運作於是可賦予全比特幣民衆監督的權力,而如此是增強比特幣網的公信力。[12]

不過,工作證明和比特幣網全透明的運作恐怕是無法有效地監理將來會遍佈社會之5G物聯網之「快支付」和「機器對機器」交易,即較爲「世故」的防範未然有必要,而如何防範正是電腦科學研究的熱門課題。[13]
 

比特幣逐漸且均勻的發行

認可交易區塊的工作證明雖然是有一定程度的困難,且會耗費相當多的經濟資源,因爲第一位勝任的人可賺取可觀的比特幣獎金及交易費,許多人會自願參加求得比特幣交易區塊目標雜湊的運算比賽,而恰好這些礦工的挖礦作業原則上可促使比特幣逐漸的發行和均勻的分散。[14]

交易區塊的認可運算稱之為「挖礦」是因爲比特幣可比喻隱藏在地球地幔的黃金,即維持黃金價值的是其有限的天然量,黃金也必須被挖出才能作交易的基礎媒介。然而,黃金主要是被少數大的礦廠挖掘,而受少數國家中央銀行的保存和控管,爾後被用來做由黃金或其衍生的貨幣所支撐的各種金融活動,譬如抵押貸款銀行的次級房貸。

比特幣則是隱藏在比特幣網的伺服器記憶體,而以維持價值,比特幣的量是由人爲限定於兩千一百萬位元整。比特幣與黃金同樣地要被挖出才能作交易的媒介,但是不同於黃金,比特幣是由網際網路民衆挖掘而透過比特幣網依照比特幣的供需而自行分散,即比特幣是由人民而非中央銀行或任何金融機構分散到社會大衆。[15]

爲了避免大量的比特幣一時被挖出而集中在少數金主或他們所指定的機構之手裡,比特幣網會增加求得目標雜湊的困難度,加上比特幣挖礦獎金定期的調降,整體會維持工作證明每一交易區塊被聯鎖在區塊鏈平均需要十分鐘的標準進度。如此的微調機制就可確保比特幣之逐漸發行,而且由於網際網路本身就是毫無核心機制或中央權力機構,比特幣網的分散工作證明機制則可確保比特幣極均勻的散佈。[16]

促進比特幣挖掘的礦工獎金,從2009年的50比特幣已減少到2017年迄今的12.5比特幣。於2017年底,一位元的比特幣可兌換近兩萬美元,然而於2018年初,就陡然降到迄今的約六千美元,但儘管比特幣匯率如此的動蕩,挖礦的獎金向來是足以引誘各方的礦工,且推動比特幣挖礦的規模系統化。

但是,愈高效率和大規模的挖礦會促使過快的比特幣發行,故以維持逐漸的發行,比特幣網通則是設定一個原則,即挖礦的技術愈進步而促使愈快的工作證明進度,求得目標雜湊的困難度要跟隨成正比,即目標雜湊字符的前端零號數會增加。

為減緩愈來愈少仍未被挖掘的比特幣挖出,比特幣通則是規定工作證明的獎金要每四年減一半,再加上目標雜湊愈來愈多之前段零號數,預估到2140年比特幣會被挖光,則之後比特幣交易會多採用比特幣交易費來促使比特幣的分散和循環。

不知從比特幣免費交易的基本原則而改成付費的制度會不會影響比特幣的發展?但是一百多年之後的世界,又會是如何的情景也很難說。(5120字;圖1)
 
第二部之三完
 

[1] 筆者(robgaoxiong@gmail.com)曾在美國矽谷做科學研究及任職舊金山律師事務所科技顧問,在台灣曾在宏碁電腦、國際通商法律事務所(Baker & McKenzie)、台積電、奇美電子、日月光,財團法人資策會和工業技術研究院的專案顧問、以及國立台灣、清華、和交通大學兼任教授。學歷是密歇根大學空間物理學博士、史丹佛大學電機系後博士、加州大學柏克萊法學院法學博士,美國加州執業律師、美國專利暨商標局註冊律師。著作包括Einstein’s Relativity, the Special and General Theories, McGraw-Hill (2016)、Liquid Crystal Displays, Fundamental Physics & Technology, Wiley (2011)、Made in Taiwan, the Story of Acer Computers, McGraw-Hill (1997)、《英美契約法》元照出版公司2015年、《美國專利訴訟關鍵案例解讀》元照出版公司2012年、《晶理法,液晶、理工、法律》元照出版公司2010年,以及數件相關物理的學術文獻和智慧財產權法的文獻。

[2] 「認可」(validation)、「目標雜湊」(target hash)、「安全雜湊演算程式-256」(Secure Hash Algorithm-256)。

[3] 合格的區塊是至少涵蓋「區塊頭條代號」(Block Header)、默克爾樹根的雜湊、正前的母區塊雜湊(Previous Hash)、時間戳章(Time Stamp)、目標雜湊揭開的困難度(Difficulty)、及所要用之目前爲止的「只一次使用的數字」(number used just once,簡稱「nonce」)。「前端的零號數」(leading zeros)。範例取材於Karame, G.O. et al., iacr.org/2012/248/pdf。

[4] 「布爾運算」(Boolean operations)、「礦工」(miners)、「圖形微處理器」(Graphics Processing Unit)、「制定應用積體電路」(Application Specific Integrated Circuit。參考Ken Shiriff Blog之親自動手運算就可知如何執行挖礦的叠代迭代運算。臺灣稱「parallel processing」為「平行」或「併行」,但筆者認爲「並行」比較恰當,即「並」字有兩條平行線及如輸入箭頭的兩丿以及「同時加上」的意函,而沒有「人」在操作。

[5] 「比特幣交易費」(bitcoin transaction fees)。

[6] 「工作證明」(proof of work,簡稱「POW」)、「生産要素」(factors of production)。「工作證明」(Proof of Work,簡稱「POW」)的理念原是為防範所謂的「阻斷服務攻擊」(Denial of Service Attack),即一時上網站之大量機器帳戶(bots)所造成的網站當機,而其防範未燃是要求真人用戶親手輸入代號的「工作」才能達通,譬如提供的圖案中的幾個字母。

[7] 「FLP結果」(Fischer, Lynch, Paterson)的「FLP不可能定理」(FLP impossibility),Fischer et al. Journal of the Association for Machine Computing, Vol. 32, No. 2, April 1985。同步運作(synchronous)、非同步運作(asynchronous)。

[8] 「分散」(distributed or disordered)、「有序」(ordered)。有關「兼得」和「51%」攻擊,參考本文以下第三部的解釋。

[9] 參考Shoucheng Zhang, “Quantum Computing, AI, and Blockchain; the Future of IT”, Talks at Google. YouTube, June 6, 2018。物理學界公認為即將獲得諾貝爾物理獎,則一代天才的張首晟教授於2018年十二月一日不幸由於「憂鬱症」輕生。

[10] 「二者不可兼得的花費攻擊」(double-spending attack)、「賽跑攻擊」(race attack)。

[11] 「分叉」(fork)。

[12] 第二個交易趕上第一個交易的或然率可由或然率數學演算,參考中本哲史的白皮書。兼得攻擊者若能在自己所建造的區塊置放自圓及購買的交易地址,就可擺弄區塊鏈的分叉程序,即所謂的Finney Attack和Alternative History Attack。

[13] 「快支付」(fast-pay)。參考譬如Karame, G.O. et al., iacr.org/2012/248/pdf和Medium.com/DxChainGlobal。

[14] 「挖礦」(mining)。

[15] 「去中央化」(decentralized)。

[16] 比特幣的交易速度比較慢,即平均每秒有三個被認可的交易次,而目前Visa的交易速度是每秒3674交易次。

 
歡迎來粉絲團按讚!
--------------------------------------------------------------------------------------------------------------------------------------------
【聲明】
1.科技產業資訊室刊載此文不代表同意其說法或描述,僅為提供更多訊息,也不構成任何投資建議。
2.著作權所有,非經本網站書面授權同意不得將本文以任何形式修改、複製、儲存、傳播或轉載,本中心保留一切法律追訴權利。