不知道最近有沒有人遇到點進某個網站後CPU用量突然飆高的情況,對比特幣有所了解但是對其他加密貨幣不熟悉的人第一反應可能會跟我一樣,當下就在想挖礦不是有專用礦機嗎?瀏覽器挖礦的效率跟礦機應該天差地遠吧,了解後才發現其實不然。還記得我們在比特幣論文中提到的POW,也就是挖礦,他的核心概念並不是特定指哪個演算法,POW的重點在於給出一個很難計算的問題,可是問題卻很容易驗證答案,以此來讓使用者必須花費成本。
所以疑問就得到解答了,找一個適合CPU架構計算但卻不適合目前挖礦專用礦機計算的問題做POW即可。
CryptoNote是一種延續比特幣精神並從技術上改進的一類加密貨幣,具有交易無法被追蹤、POW演算法更適合CPU挖礦等等特性。
其中的POW演算法大致運作流程如下:
(圖源參考自[1])
重點在於其中使用的AES加密演算法與64bits乘法都正好是計算量大且現代CPU有特別優化的指令,且其運作過程中會去參考到一個約2MB的Lookup Table,也剛好是現代CPU每個核心的L3 cache可以容納的大小,而每次計算需要的Lookup Table又都不同,特別設計的ASIC礦機架構反而不適合進行這種運作。
雖然這種演算法設計可以讓大量購買專用礦機的人無法壟斷挖礦收益,算力也不至於集中在少數人手上導致不夠去中心化,不過相對也造成在瀏覽器偷塞程式挖礦有利可圖的狀況,甚至可能會導致某些網站不放廣告反而用偷挖礦的方式獲取收益。
因為筆者今天打文章時用的網路好像把這類利用瀏覽器挖礦的網站檔掉了,加上google也能查到幾篇介紹實際操作不錯的文章,所以這方面的中文資訊就挑一篇寫的好的直接列給大家當參考,偷挖礦網站大多也是用一樣的形式運作。
Coinhive 網頁JavaScript 挖礦程式使用教學
如果不想讓被偷挖礦網站綁架,可以參考這類的瀏覽器套件,或是直接將常見的幾個挖礦網站網址擋掉。
[1]https://da-data.blogspot.tw/2014/08/minting-money-with-monero-and-cpu.html