當前位置:
首頁 > 最新 > 越努力,越幸運——比特幣挖礦奧義

越努力,越幸運——比特幣挖礦奧義

比特幣的挖礦事業

管比特幣不同於傳統貨幣,但是也需要具備貨幣的基本功能。我們需要去發行比特幣,進而才能使用比特幣進行交易。換句話說,我們需要創建比特幣(讓一些比特幣憑空產生)和轉移比特幣(用戶A將一定金額的比特幣支付給用戶B)。

什麼是挖礦

礦是比特幣世界裡非常流行的一個詞,第一次聽說這個詞的時候,我滿腦子是黃金礦工的畫面。雖然挖礦這個詞語非常生動,但是我認為容易給人們帶來誤解,實在是難以將現實中的挖礦和比特幣中的挖礦完美聯繫起來。事實上,在比特幣的世界裡,」礦工「指的是具有計算能力的機器節點,「挖礦「指的是」礦工「們努力讓自己創造的某個區塊能夠被連接到區塊鏈的末尾上。

之前我們提到,比特幣的賬本就是區塊鏈,比特幣的創造和交易都需要區塊來記錄。所以挖礦就是在爭奪賬本上最新一頁的記錄權。

區塊的內容

之前的文章里我用了一個蹩腳的比喻,將區塊鏈上的區塊比作糖葫蘆上的山楂。而真實的區塊大致包含這些信息:

暫時看起來有點複雜,那麼先忘掉它,重點關注在挖礦中需要在意的內容:

交易記錄(Tx):每個區塊需要記錄大約10分鐘內進行的交易,這些交易需要包含的主要信息是交易的雙方和交易的金額。在區塊中,我們給予記錄該區塊的礦工一次發幣權,讓他能夠將第一條交易記錄寫為」上帝給了我12.5個比特幣「,從這個區塊開始,比特幣的總量就會增加12.5個。這樣的方式把比特幣的發行和交易統一了起來,發幣成了一種特殊的交易。

上一個區塊的哈希值(Pre Hash):會在下文中解釋。

隨機數(Nonce):會在下文中解釋。

為什麼要挖礦

於比特幣而言,挖礦維持了比特幣系統的運作。前面提到,比特幣的創造和交易都需要區塊來記錄,如果礦工不願意挖礦了,那麼比特幣將無法用於交易,比特幣系統自然也會崩潰。

對於礦工節點而言,無利不起早,礦工願意自發為比特幣系統提供自己的運算資源,必然是有利可圖的。實際上,某個區塊只能被一個礦工所記錄,這個礦工可以獲得該區塊的發幣權和交易手續費。

在初期的時候,每個區塊可以發行50個比特幣,根據中本聰的設定,這個數字每四年減半,所以目前每個區塊可以發行12.5個比特幣。但是一個區塊中存儲的交易的手續費加起來也不過0.x個,所以當下礦工收入的主要來源是前者。隨著減半的繼續,未來比特幣將不再發行,最終比特幣約會有2100萬個。

哈希函數的加密性

希函數是一類函數,狹義上講,這類函數主要具有以下性質:

求解是不可逆的。函數本身是從x到y的映射,也就是說給定一個x,我們可以根據函數規則求出y值。有些函數也可以寫出反函數,給定y值也可以求出x值,比如最簡單的一元一次函數 y = ax + b。但是哈希函數就無法做到逆向求解。

高靈敏性。哪怕函數的輸入改變很小,函數的輸出也會有很大的不同。

以上兩個性質用於單向加密。許多網站的用戶密碼會使用哈希函數進行加密,然後再存儲在資料庫中。假如用戶名A的密碼是123456,使用md5哈希函數加密,加密結果是e10adc3949ba59abbe56e057f20f883e,這是一個十六進位的數字。那麼即使資料庫失竊,由於哈希函數具有以上兩個特性,拿到資料庫的人也難以根據加密結果還原出原始密碼123456。

在區塊鏈中,每個區塊也會使用特定屬性計算出哈希值,其中包括上一個區塊的哈希值和隨機數。之所以要用上一個區塊的哈希值作為當前區塊計算哈希值的一個輸入,是為了保證區塊鏈的不可篡改性。如果某個區塊的內容被篡改,那麼這個區塊後所有的哈希值都將有很大的變化,因此很容易被檢測出來。

挖礦——證明你的工作量

工們努力地收集新發生的交易,構建最新的區塊,希望自己構建的區塊能夠成為入選區塊鏈的區塊。那麼誰才能被選中呢?區塊鏈用了一種叫做工作量證明(Proof of Work)的方式,讓礦工節點們達成誰才是天選之人的共識。工作量證明從字面理解就是,哪個礦工付出的工作量大,誰就是這個天選之人。那麼如何證明你的工作量大?通過完成這樣的一個任務證明:請創造一個哈希值小於某值的區塊。

前面我們提到區塊中有隨機數這個屬性,並且這個屬性參與區塊哈希值的計算,其作用就是讓礦工通過不斷改變這個隨機數的值,進而得到不同的哈希值。但是由於哈希函數的高敏感性,你會得到完全不同的哈希值,例如123457的md5哈希值是f1887d3f9e6ee7a32fe5e76f4ab80d63,完全不同於123456,輸出結果十分隨機。這件事說明什麼?說明你想得到一個小於某值的哈希值,只能不停暴力嘗試,沒有什麼捷徑。如果你能得到這個哈希值,就基本可以說明,你比別人付出的更多(你的礦機的CPU運算速度更快)。可以說,挖礦就是在擲骰子。

很顯然,任務中所需的哈希值越小,這個任務就越困難。這麼這個值是如何生成的呢?由於比特幣中設定了區塊產生的間隔時間大約是十分鐘,要想保證這個10分鐘基本不變,就需要根據目前比特幣整個網路的運算能力動態調整挖礦難度。比特幣基本的策略是:每2016個區塊產生後改變一次挖礦難度,根據這2016個區塊的產生時間,如果過長便降低難度,如果過短便提高難度。

如果你的礦機最早完成了這個任務,那麼就趕緊把這個區塊發送給其他礦機,告訴他們:我不針對誰,在座各位都是垃圾。他們收到了這個消息後,就會對你表示憤怒,但是又無能為力,只能放棄了這個區塊的記錄權,因為下一個區塊還在等著他,他會開始下一個區塊的爭奪。事實上,存在這樣一種情況,有兩個或多個礦工都完成了任務,就會有兩個不同的區塊被生成,這種情況將會在後續文章中討論。

如何成為天選之人

前比特幣網路的算力已經非常之大,所以挖礦難度已經被調整到一個很大的數字。所以對我們個人礦機而言,幾乎沒有挖到礦的可能,不要總是指望自己是個天選之人。根據比特幣的獎勵機制,礦工只能從挖礦中獲取收益,所以個人礦工的收益基本為0,沒有收益的事情自然沒有人去做。

儘管你無法成為天選之人,但是其實你可以成為天選的人群。目前有很多知名的礦池,每個礦池由非常多的礦機組成,A可以貢獻自己算力為5的礦機,B可以貢獻自己算力為10的礦機,通過一定的機制讓這些礦機協同工作,如果自己的礦池挖到礦,那麼礦池中的礦機就根據算力按比例分配獲得的比特幣。人多力量大啊。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

認識一下北京北的日子把

TAG:全球大搜羅 |