(一)什麼是挖礦?
比特幣(Bitcoin)是一種新型態的數字資產及交易模式,由中本聰(Satoshi Nakamoto)發明,他在2011年11月1日密碼學討論群提出這個觀念,最重要的是成功利用”區塊鏈(Blockchain)”的觀念公開賬簿,讓“重複扣款”這個虛擬貨幣最大的問題迎刃而解,用戶樂於貢獻出CPU的運算能力,運行一個特殊的軟件來做一名“挖礦工”,這會形成一個網絡共同來維持區域鏈,而這個過程中會生成新貨幣。交易也在這個網絡上蔓延,運行這個軟件的計算機爭相破解不可逆密碼難題,這些難題包括好幾個交易數據。第一個解決難題的“礦工”會得到50比特幣獎勵,相關交易區域會加入鏈條。隨著“礦工”數量的增加,每個迷題的困難程度也隨之提高,這使每個交易區的比特幣生產率維持約在10分鐘一枚。此外,每達到21萬個區域,獎勵就減半,從50比特幣減到25,再從25到12.5,一直持續下去。這樣到2140年,比特幣將達到預定的2100萬枚上限。成功建立出一個去中心化、可信賴追蹤交易的虛擬支付系統。
(二)什麼是比特幣?
比特幣其實有很多個概念,它可以是單位,可以是一個系統等等。
我們這裡只講貨幣這個概念。
比特幣這個東西其實還蠻抽象的,它不像實體貨幣,比如我們現實中的錢那樣可以觸摸,也不像我們支付寶或者銀行賬號裡的那個數字。它只是一條條轉賬記錄。
例如:
小白支付小熊 50 比特幣。
那麼在比特幣這個系統中,我們就認為小熊擁有了 50 個比特幣。
(三)什麼是區塊鏈?
在理解區塊鏈是什麼之前,我們現在理解一下什麼是區塊。
區塊是一種數據結構。我們可以理解為一張白紙,白紙上面記錄著幾個信息。
(1)區塊
在這裡,我需要在引入一個概念,我們賦予每一個東西一個身份證號,
Prev Hash: 前一張白紙的身份證號
Nonce: 每一張白紙生成的身份證號都需要符合一定的條件,因此需要找到一個Nonce值來使得這一整張信息所生成的身份證號是符合條件的(找這個 Nonce 值的過程就是挖礦,找到就是挖礦成功)
Merkle Tree: 可以理解為另一個身份證號,這個身份證號是由所有的轉賬記錄生成的
Timestamp: 時間戳
理解了區塊的概念之後,顧名思義,使把所有的區塊都鏈接起來形成一條鏈子,就是區塊鏈
(2)比特幣區塊鏈
我們可以看到這張圖的第二個區塊和之前那張區塊的圖不一樣,在於 Merkle Root有延展。
剛才有說到 Merkle Root 可以理解為是由所有的轉賬記錄生成的一個身份證號,那麼對於內存有限的電腦來說,我們可以只存這個身份證號就可以了,不需要存儲所有的轉賬記錄。
(3)節點是什麼?
節點就是所有的比特幣錢包。
只要你的設備安裝了比特幣錢包,你就是一個節點。
所謂的分佈式,理論上來說,所有的節點都保存有同一份數據,新接入的節點,會慢慢更新,直到和所有的節點數據都一致,因為比特幣的共識機制,所有節點都會認同最長的那條鏈的數據是正確的。
但實際上,由於網絡的延遲和其它原因,不可能所有的節點保存的數據都一樣。
(4)比特幣網絡節點
我們假設上圖是比特幣網絡節點,現在所有的節點是數據鏈全都是一樣的,長度都是 100,
現在Node1 挖出了一個新的區塊,100
幾乎同一時間Node4 也挖出了一個新的區塊 100
那麼就有可能出現這種情況對於node3來說,它收到了兩個 101 區塊,也即 101a 和 101d
多個子區塊指向同一個父區塊
對於node6 節點則有可能是 ...
對於node7 節點則有可能是 ...
那麼出現了比特幣節點中,區塊鏈數據不一樣的情況,最後究竟是 101a 還是 101d 會併入比特幣主區塊鏈,這取決於基於 101a 或者 101d 的基礎繼續添加區塊的速度,誰比較快。如果基於 101a 區塊鏈的節點增長速度比較快,那麼它的鏈條就比較長,根據比特幣的協議,大家最後會一直接受這條鏈,反之,接受基於 101d 的鏈。
看了此文章對你有幫助請點點關注
閱讀更多 區塊鏈講壇大家說 的文章