挖礦是什麼意思?

2021-10-20 11:47:32 字數 1211 閱讀 3191

生成乙個區塊,鏈入區塊鏈的過程,就是挖礦。挖礦的人/機器/程式,就是礦工。

首先,先了解一下為何需要礦工去挖礦。

區塊鏈技術為了使每一筆交易都變得可靠,將每一筆賬單都儲存在網路的每個節點。公開,透明,這讓每個人都知道資金的流向,不需要再單獨建立乙個監管部門來記錄每一筆交易資訊。

但是,這個賬單不是憑空出現,是需要生成的,也就是需要礦工來挖礦。

首先使用者拿通證來交易,這時生成了乙個訂單,礦工拿到訂單資訊時需要生成合法的賬單資訊,等到生成成功,礦工會把交易賬單分享到各個節點,這時交易才能算是成功完成。

礦工如何生成合法的賬單?

所謂合法的賬單,是根據每一筆賬單上的資訊生成的hash串所決定的,而決定hash串的標準是根據礦工挖礦的時間來定的,為了不讓礦工那麼快地挖礦,所以設定了不同的難度。

舉個 ,hash256生成的十六進製制一共64位,為了讓礦工不那麼快地計算hash值,所以設定個規則,生成hash串的前10位必須是0(當然也可以是前15位為0),這個賬單才能生效。所以,礦工需要不停地更改數字來窮舉根據賬單資訊生成的hash串。

所以,挖礦本質是執行hash函式的過程,而hash函式是乙個單輸入單輸出函式,輸入資料就是這個區塊頭。

位元幣區塊頭共6個字段:

int32_t nversion; //版本號,4位元組

uint256 hashprevblock; //前乙個區塊的區塊頭hash值,32位元組

uint256 hashmerkleroot; //包含進本區塊的所有交易構造的merkle樹根,32位元組

uint32_t ntime; //unix時間戳,4位元組

uint32_t nbits; //記錄本區塊難度,4位元組

uint32_t nnonce; //隨機數,4位元組

所以許多人說「挖礦」很難,因為 hash 的計算是不可逆的。舉例來說,由字串算出對應的md5值很容易,但由md5值反推出字串,是不可能的。

所以我們可以認為hash的結果是完全隨機的,要得出前48bit必須是0x00000000ffff的雜湊結果,就如同連續拋48次硬幣,每次都得到我們想要的結果,其概率為(1/2)^48

最開始用 cpu 挖礦,過渡到 gpu 挖礦,演化到當前的 asic(專業礦機)挖礦、雲挖礦……還有人相信量子計算的突破會讓區塊鏈體系土崩瓦解(大誤,詳情可以參考文章人類企圖以公升級裝置和計算的速度來突破hash的計算壁壘,但是隨著礦工的數量越來越多,挖礦的難度也在水漲船高。

所以,這究竟是不是一種區塊鏈的自我進化

uma是什麼意思 UMA是什麼意思?

展開全部 uma 不明生物 是636f707962616964757a686964616f31333431376537動畫 進化戰記 betterman 中的一類人造怪物的統稱,是生命工學食料研究所 b.p.l.所長梅崎博士製造出來 協助他利用阿尼瑪斯之花 大量製造蛋白質 具有驚人攻擊性的怪物。阿拉...

是什麼意思?

meta是html中的元標籤,其中包含了對應html的相關資訊,客戶端瀏覽器或伺服器端的程式會根據這些資訊進行處理。http equiv類似於http的頭部協議,它回應給瀏覽器一些有用的資訊,以幫助正確和精確地顯示網頁內容。content 內容型別 重要!這個網頁的格式是文字的,網頁模式 chars...

In 是什麼意思

函式引數型別前 in 代表什麼 在visual c 中屬於sal批註,是為了編譯系統在分析 時發現缺陷用的 表示是乙個輸入引數。可以定義乙個 in 的巨集,這個巨集什麼都不做,就是形如這樣的。define in void fun int in x 等同於 void fun int x 但是他給出了引...