【出賣眼球的下一步是出租CPU運算力】挖礦如何成為一門新生意,瀏覽器挖礦原理大剖析



熱門挖礦換貼圖遊戲App開發者黃士晉指出,以前是搶注意力,現在是搶CPU的計算時間,除了網路廣告,瀏覽器挖礦可以讓網站獲利模式多一個選擇(攝影/何維涓)。

知名海盜灣網站綁架個人電腦CPU資源來挖礦的事件,打開了瀏覽器挖礦的大門,甚至開始吸引不少網站主,開始思考,如何將加密貨幣的挖礦行為,變成新型態的商業模式。其實,這不是一個新概念,早在5年前,在瀏覽器上跑JavaScript挖礦程式的點子就已經出現了。

「2011年的瀏覽器挖礦,跟現在的概念一模一樣,只不過當時挖得是比特幣。」去年擠進Google Play商店熱門App排行榜的「挖鑽石換Line貼圖」App作者黃士晉觀察,這是一個揪眾幫忙用手機挖礦,再送Line付費貼圖的小遊戲。他也是臺灣區塊鏈社群的活躍者,一直想從虛擬貨幣挖礦行為中,來找出新的應用模式。

海盜灣事件喚起了黃士晉對瀏覽器挖礦的注意後,他開發了一個名為「挖挖」的單頁網站,除了簡單介紹,只在網頁加上了短短幾行的Coinhive挖礦JavaScript程式碼就成了一個利用挖礦獲利的網站。「當有訪客瀏覽挖挖網站時,就會介接到提供挖礦礦池的Coinhive下載挖礦程式,再用訪客的電腦CPU來挖門羅幣(Monero,代號XMR)。

黃士晉解釋,Coinhive網站就是一個虛擬貨幣的礦池,將挖礦需要的Hash雜湊值計算工作,分配給所有連上來的礦工電腦,若有電腦搶先計算出有效的區塊Hash值,先回傳到Coinhive礦池伺服器,再由Coinhive向門羅幣區塊鏈提出,驗證有效後,Coinhive就能得到獎勵,再分潤給上傳這個區塊Hash值的礦工電腦,Coinhive再進行下一次的派工,將區塊計算需要的資訊,再分派給各礦工。若Coinhive回報給門羅幣區塊鏈的Hash值無效(例如有人搶先一步完成這個區塊的計算),Coinhive就會通知各礦工電腦放棄現有計算工作,重新派工,再進行下一輪區塊的計算。

Coinhive的JavaScript挖礦程式,會透過WebSocket通道,自動串連礦工電腦上瀏覽器,將挖礦全程自動化。

為何是門羅幣?1萬倍效能差距可以縮短到35%

這次的挖礦事件,最讓大家疑惑的問題是,為什麼是門羅幣?它為什麼可以利用CPU挖礦?黃士晉指出,門羅幣的抗礦機(ASIC Resistant)特色,正是讓任何瀏覽器都有機會成為礦工的關鍵。黃士晉解釋,2014年誕生的門羅幣,最初的設計就是要開發出一款純CPU可以挖的幣,讓挖礦者必須使用CPU或GPU來計算,以提高挖礦運算的分散程度,避免算力過度集中在大型礦池。

去中心化(Decentralization)是所有加密貨幣的前提與特色,但是門羅幣的設計更是注重這一點,它所使用的演算法稱作Cryptonight,特別針對CPU架構來優化,尤其利用了CPU擅長的AES(進階加密標準)還搭配了高耗記憶體快取的設計,「門羅幣挖礦作業時,必須先載入前幾個區塊的資料來加入計算,它規定就是如此,所以,礦工電腦必須有足夠的記憶體來儲存這些資料。」一般比特幣專用挖礦機,以強化運算為主,不會搭載足夠的記憶體。

再加上,門羅幣Cryptonight演算法有另一個特性是,可以讓JavaScript挖礦程式的效能,不會輸C++語言開發的ASIC大型礦機程式太多,「尤其遠不如其他加密貨幣那樣效能差距極大。」黃士晉表示。

像Coinhive評估,用C++寫的挖礦程式,只比在瀏覽器上執行JavaScript挖礦程式的效能,多了35%而已,不像比特幣,「只靠CPU和GPU挖礦,比起現今最快的ASIC礦機,兩者算力相差了一萬倍,相當懸殊。」他解釋,原因是比特幣挖礦設計,採用SHA-256雜湊演算法,可以使用ASIC軟體輕鬆完成。因此,比特幣礦機憑著架設簡單、便宜且利潤高,導致比特幣的挖礦工作被大型礦池壟斷了。

他指出:「門羅幣採用的Cryptonight演算法,可說是一種ASIC Resistant(抗礦機)」,讓門羅幣礦機的效果變得不像比特幣礦機那樣有效率。

並非技術上無法打造出門羅幣礦機,黃士晉補充,Cryptonight演算法挖礦時,需要載入大量資料,若想實現超高速計算,就算是用DDR記憶體還不夠快,得用更高速的記憶體快取才行,這就帶來相當昂貴的記憶體成本,對礦機廠商而言,不一定能符合回收效益。甚至,「一旦門羅幣礦機真的出現了,這些幣種還可能會進行硬分岔(Hard-fork),就是要讓這些礦機無法使用。」

換句話說,正是ASIC Resistant特色的門羅幣,讓世界各地的礦工,可以在家中用電腦就能進行挖礦。這也是像Coinhive瀏覽器挖礦程式,非選擇門羅幣不可的原因。

短短兩行程式碼讓你的電腦也變成挖礦一份子

海盜灣利用JavaScript瀏覽器挖礦的概念其實並非首例,2011年的Browser Bitcoin Miner就是最早現身的瀏覽器挖礦,只不過當時挖的比特幣的難度僅是現在的百萬分之一。而此次造成熱潮的Coinhive,原本只是德國一家經營圖片農場的公司,為了想辦法替自家的網站賺錢,開啟了用瀏覽器挖門羅幣的生意。

Coinhive自成一個門羅幣的礦池節點,負責同步過去門羅幣的區塊鏈資料,利用兩行短短的程式碼將挖礦資料分散給,每一個串接的瀏覽器執行挖礦,再將結果回傳。

首先,想要透過在網頁介接Coinhive挖礦程式碼的人,要在Coinhive註冊帳號,Coinhive平臺會幫忙設定好Site Key公私鑰,只要將公鑰的部分置換到呼叫Coinhive挖礦程式的兩行程式碼中,再將這兩行短短的程式碼放置在網頁的 或 前面即可完成介接。

而當用戶開啟這個挖礦網頁時,就會從Coinhive的挖礦程式裡,建立起瀏覽器與伺服器的互動通訊技術WebSocket,這是一個雙向的通道,可即時監聽(Listen)網頁的狀態,跟Coinhive的伺服器自動連結、互相通訊。

一旦瀏覽器跟伺服器間的WebSocket通道建立後,挖礦網頁就跟Coinhive伺服器請求挖礦的區塊標頭(Block header)資料。再則,是瀏覽器開始執行挖礦程式碼,挖到後就送回給Coinhive伺服器,然後再傳送新的區塊頭資料給瀏覽器,不間斷的進行挖礦,看哪一個瀏覽器最快挖到,就回傳,並以最快的為主。點開網頁的幾秒鐘後,你就變成礦工之一,開始挖門羅幣了。

此時,網頁擁有者就可以到Coinhive後臺點選Dashboard查看挖礦的狀況與收益。只不過,利用Coinhive進行挖礦,獲利必須跟Coinhive對分,Coinhive抽取30%。剩下的70%才是歸網頁擁有者所有。

顛覆網路廣告的商業模式?從搶眼球注意力,改搶CPU演算時間

憑藉著瀏覽器挖礦的熱潮,現在也衍生出各式各樣的獲利模式,更被視為新型態的廣告模式。海盜灣事件爆發後,Coinhive在自家官網上坦承,這是他們正在測試的新廣告模式。未來,用戶可以選擇接受傳統的網頁廣告,或是選擇貢獻CPU挖礦來獲得完全無廣告的瀏覽頁面。

黃士晉架設挖挖網站,也正是要來測試這項廣告新概念,他解釋,在挖挖網站上,幫忙用瀏覽器挖礦的用戶,每計算一萬次,就可以得到一張彩票,當挖到一顆門羅幣後,黃士晉就會從中抽出一位得主,贈送0.85顆門羅幣,而黃士晉自己則保留0.15顆。他也試著從中挖出一條有別於網路廣告的另條生路。

「盜版網站、色情網站、或是直播與影片網站,最適合用這種挖礦獲利模式。」黃士晉這樣認為,尤其現在許多廣告商跟廣告主開始要求,自家廣告不能出現到違法網站中,如盜版、軟體、BT種子或色情類網站等,這類網站能接到的零星小廣告,每一次點擊(CPC)單價非常低,可能只有0.01美元,很難自給自足,「瀏覽器挖礦將會是這些盜版網站、色情網站的新選擇。」

甚至,色情網站不需透過Coinhive介接,可以自己成為礦池,就省去了30%的抽成,因為加密貨幣的匿名性,沒有人能拒絕色情網站成為節點。用戶在網站停留越久才能挖礦獲利,黃士晉認為,只要能吸引用戶長時間上站,瀏覽器挖礦一定是新選擇。「以前是搶注意力,現在是搶CPU的計算時間,除了網路廣告,瀏覽器挖礦可以讓網站獲利模式多一個選擇。」

《全文請見iThome(https://www.ithome.com.tw/news/117999)》