挖礦 (比特幣)

维基百科,自由的百科全书
跳转至: 导航搜索

挖礦英语:Mining),是獲取比特幣的勘探方式的暱稱。由於其工作原理與開採礦物十分相似,因而得名。此外,進行挖礦工作的比特幣勘探者也被稱為礦工

工作原理[编辑]

比特幣礦工通過解決具有一定工作量的工作量證明機制問題,來管理比特幣網路 —— 確認交易並且防止雙重支付中本聰在他的論文中闡述說:

中本聰把通過消耗CPU的電力和時間來產生比特幣,比喻成金礦消耗資源將黃金注入經濟。 比特幣的挖礦與節點軟體主要是透過對等網路數位簽章互動式證明系統來進行發起零知識證明與驗證交易。

每一個網路節點向網路進行廣播交易,這些廣播出來的交易在經過礦工(在網路上的電腦)驗證後,礦工用自己的工作證明結果來表達確認,確認後的交易會被打包到資料塊中,資料塊會串起來形成連續的資料塊鏈。中本聰本人設計了第一版的比特幣挖礦程式,[1]這一程式隨後被開發為廣泛使用的第一代挖礦軟體Bitcoin,這一代軟體從2009年到2010年中旬都比較流行。

每一個比特幣的節點都會收集所有尚未確認的交易,並將其歸集到一個資料塊中,礦工節點會附加一個隨機調整數,並計算前一個資料塊的SHA-256雜湊運算值。挖礦節點不斷重複進行嘗試,直到它找到的隨機調整數使得產生的雜湊值低於某個特定的目標。

由於雜湊運算是不可逆的,尋找到符合要求的隨機調整數非常困難,需要一個可以預計總次數的不斷試錯過程。這時,工作量證明機制就發揮作用了。當一個節點找到了符合要求的解,那麼它就可以向全網廣播自己的結果。其他節點就可以接收這個新解出來的資料塊,並檢驗其是否符合規則。如果其他節點通過計算雜湊值發現確實滿足要求(比特幣要求的運算目標),那麼該資料塊有效,其他的節點就會接受該資料塊。

挖礦礦產[编辑]

除了將接收到的交易資訊打包到資料塊,每個資料塊都會允許發行一定數量的新比特幣,用來激勵成功發現資料塊的礦工。

比特幣系統按照預定的貨幣增發節奏決定發行的比特幣數量。如果其他支付交易有給手續費的,那麼礦工還會獲得手續費。由於礦工可以自行決定是否將某一個交易資料打包到資料塊中,因此礦工有可能優先選擇手續費較高的交易來打包。

資料塊產生速率的預期為每10分鐘一個,但每個資料塊中,新發行的比特幣不能超過50個,而這個數字每產出21萬個區塊就會減半,大約每4年就會發生一次。

因此,比特幣的總數量不會超過2100萬個。隨著新發行比特幣數量的下降,手續費將成為挖礦的主要動機。

那些在較早時期將電腦資源投入到比特幣挖礦活動中的用戶,相對於較晚加入的礦工而言,獲得比特幣容易得多。這樣設計的原因,主要是為了保證在比特幣的早期發展階段可以吸引足夠的計算力來處理資料塊。事實上,如果沒有人挖礦,比特幣的初期交易活動就無法處理,比特幣經濟也將停止運行。[2]

  • 2012年12月第一次減半
  • 第二次發生減半的實際時間是2016年7月9日 16:46:13 UTC[3][4],每個資料塊中新發行的比特幣目前為12.5個

挖矿难度[编辑]

為了使得資料塊產生的速度維持在大約每十分鐘一個,產生新資料塊的難度會定期調整。

如果資料塊產生的速度加快了,那麼就提高挖礦難度;如果資料塊產生速度變慢了,那麼就降低難度。比特幣系統在每隔2016個資料塊被產出後(約兩週的時間),會以最近這段時間的資料塊產生速度,自動重新計算接下來的2016個資料塊之挖礦難度。

而難度基本上就決定了一個有效的資料塊標頭(英语:Block Header)的 SHA-256 雜湊值應小於一定值,也就是說該雜湊值必須要恰好落在目標區間之內才算有效,當目標區間越小就意味著命中機率越低。

換句話說就是挖礦的難度越高。由於ASIC計算設備的爆炸式加入,目前挖礦難度呈現幾何級數的上升,目前平均每15天增加50%難度[來源請求],讓普通個人挖礦者的挖礦工作變得異常困難。

挖矿设备[编辑]

最早,比特币矿工都是通过IntelAMDCPU产品来挖矿。但由于挖矿是运算密集型应用,且随着挖矿人数与设备性能的不断提升难度逐渐增加,现在使用CPU挖矿早已毫无收益甚至虧損。

截至2012年 (2012-Missing required parameter 1=month!),从2013年第一季度后,矿工们逐渐开始采用GPUFPGA等挖矿设备[5]。同时,ASIC设备也在2013年中旬大量上市[5]

从2013年7月起,全网算力由于ASIC设备大量投入运营呈现直线上涨,以2013年7月的平均算力计算,所有CPU挖矿设备均已经无法产生正收益,而FPGA设备也接近无收益。2013年9月平均算力估算,现有的针对个人开发的小型ASIC挖矿设备在未来1-2个月内也接近无正收益。大量算力被 5 THash/s以上的集群式ASIC挖矿设备獨佔。个人挖矿由于没有收益,几乎被挤出挖矿群体。有一些比特幣礦工則集資在某些可取得低價電力的地方興建機房安裝大批挖礦設備進行挖礦。

部份比特幣礦工為省下自己挖礦的成本,將挖礦程式製作成惡意程式,在網路上感染其他人的電腦,來替自己挖礦。[6]

矿池[编辑]

由於比特幣全網的運算水準在不斷的呈指數級別上漲,單個設備或少量的算力都無法在比特幣網路上獲取到比特幣網路提供的區塊獎勵。在全網算力提升到了一定程度後,過低的獲取獎勵的概率。促使一些「bitcointalk」上的極客開發出一種可以將少量算力合併聯合運作的方法,使用這種方式建立的網站便被稱作「矿池」(Mining Pool)

在此機制中,不論個人礦工所能使用的運算力多寡,只要是透過加入礦池來參與挖礦活動,無論是否有成功挖掘出有效資料塊,皆可經由對礦池的貢獻來獲得少量比特幣獎勵,亦即多人合作挖礦,獲得的比特幣獎勵也由多人依照貢獻度分享。

截止2017年11月,全球算力排名前五的比特币矿池有:AntPool、BTC.com 、BTC.TOP、ViaBTC、F2Pool,目前全球约70%的算力在中国矿工手中[7]

手续费[编辑]

比特幣礦工會對大部分交易收取少量費用,其主要目的是防止有人大量發送無聊的小額交易,浪費網路資源。当前每筆交易的手續費大部分是฿ 0.0001/KB (0.0001btc/KB) ,实际上0.9.0以后的版本将默认手续费降为฿ 0.00001/KB (0.00001 btc/KB)[8]因为大部分交易占用的数据量都小于1千字节,所以一般情况下฿ 0.00001( 0.00001 btc/KB)的手续费就足够了。同時,在將來比特幣區塊獎勵較少時,手續費將成為礦工收入的主要來源,比特幣的手續費會與該交易佔用的位元組數相關。

目前比特幣系統中手續費的計算標準並非強制性的,因此使用者也可以在交易進行時不給予任何手續費,但大多數礦工在組建資料塊時通常會優先考慮帶有較高手續費的交易,以便在挖礦成功時能獲得較高的報酬,因此無附帶任何手續費的交易,可能會需要等待較長的時間才能被處理並納入區塊鏈中。

此外,現在因為區塊容量上限 1MB 以及近期比特幣交易量大增的因素,手续费大幅上漲,而且等待交易被確認的時間也變長了許多。

矿池的结算方式[编辑]

目前矿池的结算方式主要有:PPLNS、PPS、FPPS、PROP、SOLO、P2P。

PPLNS模式[编辑]

PPLNS模式:(最纯正的组队挖矿)全称Pay Per Last N Shares,意思是说“根据过去的N个股份来支付收益”,这意味着,所有的矿工一旦发现了一个区块,大家将根据每个人自己贡献的股份数量占比来分配区块中的货币。

(share就是股份的意思)举个例子:假设,张三、李四、王五,这三个人在同一个PPLNS矿池中挖矿,在过去的一段时间里,张三贡献了10个股份,李四贡献3个,王五贡献12个,加起来是25个股份,这时矿池发现了一个区块,区块中含有25个比特币,那么,张三就会分到10/25个区块的奖励,也就是10个比特币,而李四获得3个,王五获得12个。

在PPLNS模式下,运气成份非常重要,如果矿池一天能够发现很多个区块,那么大家的分红时间会非常快,如果矿池一天下来都没有能够发现区块,那么大家当天也就没有任何收益,收益要等到你参加的区块被完全挖掘出来才能得到分配。

同时,由于PPLNS下,具有一定的滞后惯性,你的挖矿收益会有一定的延迟,比如说,你加入到一个新的PPLNS矿池,这个时候你会发现前面几个小时的收益比较低,那是因为别人在这个矿池里已经贡献了很多个share了,你是新来的,你的贡献还很少,所以分红时你的收益都是比较低的。随着时间的推移,该结算的也结算了,大家又开始进行了新一轮的运算时,你就回到和别人一样的水平了。同样道理,若你离开了PPLNS矿池不再挖矿,你贡献的share还在,在此后的一段时间里,你依然会得到分红收益,直到你的share被结算完毕。

PPS模式[编辑]

PPS模式:Pay-Per-Share方式---该方式为立即为每一个share支付报酬。该支出来源于矿池现有的比特币资金,因此可以立即取现,而不用等待区块生成完毕或者确认。这样可以避免矿池运营者幕后操纵。这种方法减少了矿工的风险,但将风险转移给了矿池的运营者。运营者可以收取手续费来弥补这些风险可能造成的损失。为了解决PPLNS那种有时候收益很高,有时候没有收益的情况,PPS采用了新的算法。PPS根据你的算力在矿池中的占比,并估算了矿池每天可以获得的矿产,给你每天基本固定的收益。

这么举例就很好理解:假设你的算力是100M,而整个矿池的算力是10000M,那么你就占据了矿池算力的1%,然后,假设矿池根据当前的难度和全球总算力,估算出矿池一天大约能够挖到4个区块,假定数量为100个,那么,矿池会为你每天支付全矿池1%,也就是1个币的报酬,这样,即使矿池今天只挖到了1个区块,你也是获得1个币(矿池亏本),如果矿池超额发挥,挖到了10个区块,你还是只有1个比特币的收益(矿池大赚)。

FPPS模式[编辑]

FPPS模式:即“Full PPS”(完全PPS),对包括交易费在内的全部区块收益进行分配。相比传统的PPS结算模式(不分配交易费,仅把12.5BTC分发给矿工)约可提升5%-15%左右收益。目前矿池所挖到的每个区块奖励=12.5BTC+区块打包交易费。由于比特币越来越多人使用,记录交易的区块大小有限,全网持续拥堵,推高了交易费,使得交易费在区块奖励中占比增加。也就是说,交易费越高,选择这种结算模式的矿工,收益将越高。该模式有BTC.com矿池首创。

PROP模式[编辑]

PROP模式:比特币区块的产生是:由矿池发现区块后向全网络广播,经过120次确认后,才会产生区块。PPS模式是:矿工每贡献一点速度,矿池就向矿工支付相应的比特币,矿池的币还是要来自真正的区块产生,只不过在真正的区块产生之前,矿池就提前支付给了矿工。PROP模式是:矿池经过120次确认产生真正区块后,会把比特币按每个矿工的贡献分配给矿工。

PPS模式是由矿池提前支付的,所以只要矿工的速度稳定,每天得到的比特币数量就稳定。PROP模式是要经过120次确认,矿池才向矿工支付,由于矿池产生真正区块是由概率决定的,所以矿工每天得到的比特币数量会不一样。在PROP模式,即使暂时没有产生真正的区块,以后产生出来了真正的区块,还是会根据挖这个区块的贡献,分配给每个矿工。

SOLO模式[编辑]

SOLO模式:就是自己单枪匹马的自己挖,自己计算区块,去碰撞HASH值,碰撞到了,那么此次块区奖励全部归你个人所有,同理,如果你一天里没有爆快,那么你一天就是颗粒无收。SOLO模式目前都是算力比较大的用户选择,因为要和其他人抢,如果算力太低,很难抢得到。

P2P模式[编辑]

P2P模式:是继承p2pool开源项目而推出的挖矿模式,其为矿工提供了一种点对点的挖矿方式,防止算力集中在 某个中心化的矿池而对比特币网络进行51%攻击。目前p2p网络情况不怎么好,所以已经基本不用了。

结算方式的选择[编辑]

如果你是普通的挖矿者,只想有稳定挖矿收益,那么可以考虑 PPS结算方式。如果你是个小赌徒,喜欢中奖的感觉,可以考虑 PPLNS模式,手续费更少,但收益如何,就看运气。如果你想要稳定收益的基础上,又想要依靠运气获得更多的收益,可以考虑FPPS。如果你是大算力用户,并且对自己的运气很有信心,那么可选择自己SOLO,如果挖到了全是自己的,如果没挖到就什么也没有,适合大算力矿场的专业级矿工。算力挺多的用户也可以去矿池申请做VIP用户,矿池技术实力过硬,对于大算力用户会给出额外的费率优惠,省心又省力。

矿工挖矿不是只挖一天两天,讨论每种结算模式每天挖出的比特币数量没有太大意义。矿工挖矿至少都是挖几个月才能回本,一挖就是几年,有些矿工喜欢在一个矿池稳定挖矿获得稳定收益,有些矿工选择拼运气获得收益,也有一些矿工喜欢在各个矿池间来回切换,追求利益最大化,但频繁来回切换也会对挖矿的矿机造成损耗。具体选择哪种结算模式,都需要矿工去切身体验,适合自己的才是最好的。

參考資料[编辑]

  1. ^ Davis, Joshua. The Crypto-Currency. Wired Magazine. 10 November 2011 [11 November 2011]. 
  2. ^ 比特幣的社會實驗:只有相信邏輯才能活在未來《中國企業家網》| 2013-05-27
  3. ^ Bitcoin Block Explorer - BTC.com以2016年6月16日網頁右下方資料顯示
  4. ^ 比特币宣布第二次产量减半 业界认为影响不大. finance.sina.com.cn. 
  5. ^ 5.0 5.1 Bitpay Breaks Daily Volume Record with Butterfly ASIC mining release. Bitcoin Magazine. 
  6. ^ 懷疑電腦越來越慢?有 2,500 個網站會偷用你的電腦挖礦,就算關掉瀏覽器也一樣
  7. ^ BTC.COM. Pool Stats - BTC.com. btc.com. [2017-11-08] (英语). 
  8. ^ Bitcoin Core version 0.9.0 released. bitcoin.org. 

外部連結[编辑]