區塊鏈礦工如何以7個步驟挖礦並交易

你有沒有想過區塊鏈的挖掘過程如何進行的,或者你的交易如何得到確認並添加到了區塊鏈?好吧,我也是如此。由於我找不到任何明確的逐步解釋這個過程文章,我決定深入研究並自己編寫指南。以下是區塊鏈交易如何通過七個步驟從你的錢包處理到區塊鏈中。

區塊鏈礦工如何以7個步驟挖礦並交易

步驟1

用戶註銷交易從他們的錢包應用程序,嘗試從他們發送某個加密幣或代幣給其他人。

步驟2

交易由錢包應用程序廣播,現在等待礦工在相應的區塊鏈上接收。只要它沒有被挖掘,它就會在“未經證實的交易池”中徘徊。此池是網絡上等待處理的交易的集合。這些未經證實的交易通常不會收集在一個巨型池中,但更常見的是在小型細分的本地池中。

步驟3

網絡上的礦工(有時稱爲節點,但不完全相同!)從這些池中選擇交易並將其形成“塊”。除了一些元數據之外,塊基本上是交易的集合(此時,仍然是未經證實的交易)。每個礦工都構建他們自己的區塊,但是多個礦工可以選擇要包含在他們區塊中的相同交易。

示例:兩名礦工,礦工A和礦工B。礦工A和礦工B都可以決定將交易X包含在他們的區塊中。塊具有最大數據大小。在比特幣區塊鏈中,塊的最大大小是最大1MB的數據。但在將交易添加到其塊之前,小型企業需要根據區塊鏈歷史檢查交易是否有資格執行。如果發件人的錢包餘額根據現有的區塊鏈歷史記錄具有足夠的資金,則該交易被認爲是有效的並且可以添加到該塊中。礦工通常會優先考慮設置高交易費的交易,因爲這會給他們更高的回報。

步驟4

通過選擇交易並將其添加到其區塊,礦工創建一個交易塊。要將此交易塊添加到區塊鏈(以使所有其他節點和礦工註冊交易),該塊首先需要簽名。此簽名是通過解決每個交易塊所特有的非常複雜的數學問題來創建的。每個塊都有不同的數學問題,這意味着每個礦工都會處理他們構建的塊所特有的不同問題,但所有這些問題同樣難以解決。爲了解決這個數學問題,需要大量的計算能力(因此需要大量的電力)。這是稱爲挖掘的過程。如果你想了解更多有關其工作原理的信息,請繼續閱讀下面的內容,否則請跳至第5步。

區塊鏈礦工如何以7個步驟挖礦並交易

挖掘aka哈希(工作量證明算法)

當嘗試向區塊鏈添加塊時,每個礦工面臨的數學問題是找到其塊中的數據的哈希輸出(也稱爲簽名),其以一定量的連續零開始。這聽起來很複雜吧?但實際上並不那麼難。讓我試着用一個簡單的方法向你解釋。

在我們繼續之前,解哈希函數是什麼很重要。不用擔心,我不會涉及太多的技術細節。哈希函數只是一個很難解決的數學問題,但答案很容易驗證。

哈希函數接受數字和字母的輸入字符串(字面意思是任意字符串的隨機字母,數字和/或符號),並將其轉換爲由隨機字母和數字組成的新的32位字符串。這個32位數字符串是哈希輸出。如果輸入字符串中的任何數字或字母發生更改,則哈希輸出也將隨機更改。但是,相同的輸入字符串將始終提供相同的輸出字符串。

現在考慮塊內的數據作爲哈希輸入(一串數據)。當對此輸入進行哈希處理時,它會提供哈希輸出(32位數字符串)。比特幣區塊鏈的一個規則是該輸出字符串需要以連續數量的零開始,以便有資格作爲塊簽名。這是每個礦工在嘗試向區塊鏈添加區塊時所尋找的東西;以一定量零開始的輸出字符串。但是如果塊的數據字符串沒有哈希到以零的數量開頭的輸出字符串中呢?好吧,這就是爲什麼礦工們反覆更改其塊內的一部分數據,稱爲nonce。由於隨機數會一直在變化,因此哈希函數的輸入數據也會發生變化,從而導致不同的哈希輸出。最終,礦工希望找到一個輸入字符串(塊數據和字符串的字符串),這些字符串哈希爲符合條件的輸出字符串(以零的數量開頭)。下面的例子使用七個零,但這個零的數量實際上取決於區塊鏈的區塊難度。如果你還沒準備好,請不要點擊它。

區塊鏈礦工如何以7個步驟挖礦並交易

這就是礦工們需要找到符合條件的簽名的方式,這也是解決這個數學問題需要如此大的計算能力的原因。猜測這麼多不同的nonce需要花費大量的時間和計算能力。如果你順利完成了很好的工作,現在讓我們繼續前進到第5步。

注意:此過程實際上並未定義爲數學問題,而是定義爲確定性事項——計算機正在對數字執行預定操作以查看輸出是否合乎需要。

步驟5

礦工首先爲其區塊找到符合條件的簽名(解決方案),將此簽名廣播給所有其他礦工。

步驟6

其他礦工現在驗證該解決方案是否與發件人塊的問題相對應(如果哈希輸入實際上導致該簽名)。如果有效,其他礦工將確認解決方案並同意該塊可以添加到區塊鏈中。這就是“工作量證明”定義的來源。找到解決方案的礦工將其“工作量證明”(又稱解決方案)發送給其他礦工,然後他們將驗證解決方案是否合法。如果是,那麼其他礦工將同意並且就區塊鏈達成“共識”。現在可以將塊添加到區塊鏈中,並將其廣播到網絡上的所有其他節點及其簽名。只要塊內的交易與該時間點的當前錢包餘額(交易歷史)正確對應,其他節點將接受該塊並將其保存到其交易數據中。

步驟7

如果大多數礦工達成共識,則塊被添加到區塊鏈中。每次在此塊的頂部添加另一個塊時,它將被視爲其下方塊的另一個“確認”。例如,如果我的交易包括在塊502中,並且區塊鏈是507個區塊長,則意味着我的交易有5個確認(507-502)。這也是Etherscan在向你展示交易詳情時所指的內容。你的交易確認越多,***者就越難以改變它。當新區塊被添加到區塊鏈時,所有礦工將不得不在第3步重新開始,形成一個新的交易區塊。礦工們不能繼續(好吧,他們可以,但這是無關緊要的)採礦也解決了他們正在研究的區塊問題,原因有兩個。

  • 1.它可能包含已被添加到區塊鏈的最後一個塊確認的交易,因此其中一些交易現在可能無效,使得整個塊無效。
  • 2.每個塊都需要添加哈希輸出添加到區塊鏈的最後一個塊到其元數據中。

這就是它成爲區塊鏈的原因。如果礦工繼續挖掘他們已經在處理的塊,其他礦工會注意到哈希輸出與區塊鏈上最新添加的塊的輸出不對應,因此將拒絕該塊。

======================================================================

分享一些以太坊、EOS、比特幣等區塊鏈相關的交互式在線編程實戰教程:

  • java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
  • EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • tendermint區塊鏈開發詳解,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

匯智網原創翻譯,轉載請標明出處。這裏是原文區塊鏈礦工如何以七個步驟處理挖掘工作並進行交易

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章