什麼是比特幣挖礦
比特幣節點互相連接時,會從對方處獲取自己沒有的交易。但由于比特幣長期積累天量的交易,兩個節點逐條對照你缺了哪些交易/我缺了哪些交易,是非常困難的事情。
為解決這一難題,中本聰發明了區塊鏈(Block chain)這一重要技術。節點借助區塊(block)來同步交易,保證了所有節點數據的統一性,并通過競爭區塊打包權(也就是挖礦)的方式,保證了區塊鏈的唯一性。
1. 區塊和區塊鏈
一段時間內的交易打成的一個包稱為區塊,比特幣全網平均每10分鐘產生一個區塊,每一個區塊都鏈接到上一個區塊,依次相連形成區塊鏈。
2. 以區塊為單位同步交易數據
區塊從1開始編號,因此節點A連接節點B后,只要檢查雙方的區塊編號高度,就能方便地同步交易數據。例如節點A自己的區塊高度是100,發現節點B的區塊高度是110,則只要向B請求同步101~110這10個區塊即可。
3. 打包區塊的獎勵
為保證有節點打包比特幣交易,比特幣規則規定:打包交易的節點將獲得比特幣作為酬勞。A、打包獎勵的一部分來自交易創建者支付的交易手續費(每KB交易大小100~1000聰手續費)。B、另一部分來自初始2100萬個比特幣的分發,最開始獎勵是每個區塊50比特幣,之后每經過21萬個區塊(約4年時間)獎勵將減半一次,直到2140年左右區塊獎勵不足1聰為止,此時區塊獎勵總和為2100萬比特幣,這就是比特幣2100萬總量的來源(準確地說是 20999999.97690000個)。2140年后打包獎勵將只來自于交易創建者支付的交易手續費。
4. 對區塊打包權的競爭
節點打包交易只需要消耗很低成本的網絡和計算資源,打包獎勵的存在(目前每個區塊的打包獎勵25比特幣約為4萬元),使得有大量節點想打包交易。為保證區塊鏈的唯一性,比特幣規則規定:節點使用類似“扔硬幣”的方法爭奪交易打包權。節點不斷地扔硬幣,誰首先扔出符合規則的結果,誰就能獲得這個區塊的交易打包權,以及這個區塊的打包獎勵。
5. 競爭交易打包權的方式
“扔硬幣”在實現上是計算機做一次哈希(SHA-256)運算,并檢查運算結果從第一位開始是否有足夠多連續的0(可以簡單理解為一次扔256個硬幣,然后看從第一個硬幣開始是否有足夠多的連續硬幣正面)。“扔硬幣”獲勝的唯一訣竅是提高每秒扔硬幣的次數,一個每秒能扔100億次硬幣(做100億次哈希計算)的節點,搶到打包權的概率是每秒扔1億次硬幣節點的100倍。
6. 獲勝節點打包交易并廣播
一旦有某個節點扔出符合系統規則的硬幣結果(例如區塊379543的哈希值 000000000000000008bdeb575056584429ea4be876ea7ca4ce70262d3edb8c8b),他就會立即將這段時間搜集到的交易打包成一個區塊,附上“扔硬幣”的結果、區塊序號379543、上一區塊關系等附加信息廣播出去,其它節點一旦收到區塊379543并驗證無誤,就會停止“扔硬幣”搶這一區塊,轉而在這一區塊的基礎上開始“扔硬幣”搶下一區塊379544。
7. “挖礦”和“礦工”的由來
節點大量進行哈希計算需要計算機設備,并消耗大量電力,這個過程在本質上和金礦挖礦很相似(通過挖礦設備,消耗能源換取黃金)。比特幣總量恒定,產量越來越少的產生方式也和黃金很相似。因此人們形象地將比特幣搶打包權的過程稱為挖礦(mine),將搶打包權的比特幣節點稱為礦工(miner)。
挖礦設備的演變
1. CPU:最早的礦工使用CPU進行挖礦,挖礦速度在M級別(1M=1000K=10^6=每秒100萬次哈希運算)。
2. 顯卡礦機:顯卡有數百個計算核心(流處理器),因此速度相當于數百個CPU,挖礦速度在百M級別。由于ATI和NVIDIA顯卡的架構不同,同檔次A卡流處理器數量遠超過N卡,因此A卡在挖礦上有巨大優勢,專業礦工往往用H61B等有6個PCI-E插槽的主板,插上5-6張ATI 7850等高端顯卡,組成礦機群挖礦。
3. 集成電路礦機:隨著比特幣價格的不斷上揚,挖礦越來越有利可圖,集成電路礦機隨之出現,礦機使用專門設計的,只能做挖礦哈希運算的芯片,因此在挖礦速度和功耗上較CPU和顯卡這樣的通用計算設備有很大的優勢,代價則是除了挖礦和做電暖器以外什麼都做不了。CPU和顯卡在挖礦產出不夠電費被淘汰后,還能當普通電腦用;而礦機被淘汰后,除了少數人有免費電可以繼續挖外,就只能當電暖器或報廢了。
集成電路礦機經FPGA礦機集成電路礦機經FPGA礦機(FPGA:現場可編程門陣列,一種半定制電路)的短暫過渡(速度數百M到G級別,1G=1000M),進化到ASIC礦機(ASIC:專用集成電路)時代,速度亦從G級別逐步進化到T級別(1T=1000G),其每秒能進行萬億次哈希運算,相當于一百萬個CPU的計算能力。也就是說目前全球排名第二的天河二號超級計算機如果用于挖礦,其312萬個CPU核心的計算能力僅相當于價值幾千元的T級別礦機。
5. 2013年起比特幣價格的飆升,上百萬臺ASIC礦機的大量部署,使得比特幣全網算力目前已達到驚人的435P(1P=1000T),下圖為KnCMiner在瑞典的大型礦場。
礦池
由于有數以萬計的礦工競爭打包權,單個礦工搶得打包權的概率非常小,產出非常不穩定,有可能走狗屎運1小時就搶到一次,也有可能一年都搶不到一次。為穩定挖礦產出,礦工往往選擇加入礦池挖礦,礦池將大量礦工的算力整合在一起,在全網總算力中占據一定的份額,由此得到較穩定的挖礦產出,礦池在收取2%~4%礦池手續費后,將產出按礦工算力分配給礦工。這就好比一個人買彩票很難中獎,于是礦池把很多人組織在一起買彩票,中獎了再按出資額分配給大家。
隨著礦池的發展,還出現了像萊比特(http://LTC1BTC.com)這樣的自動切換礦池,俗稱機槍池。機槍池會在各種山寨幣收益高時切換到山寨幣挖礦,以此將礦工的收入提高5%~10%。
比特幣挖礦的意義——分發初始比特幣
比特幣反對者指責挖礦白白消耗了大量資源去做無意義的扔硬幣,支持者則舉例黃金挖礦也是白白消耗了大量資源去做無意義的挖洞。對于比特幣系統而言,這種消耗大量資源挖礦的最大意義在于:公平地分發2100萬個初始比特幣,就像消耗資源挖黃金一樣,消耗資源獲挖比特幣是唯一公平的分發初始比特幣的方式。
比特幣由于其代碼開源,因此出現了數以千計的抄襲者、競爭者、改進者。通常將只是簡單抄襲模仿比特幣的稱為山寨幣,在比特幣基礎上加入一定新特性的稱為競爭幣,有的幣在比特幣基礎上加入智能合約等其他功能模塊,并自稱“二代幣”。這些數以千計林林總總的幣嘗試了所有你能想象得到的初始幣分發模式,例如將初始幣平均分發給每個冰島人的冰島幣(Aurcoin),將初始幣分發給73個眾籌參與人的未來幣(Nextcoin),由開發者控制并緩慢分發大部分初始幣的瑞波幣(XRP)等等。
但所有這些分發初始幣的方式,其公平性都遠弱于燒錢獲取初始比特幣的模式,而公平性又是一個貨幣系統的最核心問題,因此比特幣挖礦雖然消耗了大量資源,但和消耗資源挖金礦一樣是合理的經濟行為。
發文者:鏈站長,轉載請註明出處:https://www.jmb-bio.com/4272.html