2008年,由美國次貸危機引發的金融危機開始席捲全球,世界經濟開始全面衰退。
2008年11月1日,這個歷史性的時刻,一位自稱中本聰的人在網路上發表了《比特幣:一種點對點的電子現金系統》的白皮書,文中描述了一個全新的數字貨幣系統:比特幣。satoshi nakamoto釋出了《bitcoin: a peer-to-peer electronic cash system》
比特幣產生方式
我們約定如此:每個區塊的第一筆交易進行特殊化處理,該交易產生一枚由該區塊創造者擁有的新的電子貨幣。
價值背書
這種將一定數量新貨幣持續增添到貨幣系統中的方法,非常類似於耗費資源去挖掘金礦並將黃金注入到流通領域。此時,cpu的時間和電力消耗就是消耗的資源。挖礦原理
工作量證明(proof-of-work,pow)
我們在區塊中補增一個隨機數(nonce),這個隨機數要使得該給定區塊的隨機雜湊值出現了所需的那麼多個0。
工作量證明函式(sha256())
比特幣系統中使用的工作量證明函正是sha256。是由美國國家安全域性設計,到目前為止,還沒有出現對sha256演算法的有效攻擊。
比特幣的區塊大約每10分鐘生成一個,每2016個塊調整一次難度,調整公式:
新難度值 = 舊難度值 * ( 過去2016個區塊花費時長 / 20160 分鐘 )
目標值(target)
0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
比特幣工作量證明的目標值的計算公式如下:
目標值 = 最大目標值 / 難度值
coinbase交易
可以把比特幣礦工解這道工作量證明迷題的步驟大致歸納如下:
1.生成coinbase交易,並與其他所有準備打包進區塊的交易組成交易列表,透過merkle tree演算法生成merkle root hash
2.把merkle root hash及其他相關欄位組裝成區塊頭,將區塊頭的80位元組資料(block header)作為工作量證明的輸入
3.不停的變更區塊頭中的隨機數即nonce的數值,並對每次變更後的的區塊頭做雙重sha256運算(即sha256(sha256(block_header))),將結果值與當前網路的目標值做對比,如果小於目標值,則解題成功,工作量證明完成。
即:sha256(sha256(block_header)) < target
挖礦的本質
工作量證明方案解了一個比拜占庭將軍問題更難更挑戰的問題,就是在參與者集合未知的情況下,實現共識的一致性,支撐比特幣安全的去中心化的自發共識機制。比特幣只是對完成工作量證明節點的一種獎勵形式。