• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 百科 查看內容
    • 2149
    • 0
    • 分享到

    挖礦知識入門手冊

    2018-12-14 12:50

    前言:


    數字貨幣的生態體系里,挖礦無疑是最耳熟能詳的一個詞語,工作量證明、交易打包、區塊廣播……各類專業術語眼花繚亂,在大概了解整個過程后也能講出個一二。然而在實際情況中,大部分人都不知道這些名詞之間的作用關系究竟是什么,其中也不乏一些在數字貨幣領域里沉浮多年的資深人士。


    我在初步入門學習時發現,很多細節上的痛點問題并沒有一個連貫且易懂的答案,知識點都是片狀且孤立的,讓人們對于這個重要的過程遲遲不能有一個站在高處的系統認知。所以我將自己曾經有過的疑問總結成幾篇文章,從初學者視角用自問自答的方式,深入淺出地為大家答題解惑。


    數字貨幣是一種高度技術化的投資產品,只有深刻了解它的機制才能對它的前景做好最準確的判斷。


    挖礦知識手冊入門

    第一部分:底層知識儲備

    在這個部分里,我將介紹挖礦相關的基本底層知識,其中將會設計到部分數學與編程知識,但各位也無需擔心,我會用最淺顯的語言來解釋,務必讓專業的知識變得不再有門檻而難以理解。


    在了解必備的原理后,下一篇文章里我將結合本章內容,從應用層面進行實操分析。


    Q1:什么是挖礦?為什么擁有高算力在挖礦過程中如此重要?


    A: 首先用大家都知道的一句話籠統概括:挖礦的過程就是產生比特幣的過程。


    礦工們需要一同競爭去算出一個數字,當算出的數字小于系統給出的目標值時,即可宣布挖礦成功,進而獲得系統獎勵的比特幣(目前是12.5個)。


    在這個過程里,礦工只能用暴力破解(試數)的方式“碰瓷”答案,除了大量反復的機械計算以外沒有任何捷徑可走,這就是為什么算力如此重要的原因:你的計算能力越強(算力越大),你就能比別人有更高的優先級算出正確答案——在這個領域里拼的是人海戰術,三個臭皮匠遠比一個諸葛亮更吃香。


    這也就是礦場、礦池之所以會出現的原因。


    Q2:什么是礦機、礦場、礦池和節點?它們之間的關系是什么?


    A: 礦機是專門為了解題而出現的機器,根據出現的先后順序分別為CPU礦機,GPU礦機,ASIC礦機。


    最初一批人使用CPU(內存)進行計算挖礦,想要大量匯聚算力意味著需要很多CPU同時進行。但在此過程中他們發覺利用CPU進行計算簡直是大材小用,有很多計算單元根本用不上,殺雞焉用宰牛刀?何況成本還很貴。


    此時人們發現GPU(顯卡)能處理的并行計算正好能滿足挖礦需求,進而紛紛轉向利用GPU挖礦,大大減少了成本,提高了性價比。但在越來越多的礦工入場后,人們已經不能滿足于GPU的運算速度了,進而出現了大批的ASIC礦機,即專用集成線路礦機。這種礦機根據不同的幣種算法有著不同的型號,專挖各類數字貨幣。


    ASIC礦機的問世瞬間讓算力世界不再公平。越來越多的資本入場,開始購置大批的礦機進行集中挖礦。他們將這些礦機安排在電費地租便宜的深山中,沒日沒夜地同時進行計算,此時便形成了礦場。


    然而礦場也隨著市場的擴大而逐漸不占優勢。由于各方算力勢力的崛起,礦場單打獨斗,越來越難挖到屬于自己的塊,出塊的不確定性很難保證收益能夠負擔起成本。


    于是各個礦場決定抱團取暖,他們將算力匯聚在一起,最終成為了礦池。一方面出塊的概率大大提高,可以分得一杯羹;另一方面即是沒有挖到塊,礦池也會給他們固定的保底收益,就是出塊后獲得的比特幣大頭會被礦池拿走——但是雖然是別人吃肉,但畢竟是自己實力跟不上,能夠喝口湯就已經不錯了不是嗎?


    所以一句話概括,礦機匯聚成礦場,礦場匯聚成礦池,涓滴成河,川流入海。


    那么現在的數字貨幣網絡里,節點已經不再再是個人的設備了,任何一個礦場或者礦池,都可以看作成一個大的節點,并且后者已經遠遠超過了個人設備節點,成為了比特幣網絡的主力軍。


    Q3: 什么是工作量證明(proof-of-work)?它和上一個回答里提到的目標值是什么關系?


    A: 首先我們先要了解一下什么是哈希計算(hash)。


    在比特幣挖礦里主要使用SHA-256算法。我們無需具體了解這個算法的具體機制,我們只需要知道,一個數字A通過SHA-256的計算后,將會變成一個長度為256位的數字B,此時B就叫做A的哈希值。


    不同的數字的哈希值絕不會一樣,并且這個過程不可逆,即A可以通過SHA-256得到B,而如果僅知道B,絕不能倒推出數字A。所以即使當系統給出一個值C(已被哈希計算過),沒有任何人能夠倒推出這個值在哈希前是一個什么數字,只能一個一個數字進行嘗試計算。當某個人算出一個哈希后的數字比系統給出的值C小,即可認證計算成功。


    此時,礦工為了尋求答案而進行的計算嘗試的過程,我們稱之為工作量證明(proof-of-work)。


    綜上所述:


    • 系統給出的值C即是目標值;
    • 礦工每計算一次,都是工作量證明(proof-of-work)的具體體現。所以工作量證明(proof-of-work)即是證明礦工們為了得到答案確實進行了計算;
    • 再具體一些,我們設定一個參數nonce,作為工作量證明的計數器。nonce初始值為0,每進行一次計算數值加1。

    Q4: 系統如何自動判斷是否需要調整挖礦難度?又是如何調節才能將出塊速度維穩在每十分鐘一個?


    A: 我們都知道,系統將比特幣出塊的速度設定為1個/10分鐘。但這個并不是絕對固定的,因為出塊的速度跟全網各個節點的算力大小有關。


    從下圖https://btc.com/stats/diff網站數據我們可以發現:



     


    實際的出塊速度并不是精準的10分鐘,而是在一定的值域內呈小范圍的波動。當某些節點具有較強的算力,它便能更輕松地解開數學題,也就是更快地挖到塊。此時系統將會根據一定周期內的出塊平均時間,進行相應的難度(difficulty)調整:


    如果平均值小于10分鐘,便會增加解題難度,即將目標值設置的更小;當目標值減小時,找到一個小于它的哈希值會越來越難(例如,扔骰子扔到小于3點總會比扔到小于6點的概率更小)。反之亦然。


    在這里,系統將每14天進行一次難度評估計算,并作出難度調整。


    其中:


    設d=14天=60*24*14=20160分鐘


    在這14天內,將會挖出塊的數量:p=6*24*14=2016個


    那么出塊平均時間 avg t1 =p/d


    當avg t1 小于上一個周期的avg t0時便會增加難度,相反亦同理。


    我們需要注意一點的是,挖礦的速度與比特幣交易的數量與金額規模無關,僅跟全網的算力大小有關。而算力的大小又跟電費、當前幣價有關,因為若是幣價過于低,cover不住挖礦的成本,便會有大量的礦工離場。此時系統的算力便會降低,挖礦的難度也會相應調小。但由于系統每14天才會進行一次調整,所以比特幣的挖礦難度會有些許的滯后性。


    10分鐘的出塊速度也是當初中本聰一個權衡,太快的話會導致加大分叉概率(關于分叉與孤塊,后面的文章會詳細介紹);而太慢的話會使交易確認變得過于漫長。


    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频