此文同步刊載於喀報
根據 Torrent Freak 報導,知名 BitTorrent 網站海盜灣(The Pirate Bay)利用使用者停留在網頁上時,悄悄地讓他們的電腦進行挖礦,以賺取數位貨幣。這種行為的原理是什麼?一般人該怎麼防範?本文將從數位貨幣之母比特幣與其核心 — — 區塊鏈開始,帶領讀者一起了解電腦挖礦與海盜灣事件的相關技術。
比特幣 點對點交易的數位貨幣系統
「比特幣讓人們第一次可以在網路上交易身家財產,而且是安全的,沒有人可以挑戰其合法性。」- Marc Andreessen(Netscape創辦人)
中本聰,比特幣系統創造者,其真實身份到目前未定論。他在 2008 年發表了論文〈比特幣:P2P的數位貨幣系統〉中提到,比特幣系統是一個點對點的電子支付系統,讓雙方能直接交易。相較於傳統的電子支付需仰賴金融機構作為第三方,要經過雙方提供許多額外的個人資料以作為信任基礎;比特幣系統用電腦(節點)間的共識決取代第三方的監管,能讓交易更多元化,達到最高的經濟效益。
比特幣是一種數位貨幣,數位貨幣的功能就像是現實世界的實體貨幣一樣,能夠用來交換物品以產生價值,現今一塊比特幣市值大概相當於 11 萬新台幣。
區塊鏈 比特幣系統中心概念
比特幣系統是最先被實作出來的區塊鏈應用。在這個區塊鏈系統中,有一本帳本(ledger),儲存所有參與者的交易記錄。帳本擁有無數個副本,散佈於系統網路上的每一個節點,讓每一筆帳都能透明、低耗能又安全地被記錄下來,這也是區塊鏈的正式名稱「分散式帳本技術」的命名原因。這項技術去中心化(Decentralization)和資訊公開的特點 — — 加上為一個開源專案,人人皆能取得原始碼而創造新的區塊鏈,讓它應用極為廣泛,並迅速在各個行業中發展。
2015 年 10 月,區塊鏈純商業性質平台 Ujo Music 成立。此平台讓音樂創作者在區塊鏈上登記自己的音樂以及管理自己的版權,閱聽人能夠從平台上購買音樂,音樂創作者從而獲得收益,不受第三方經紀公司的控制。閱聽人向Ujo 發出購買訊息,從電子錢包轉出數位貨幣。此時,去中心化的系統會公告在線用戶(節點)徵求「檢驗員」,檢視雙方交易的合法性、過去交易紀錄等。最快完成的「檢驗員」在取得其他節點的共識後,決定交易是否成功。成功以後,系統自動把數位貨幣依比例分配,「檢驗員」從中收到報酬。交易結束後,音樂創作者就會寄出歌曲存放位置供買家下載,買家會收到隨機發送一組亂數當作交易代碼,透過代碼取得音樂。交易中間,不需要是Ujo會員,也不需要手續費。
電腦挖礦 驗證區塊鏈交易的礦工
前文所提 Ujo Music 例子中的「檢驗員」,事實上就相當於電腦挖礦中的礦工。
挖礦,是一個比喻。在網路上,系統使用特定函數設計複雜的數學難題,讓候選區塊(candidate block)的礦工運用自身資源運算出答案。得出答案後,告知其他參與的解題者,由他們驗證是否正確。驗證後,便會成為鏈上的最新區塊,而區塊鏈也會給予礦工回饋金(數位貨幣);回饋金是一種獎勵機制,以推動礦工去建立更多節點,同時也促使礦工貢獻計算資源來幫助區塊鏈的運作及安全。挖礦事實上是對區塊鏈及礦工雙方均有利的機制。
中本聰依現實世界中採礦的概念:愈到後期金礦愈少,挖到的難度愈高 — — 愈多礦工投入,解題的困難度將會節節高升,報酬將會愈低。由於難度的上升,運算資源少的礦工幾乎不可能獨自解題,於是礦工們組織礦池一起合作,以增加成功解題的機率。得到的報酬將就各個礦工的貢獻程度依比例分配,並從各個礦工報酬中抽取些微報酬以維護礦池,使礦工們驗證的候選區塊能夠放到鏈上成為正式區塊。
為追求更快的挖礦速度,礦工們的硬體也要隨之提升。以比特幣來說,硬體從最初的 CPU(中央處理器)、GPU(顯示卡)、FPGA(可程式化邏輯閘陣列),到後來甚至出現專門用於挖礦的ASIC(客製化晶片),ASIC 挖礦速度約為顯卡的百倍以上。然而有些幣種的演算法屬於 Anti-ASIC,廠商難以設計出相對應的 ASIC 來進行運算。其目的是避免大量算力集中在少數人手中,維持去中心化的主旨,保護區塊鏈安全。
Pirate Bay 讓用戶成為礦工
根據 Torrent Freak 報導,著名 BT 網站海盜灣在未告知用戶的情況下,在網站嵌入挖礦程式,使得使用者在瀏覽頁面時,電腦的 CPU 將協助進行門羅貨幣(Monero)的挖礦。現今一塊門羅幣市值約為 2600 新台幣,採取一種Anti-ASIC 的演算法,特色為匿名交易,隱匿性極高。事發後,海盜灣向大眾坦承,他們計畫利用這種方式來獲得收益,希望最終能夠取代傳統廣告投放。
海盜灣所嵌入的挖礦程式,由為一個德國的圖床網站所開發。鑒於現今使用者多用 AdBlock 等廣告阻擋工具來阻擋廣告,導致網頁廣告收益銳減,造成網站財務困難,於是才決定開啟了這項實驗性的 Coinhive 專案,讓嵌入挖礦程式的網站藉由使用者的電腦進行電腦挖礦。網站獲得收益的同時,專案方也從中抽取約30%的收益來維持服務運作。此專案核心的挖礦程式利用 WebAssembly 技術大幅提升瀏覽器高強度運算的效率,再透過服務提供的應用程式介面(API),讓人們能輕鬆透過瀏覽器用 CPU 挖門羅幣。海盜灣正是透過這樣的方式,暗地地讓使用者幫他挖礦而獲利。
但事實上,Coinhive 服務早已被普遍利用,甚至有些瀏覽器的附加元件(Add-On)皆有使用 Coinhive 服務,以進行獲利。
在海盜灣事件發生後幾天,門羅幣台灣正體中文站(Monero-Taiwan)發出了公告,告知網站使用者將透過 Coinhive 在使用者的電腦進行挖礦。網站在公告中明確說明,主要是想透過這樣的方式維持社群與網站的運作。同時也公開原始碼,說明可能的風險,並教導使用者如何停止此項服務。相較於海盜灣事件,Monero-Taiwan 明確告知使用者,網站將透過使用者進行電腦挖礦以維持運作,讓使用者能選擇是否同意此做法。海盜灣未事先告知不僅傷害網站信譽,也有道德上的疑慮。
使用者未來必須更加小心是否有網站或瀏覽器附加元件在未知會的情況下利用使用者的電腦進行挖礦。而判斷的方法很簡單,檢查電腦 CPU 使用率有無特別升高即可。