之前文章說過區塊鏈就是通過密碼學的方式形成的一個由集體維護的分布式數據庫。
首先,區塊鏈,字面上理解就是由多個“區塊”連接成為的一種“鏈式”的數據結構。
就像這樣:
對于初步了解區塊鏈的人來說,可以簡單的把區塊鏈理解為分布式數據庫(實際上是不同的),一種點對點的網絡。它的網絡結構是分布式的:
下面來詳細說一下具體一個區塊是什么樣的數據結構:
區塊高度:可以理解為每個區塊的唯一ID,從零開始的“創世塊”(即塊高度為0),一段時間生成一個塊,塊高度加1。
頭哈希:每一個區塊都有一個唯一哈希值,依據上一個區塊的頭哈希+數據塊哈希+隨機數生成
父哈希:上一個高度區塊的哈希值
merkle根:區塊中每一筆交易對應一個哈希,呈樹狀結構,生成的最終值(根),代表了該區塊中的交易。
難度:難度不是固定不變的,會隨著網絡現有算力的變化而自動調節
Nonce:挖礦所要達到的目標值
區塊體:一定時間內所生成的交易信息,即賬本。
說到這里,一定還有頭腦中沒有形成區塊鏈的概念,所以我下面描述一個比特幣中交易的“全流程”:
小明和小紅每人有一個比特幣的地址(公鑰:相當于是我們銀行卡的卡號 )和一個私鑰(相當于銀行卡密碼或者說你的簽名),像這個樣子:
1JQMpgRThCJjKbs7P8Ht6x142zjPJFmZVY
我們需要填寫轉賬的金額和對方的比特幣地址,就像我們平時用銀行卡轉賬一樣的操作,一段時間后,對方即可收到你的轉賬金額。
這是作為用戶能感知到的,看上去和我們平時的轉賬交易沒什么不同,只是“卡號”看起來奇怪了一點,交易時間變長了一點。
那么當你按下“轉賬”按鈕時,背后的區塊鏈系統到底發生了什么?
使用私鑰對這筆即將發生的交易進行簽名
從你的客戶端把你的這筆交易提交到區塊鏈網絡
由已經開啟“挖礦”程序的計算機(稱為礦機)把10分鐘內的交易打包成一個數據塊(相當于一個賬本,其中就包含了小明的這筆交易)
這個數據塊就是上圖中的“區塊主體”,而此時,這些區塊主體中的交易并未生效。
那么如何使這些交易生效呢?每個區塊中都有一個哈希值,通過不斷哈希運算,不斷哈希運算(可能是幾億次)最終找到一個比當前哈希小的值,就認為這個區塊被確認。即為交易生效,這個過程就稱為“挖礦”。
那誰來做這個哈希呢?全球那么多交易,如果只是一家公司的幾臺計算機是遠遠不夠的。所以,比特幣有“激勵機制”,當一臺計算機確認了一個區塊,就可以獎勵12.5個比特幣。為了得到Money,越來越多礦工就有動力造更大更多算力的礦機來“挖礦 ”。越多的人參與挖礦的競爭,算力就越分散,比特幣系統就越不可能被某一個人控制。這就形成了“雙贏”的局面,對于礦工來說,想想你每天游山玩水,有一臺機器每天幫你賺錢,源源不斷地打到你的賬戶#滑稽臉。對于創造比特幣的人來說,幾乎不花錢一分錢就能常年安全穩定地運行一套這么牛X的系統,一樣可以去游山玩水而不用擔心系統的維護。
下圖是一幅比特幣交易流程圖:
區塊鏈、比特幣相關概念及工作原理解釋:
新聞熱點
疑難解答