【Blockchain 入門】區塊鏈裡挖礦的小礦工們

作者:Angelina H. Huang

區塊鏈技術廣大博深,本篇文章將介紹區塊鏈背後礦工(網民)的操作及其如何透過線上交易獲利。

上篇故事已經說明打包交易紀錄造區塊的步驟,這次要來聊聊執行這浩大工程背後辛苦揮汗(繳電費)的礦工們。

礦工究竟是誰?其實礦工就存在你我之中!還記得區塊鏈是將資料存在分散的節點上嗎?每個節點可代表一台電腦或伺服器,而這電腦前都有一個宅宅…不!是志向偉大的網民在操作,這些網民就是我們的礦工!

礦工的主要任務有三項

  1. 打包交易紀錄造區塊
  2. 將區塊傳給其他節點驗證
  3. 節點們確認該區塊無誤,將區塊上鏈

在繼續解釋礦工的任務前,我們需要先了解造區塊之前發生的事,才能解釋為何礦工在區塊鏈扮演這麼重要的角色。

甘道夫(左)的電子帳戶地址 A 要匯 1000 枚比特幣給勒苟拉斯(右)的電子帳戶地址 B

當灰袍巫師甘道夫要匯 1000 枚比特幣給精靈勒苟拉斯時,他在電子帳戶地址(由數字與英文字母組成的一組隨機序號)輸入這筆交易,電子帳戶地址會產生一對公鑰(Public Key)和私鑰(Private Key),公鑰如同你的 Email 帳號,大家都可以在公開網路找到你的 Email,但私鑰就是你的 Email 登入密碼,只能自己知道。

公、私鑰的區別

公鑰的功能是解鎖,私鑰則像幫這筆交易上鎖和簽上專屬的數位簽章。甘道夫把他匯錢的交易用私鑰上鎖並封上自己的數位簽章,接著在區塊鏈上廣播這個交易的消息,此時,該筆交易會先進入區塊鏈上的「待確認交易區」,等待礦工取走驗證。通常附上的手續費越高,越快被礦工挑走打包。

換個角度看,公鑰代表資產所有權的「確認」,而私鑰則是資產的「支配」權。擁有私鑰的主人可以支配這個帳戶下的錢要轉去哪裡,公鑰則無法,只能確認這個帳戶的主人是誰,但是區塊鏈只認私鑰不認人,因此私鑰務必保管好!

礦工通常會希望一個區塊裝進越多筆交易越好,因為打造一塊區塊和上鏈要價不斐,耗時又耗電,不過在比特幣區塊鏈上,一個區塊的容量上限是 1 MB,而且礦工不是每筆都會挑進他的區塊,會優先挑出手續費較高的交易,因為可以賺進比較多錢。礦工也有自己的挑選程式來找尋報酬率較高的交易,但挑選交易並不是先搶先贏,每位礦工都可以挑同一筆交易進他的區塊,真正先搶先贏的時機則在後面上鏈的時候。

假設礦工矮人金靂挑了甘道夫這筆交易,他會用甘道夫的公鑰去核對交易,驗證是否真的來自甘道夫本人的指令,而不是駭客半獸人的假訊息。由私鑰上鎖的加密交易內容,可用公鑰來還原,但你可能會有疑問,如果我交易內容都被人看光光了,不就沒有隱匿性?這就要提到區塊鏈的特性之一:匿名性,後來也成為監管機構擔憂之處。

在比特幣區塊鏈上的交易都是匿名的,有的只有匯出的電子帳戶位址 A 和匯入的電子帳戶位址 B,所以甘道夫與勒苟拉斯的交易在區塊鏈上只看的到 A 轉帳給 B,A 和 B 背後的藏鏡人是誰,除了本人以外,大家都不會知道。

駭客半獸人的攻擊

由於一對私鑰和公鑰是由數學式算出相對應的鑰匙,公鑰 A 只能打開私鑰 A 上鎖的文件,如此一來,礦工就可以確認這筆資料是來自電子帳戶A(甘道夫)。接著,礦工確認甘道夫過去的交易紀錄,他的帳戶結餘是否足夠支付要匯出的 1000 枚比特幣。

礦工收到交易廣播後會確認:

  1. 該筆交易是否來自帳號 A 本人傳輸的
  2. 帳號 A 的餘額是否有足夠的錢

礦工驗證該筆交易是否來自帳號 A 本人傳輸的,還是來自駭客半獸人的攻擊

兩道步驟確認完後,礦工便把這筆交易放入準備打包的區塊內,下一步開始造區塊,也就是開始挖礦囉!挖礦過程類似解數學謎題,還記得上一篇區塊與鏈的故事裡,有一塊黑的令人看不透的 Nonce 和遊戲規則 Difficulty 嗎?就是 Hash Function 加密步驟,礦工拿區塊鏈上最後一個區塊的 Hash 值加上新交易資料,然後要猜 Nonce 是什麼,讓產生出來的新 Hash 值小於/等於 Difficulty,因此所謂「挖礦」,就是挖出這個 Nonce 到底是多少的過程。

新 Hash值(新區塊)5 = 前Hash值(上一個區塊)1 + 新交易資料2 + Nonce(加密)3 ≤ Difficulty(遊戲規則)4

Nonce 是一個不斷改變的隨機數,加入密碼學 SHA-256 運算,最後算出以 0 為開頭(又稱為前導零)的 Hash 值,如果這個 Hash 值符合 Difficulty,就代表成功解出 Nonce。如果不符合 Difficulty 要求,則通過遞增 Nonce 的值,重新運算。一個符合 Difficulty 的 Hash 值是由 N 個前導零構成的,而幾個零就取決於當時區塊鏈網絡中的 Difficulty,前導零的數目越多,就代表越難。

最新比特幣區塊Hash值

根據最新比特幣區塊(截至2018–11–20 06:54:09),目前 Hash 值有 18 個前導零,理論上需要嘗試 62 的 18 次方次才能解出 [註1],礦工需要投入大量的運算設備、電力,才能產生如此龐大的運算量來猜到這個 Nonce。

Difficulty 的目的除了確保加密的安全性外,也為了控制新區塊產生的速度,目前比特幣區塊鏈是控制在每 10 分鐘產生一塊,如果新區塊生成速度變快,區塊鏈就會提高 Dicculty,增加挖礦難度,讓速度趨緩,反之亦然。

這整個過程就是「工作量驗證」(Proof-of-work, POW),誰工作效率最好,誰就是贏家。在比特幣區塊鏈上,需要使用 CPU 的運算能力 [註2],不斷的猜 Nonce、不停的算 Hash 值,而算力非常依賴電力 [註3]。大家可能聽過學生在學校宿舍偷挖礦,讓宿舍電費暴漲的新聞吧!根據數位貨幣網站「Digiconomist」資料,比特幣每筆交易使用的電力為 944 千瓦小時(KWh),相當於台灣小家庭三個月的用電量 [註4]。

比特幣區塊鏈只有一條,如何決定誰可以接上下一塊區塊?此時來到緊張刺激的時刻了,要能夠上鏈,除了猜對 Nonce 外,還要比誰最快解出 Nonce,因此可以說是誰的算力最強,誰越有機會最快解出 Nonce!這個規則衍生出礦池、礦場,以及 51% 算力的雙花攻擊等議題,我們後續再一一述說。

看完以上 Nonce 和 Difficulty 的介紹有沒有覺得頭很暈?看不懂也沒關係,主要想讓讀者感受一下,挖礦真的是很耗能源的網路活動。

第一名的礦工成功解出 Nonce 後,假設是我們的礦工矮人金靂,他會把這個成功的區塊廣播給區塊鏈上其他節點的礦工檢查,確認該區塊是否真的是最快的,且符合 Difficulty 的規則。確認無誤後,多數礦工便同意和承認這個區塊可以上鏈,這個過程就是「共識決」(Consensus),並把這個消息再次廣播給其他節點,而金靂除了獲得手續費外,還可以得到比特幣區塊鏈的挖礦獎勵。

礦工賺什麼?

  1. 交易的手續費:使用者付費,由交易發起人(甘道夫的帳號A)支付,預設是฿ 0.00001/KB,但可自行加價,如同急件要付比較貴的費用。
  2. 區塊鏈的獎勵:現在每一筆成功上鏈的區塊可獲得 12.5 枚比特幣 [註5]。

一「工」歡樂幾「工」愁,那沒搶贏上鏈的礦工怎麼辦?其實也不能怎麼辦,當其他也在挖礦的礦工們,收到礦工共識的新區塊廣播後,只能丟下原本的區塊,重新回到「待確認交易區」挑選新交易打包,繼續搶挖下一塊區塊。原本解密到一半所耗費的算力和衍生的電費也就這樣付之一炬了,其實真的滿浪費能源的。

最後我們再重整一下礦工在區塊鏈的任務運作:

打包交易→打造密碼區塊→區塊上鏈

礦工的任務看似可簡單分成三個階段,但每個階段消耗的算力/電力是肉眼看不到的(只有看到電費帳單的當下會有深刻的感觸),可是區塊鏈技術的應用不只如此,也不應只有如此,它的去中心化乃至分散式儲存的概念,反而有助於達到節省能源,將算力和儲存空間的存取發揮到最大價值,我們將在下一篇故事介紹區塊鏈文章中常被省略,因為也比較複雜,但其實很重要的默克爾樹(Merkle’s Tree),這棵樹也是未來取代 HTTP 的 IPFS 星際檔案系統中,很重要的底層技術之一。

默克爾樹(Merkle’s Tree)是未來取代 HTTP 的 IPFS 星際檔案系統中,很重要的底層技術之一(圖片來源:Merkletrees

區塊鏈的礦工運作

註解

註 1:區塊鏈 Blockchain — 共識機制之工作量證明 Proof-Of-Work

註 2:隨著炒幣熱潮,礦工升級工具到 GPU 圖形處理器/顯卡、FPGA,速度更快、算力更強,更因應市場需求而有 ASIC 專業礦機的誕生,其組成的礦池可集結龐大的算力。比特幣區塊鏈中以中國的比特大陸(Bitmain)和澳洲的澳本聰為首,最近的幣圈大事,就是兩大礦主為了比特幣現金(BCH)的硬分叉正式掀起算力大戰。這樣算力集中的狀況,其實也違反了區塊鏈去中心化的精神,演變成誰的算力大、誰說話的局面。

註 3:在家設立挖礦場實際嗎?比特幣值多少錢挖礦才划算?

註 4:吃電巨獸!比特幣每筆交易耗電 台灣家庭可用3個月

註 5:比特幣總額限制為 2,100 萬個比特幣,每創造出 21 萬個區塊,礦工獲得的比特幣獎勵就會減半。最近一次減半發生於 2016 年 7 月,此後挖出一個區塊僅能獲得 12.5 枚比特幣獎勵。

(本文經作者同意轉載自 Flowchain Foundation原文連結;責任編輯:葉于甄)

Flowchain Taiwan

Flowchain基金會專為P2P物聯網和即時數據交易提供分散式帳本技術,結合區塊鏈和IPFS星際檔案系統的底層技術,推出數位資產 Flowchain Coin(FLC) 打造算力與存儲共享的生態系,提供AI和IOT產業能源困境的解決方案。
Flowchain Taiwan

Author: Flowchain Taiwan

Flowchain基金會專為P2P物聯網和即時數據交易提供分散式帳本技術,結合區塊鏈和IPFS星際檔案系統的底層技術,推出數位資產 Flowchain Coin(FLC) 打造算力與存儲共享的生態系,提供AI和IOT產業能源困境的解決方案。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *