天天看點

BTA | 康爍:基于linux的挖礦作業系統

2018年3月30-31日,由CSDN、火星财經主辦,中關村區塊鍊産業聯盟、柏鍊教育、區塊鍊大學營、TokenSky聯合主辦的2018 區塊鍊技術及應用峰會(BTA)在北京盛大召開。本次大會聚焦區塊鍊核心技術、發展趨勢、行業應用、投資、數字資産存儲與交易、創新前沿技術等主題,來自全球 80+ 區塊鍊技術上司者、100+ 區塊鍊投資商業大咖、1000+ 區塊鍊技術開發者及行業人士共聚一堂,以一種更純粹的辦會模式開啟了一場屬于技術人的開年狂歡,攜手業界共同助力區塊鍊的技術與産業更新發展,敲響開年鍊圈技術人最強音。

伴随區塊鍊的火熱,越來越多的人加入到挖礦的浪潮中,對于普通小白該如何參與到數字貨币的挖礦事業中?不同數字貨币采用的挖礦算法和挖礦軟體都是怎樣的?個人如何選擇礦機以及其他的挖礦形式?以下是柏鍊道捷CTO、清華大學區塊鍊中心進階工程師康爍給我們帶來《基于Linux 的挖礦作業系統》,希望對你有所啟發。

康碩簡介:

康爍,柏鍊道捷CTO,清華大學區塊鍊中心進階工程師,2005年畢業于清華大學軟體學院,2013年創立北京迪捷數原科技有限公司。超過17年的系統軟體研發經驗,其中包含作業系統,編譯器,虛拟機,系統軟體的安全等領域,所開發的SkyEye嵌入式虛拟機産品應用于國内航空航天領域的衆多型号的研發測試流程中,開發的符号執行軟體android_s2e被國内的華為以及軍工機關用于軟體測試,所開發的基于LLVM的安卓虛拟機入選了2015年 LLVM開發者大會的項目展示環節。目前研究領域主要是區塊鍊的安全問題。

整理 | Guoxi

大家好,我是來自柏鍊道捷的康爍,我今天給大家分享的主題是基于linux的挖礦作業系統,着重給大家講一些挖礦背後核心的理念,也就是它的共識算法。

什麼是挖礦?



我們首先給大家介紹一下什麼是挖礦。

這裡面肯定有以前已經參與過數字貨币挖礦轉賬的朋友,他們對挖礦這個概念還是比較了解的,但是我還是想從最基本的概念去入手。挖礦是什麼樣的事情呢?其實在我們使用的紙币出現之前挖礦這件事就存在了,在紙币之前我們使用的是金子銀子作為流通貨币,它們通過挖礦被挖出來。随着紙币的出現,采用貴金屬作為流通貨币的方式逐漸地廢棄了。然後到2009年比特币出現了,在當今區塊鍊時代,我們使用的這些數字貨币是怎麼産生的呢,也是通過挖礦的形式。我們在挖數字貨币時,使用的是大量的計算機,去解決一個數學謎題,算出謎題的礦工會獲得十幾個二十幾個數字貨币作為獎勵。是以從本質上來講,我們目前的數字貨币挖礦和我們紙币之前,貴金屬作為流通貨币的挖礦,貨币的發行方式是一模一樣的,我們都把它叫做POW方式生産貨币,POW英文翻譯過來就是工作量證明。用工作量證明,你要幹活,付出一定的勞動力,付出一定的成本,才能産生貨币,是以說我覺得在本質上我們紙币之前的挖礦形式與産生數字貨币的挖礦形式是一模一樣的。

挖礦的意義

挖礦的意義在于什麼?對于礦工獲得數字貨币,獲得經濟上的補償或叫經濟上的一種收益。從數字貨币系統設計者的角度來講,挖礦主要解決兩個問題。第一個是解決了貨币發行問題,所有的數字貨币基本是要通過挖礦的形式産生。第二挖礦是為了維持交易系統的正常運作。礦工挖出一個區塊并得到數字貨币獎勵,普通使用者才能轉帳,轉帳這些交易都是被礦工驗證的。每筆交易中礦工會收一些交易費,這樣的話通過挖礦解決了貨币發行和維持交易系統這兩件事情。這就是挖礦的意義。

挖礦的發展



數字貨币挖礦經曆了這樣幾個階段,第一個階段,大概是在2009年,2010年。以比特币為例,我們可以用CPU來挖礦,當時使用筆記本就可以挖出比特币來,慢慢的人們開始轉向高性能GPU,它有幾百個核,上千個核。通過簡化挖礦算法,使其很容易去分割,GPU有幾千個核,是以它挖起礦來比CPU更加有優勢,再後來發展到FPGA挖礦,FPGA相比于GPU有什麼樣的優勢呢? GPU不是專門用來挖礦的,FPGA把所有單元都做成雜湊演算法硬體,用所有的硬體資源都去做運算,挖礦效率相對于GPU提高很多。最後發展到ASIC專業礦機。

對于挖礦的形式有這樣幾種變遷,一種是礦場一種是礦池,礦場我可以把專業礦機放在一起,選個電費非常便宜的地方,大家一起挖礦。礦池在實體上是分離的,礦工通過網際網路加入到統一的網站,這樣統一的網站可以去分割運算值的範圍,加入礦池後,理論上挖礦速度是比單個礦機要快一點的。最後發展到雲礦機,我們可能連礦機也不需要去購買,雲計算的管理平台上會根據算力挖到的礦給你報酬。

數字貨币的挖礦算法

基于POW的數字貨币挖礦算法。POW,就是我前面第一頁給大家介紹的工作量證明,基本上大部分的數字貨币,都是采用POW挖礦形式。2009年釋出的bitcoin,2011年釋出的namecoin全部使用SHA256運算。SHA256運算挖礦效率是最高的,後面采用一些挖礦算法,scrypt,Equihash都是記憶體密集型的計算,在計算中大量頻繁地通路記憶體,是以做專業的礦機并不劃算。後邊這些币采用記憶體密集型挖礦算法,比如像ETH,ETC,以及2018年新釋出的KodakCoin,可以用顯示卡去挖礦。對後邊的這種我們叫做記憶體密集型的挖礦算法,我認為個人還是可以參與的,個人買比較高端的礦機顯示卡去挖礦還是能得到一定收益的。針對比特币使用的SHA256我認為個人沒辦法去參與,這需要買很高端的顯示卡,市面上算力隻有幾個G的普通顯示卡,和最高端計算機挖礦效率對比,差距可以達到上萬倍,甚至上幾百萬倍。

挖礦取決于數字貨币的共識算法

挖礦算法取決于什麼?取決于數字貨币中的共識算法。最早我們把除比特币外的其他數字貨币,都叫做山寨貨币。山寨貨币為什麼會出現呢?很大程度上是因為它們有新的共識算法。共識算法我們現在主要是分兩類,一類是我剛才給大家介紹的POW工作量證明,付出勞動力,付出成本來獲得貨币。然後現在比較流行的或者說現在大家比較推崇的算法,叫POS,中文叫做權益證明。POS你要證明你手裡有多少個币,你就可以去投票獲得新的币。共識算法的發展趨勢有兩點,一點去中心化,第二點對環境友好。去中心化,從現有的挖礦算法,我們都可以看得出來。

之前比較早的數字貨币大部分都采用了SHA256,大多數的算力會集中在少數人手裡。後面發行大部分數字貨币,都使用的記憶體密集型的挖礦算法,都可以用顯示卡進行挖礦。我在這裡把POW挖礦分成兩類,一類是ASIC based POW,一類是GPU based POW。POS這種共識算法分成三種,Native POS,DPOS和CASPER這個未來将會被采用的POS算法。

有這麼多的共識算法,但共識算法它本身的設計理念是什麼?未來的發展趨勢又是怎樣呢?

這裡面我大概總結了這麼幾條:

第一條去中心化,這是最重要的,未來比特币很難更改挖礦算法,由于算力比較集中,礦工也很難撼動,大家做那麼多礦機的投資可能都白費了。Vitalik Buterin從最早在2014年建立以太坊的時候,就一直在考慮用POS這種共識算法,去代替以太坊現在這種共識算法。

第二點很容易了解,難于生成容易驗證,挖礦是很艱難的工作,驗證卻是非常容易的。

還有第三點就是經濟學設計,經濟學設計這一點也是以太坊的創始人Vitalik Buterin比較推崇的,這裡面有很多人在讨論共識算法,但這不僅僅隻是計算科學範疇内的事情,必須要有經濟學方面的設計。

最大化攻擊損失,為了防止有人攻擊我的數字貨币,必須讓攻擊者付出比較慘重的代價,這裡我寫了一個“殺人一千,自損八百”。

共識算法要考慮社會環境有利的因素,這裡邊我們必須要考慮能量損耗,因為現在大家都比較關注這個問題,挖數字貨币比較耗電。财富配置設定,通過挖數字貨币會造成一些财富配置設定不公的問題。

最後,共識算法要盡量的高性能,因為共識算法性能越高,達成共識就越快,每個節點打包交易就越快,進而我們的交易速度就比較快。但是對于共識算法的設計,需要非常謹慎的設計,因為之前也發生過這樣的事故。

共識算法設計得不好,一開始我就把一半的貨币甚至一半多的貨币挖完了,僅僅用了兩天時間。包括現在POS,POS這個共識算法已經提出了很長時間,包括我們以太坊的Vitalik Buterin,最早創立以太坊時就在思考怎麼用POS共識算法,共識機制,但是到目前為止還沒有使用POS。這期間POS也是經過了好多輪的疊代,也有好多人去讨論,大家可以看到共識算法是一個加密數字貨币系統的核心,是以說如何設計一個好的共識算法這個是非常重要的。

共識算法需要解決的問題

前面介紹共識算法的一些設計理念和發展趨勢,共識算法在實作層面還有幾個問題。誰來生成下一個區塊?誰能最先把這個數學謎題解出來就可以生成下一區塊。什麼時候生成下一個區塊?區塊裡面都包含哪些交易?實作的協定如何更新或者修改?算法出現問題,如何對共識算法進行更新?這個流程是什麼樣子?最後一點就是有争議的交易如何解決?這是我們共識算法在實作層面需要考慮的幾個問題。

Native POS面臨的問題

接下來介紹Native POS面臨的問題。POS大家說了很多,實質上,現有的數字貨币大部分還是采用了POW,原因是什麼?POS面臨的問題是nothing_to_stake。我給大家舉個例子,圓桌上坐了一百個人,桌子上有十份檔案,這一百個人要選擇一份檔案進行簽名,然後這一百個人簽完之後我會檢查這十份檔案,十份檔案哪份檔案上的簽名最多,我就把這份檔案叫做獲勝者,在獲勝者檔案簽名的人得到報酬和獎勵。

我們把Native POS模拟成這樣的場景,如果對于我們這種比較老實的人,我每次簽名的時候我看一下這些檔案上哪份檔案簽名最多,跟着他後面去簽那份檔案,這樣等一百人簽完我很容易得到簽名最多的檔案。這樣算是達成共識,能選擇到簽名最多的檔案。

對于一個狡猾的人,他會怎麼想?我在一個檔案上簽名也是簽,簽十個也是簽,不管目前這十個檔案,哪個檔案上簽名最多,狡猾的人會在十個檔案都簽一遍,都簽上自己的名字,不管最後你選哪個獲勝者檔案,都會獲得獎勵。這樣會對Native POS帶來什麼樣的攻擊?我第一個人對這個十個檔案簽名,第二個人也是這樣,這一百個人都這樣做,帶來一個什麼樣的問題?每個檔案上都有一百份簽名。十個檔案上都是一模一樣的,都有一百個簽名。

共識算法的改進

Native POS遇到的攻擊沒什麼可損失的,也可以叫無利益攻擊。

簽名沒什麼成本,我可以在任意的檔案上都做簽名。我們看一下CASPER這個未來将要采用的POS算法是怎麼解決Native POS遇到的問題。Native POS在左上角有這樣一個區塊鍊,有兩個分支,你可以選擇在某個分支上進行投票,生成一個區塊,得到回報。POS第一種情況,在這兩個分支上都不投票,這兩個分支一個是0.9,一個是0.1,即A分支獲得0.9的收益,在B分支投票獲得0.1。A和B都投票你可以獲得0.9+0.1,兩個都投票,獲益最大。這會造成什麼樣的問題?總會有很多分支,大家對每個分支都投票,無法達到共識。這是Native POS的問題,POW怎麼解決這個問題,右上角,如果A分支B分支都不投票就沒有收益,A分支投票收益0.9,B分支投票收益0.1,AB都投票你收益更少。這個是因為POW投票相當于挖礦,挖礦解決一個數學謎題。

舉個例子,POW你要在兩個分支上都投票獲得的收益0.5乘以0.9,0.5乘0.1。你還不如在A分支投票獲得0.9的收益。第一種方案在左下角,這個方案和前三種情況還是一模一樣的,不投票等于0,在分支A投票收益0.9,分支B投票收益0.1,如果你在AB兩個分支都投票,我會發現你做了多重投票,扣掉你的保證金。CASPER參與投票的人要交五個機關的保證金。Vitalik Buterin一直很推崇這種讓攻擊者損失很大的手段。

最右下角改進算法,和前兩種是一樣的,你不投票獲得收益是零,在A分支收益0.9,在B分支投票會把你的保證金扣除,對AB兩個分支都投票,會扣5個機關的保證金。右下角的事例裡邊,懲罰是相當嚴厲的,拿我們圓桌簽字會議的那個例子舉例,目前你有十份檔案,如果不是在簽字最多的檔案上簽名,我就要罰你錢,這是對POS算法的一種改進。不過,這種算法隻有在經過非常嚴格的測試後,才能去做傳統共識算法的替代。

挖礦作業系統CoinOS

前面講了共識算法,你有什麼樣的共識算法,就有對應的挖礦算法。最後一頁介紹我們自己以前做的小項目,挖礦作業系統CoinOS,這是一個基于linux的U盤作業系統。這個挖礦系統可以自動地更新挖礦軟體。使用時會自動計算目前應該挖哪些币以及對應的挖礦方式,主要還是針對我前面講的使用GPU挖礦的數字貨币。然後可以自動選擇礦池加入,還可以把挖出來的數字貨币進行自動交易,後面會進行量化交易政策。這是我之前做的項目。客戶從我們這拿到U盤,就可以讓它自己挖礦。

這些就是我今天介紹的所有内容,到最後做一個小小的總結。我所在的公司柏鍊道捷,我們前面有講到。國内能夠做區塊鍊開發的人還是比較少,是以說我們柏鍊道捷公司主要是做這樣的幾件事情,第一做技術教育訓練定制,我們的目的是找到資源,找到合作夥伴,另外做一些咨詢服務,這是我們的CEO孟岩老師,希望以後能找到更多的合作夥伴,也歡迎大家掃二維碼能夠和我們進行合作。

原文釋出時間為:2018年04月07日

本文作者:區塊鍊大學營

本文來源:

CSDN區塊鍊大學營

,如需轉載請聯系原作者。

繼續閱讀