1. 程式人生 > >從第一行代碼開始開發區塊鏈(一)

從第一行代碼開始開發區塊鏈(一)

-o 中心 備份 分布式 執行 問題 str 機器 -i

技術分享圖片
傳送門: 柏鏈項目學院



為什麽會出現比特幣呢?

??比特幣的白皮書標題已經說的很清楚了,中本聰只是為了打造一個點對點的現金系統,這套系統只要有終端上開啟了該客戶端,就會成為一個數據備份的副本,只要全世界還有一臺機器運行該客戶端,那麽比特幣網絡就會永遠活下去!

??法幣已經在廣泛使用了,為什麽還要發明比特幣呢?針對目前全球一體化的形勢,各個國家法幣在兌換、使用上還是會存在一定問題,比特幣的出現相當於給世人提供了這樣的一個想法,完全靠數字加密算法實現的貨幣方式,人們在交易時可以極大的提升效率,當然首先得有人認可比特幣的價值才行。各個國家的法幣之所以存在價值,是因為有強大的國家機器在為其背書,比特幣目前只能靠共識機制。其實法幣還有一個問題,這個道理大家都懂。

為什麽要使用區塊鏈?

??隨著比特幣的火爆,比特幣背後的技術區塊鏈也從後臺走向了前臺。為什麽要使用區塊鏈呢?

??數字貨幣與法幣本質上沒有區別,都是代表一定價值,並且便於流通。擺在中本聰面前有幾個問題:如何發行,如何分配,如何避免雙花?數字貨幣有一個大問題必須解決,這個問題就是如何防止一份價值多次使用,俗稱雙花。這在中心系統下的數據庫可以很容易借助事務機制來解決,但是在分布式網絡就沒這麽簡單了。當然如果是中心化系統,又會存在其他問題,比如數據可能被篡改。

??中本聰給比特幣的賬戶模型使用了一個叫utxo的解決方案。Unspent Transaction Output是每次統計一個賬戶地址的所有入賬和出賬,最後判斷出該賬戶地址還可以支付多少比特幣。回到上面的問題,中本聰如何解決雙花問題呢?其實和數據庫的思路類似,他采用的是順序執行法,他設計了區塊鏈這項技術解決方案,通過順序產生的區塊去記錄任何一筆交易信息,而區塊是有序的,這樣任何一筆交易都可以追述,任何一個賬戶的地址的入賬和出賬也都可以追述。

??中本聰又設定了工作量證明機制(pow)。也就是如果想往鏈表後增加一個塊,必須完成一道復雜的數學運算--hash,這個運算沒有投機取巧的方式,只能一個一個數字來嘗試,我們習慣上把這件事情叫挖礦,做這件事情的人叫礦工。那麽問題是礦工們為什麽要去挖礦?為了鼓勵礦工,也同時為了解決比特幣的發行問題,中本聰設定挖礦獲得系統比特幣獎勵!礦工幫助交易者在比特幣網絡中維護賬本,一舉兩得,既可以獲得挖礦的獎勵也可以賺取交易手續費。

??現在回過頭來,仍然要贊嘆這個設計的巧妙,可以說形成了一套閉環的體系。比特幣完全確認交易一般要6個塊產生,還有一個問題就是如果一個礦工想做壞事,只要他的計算能力夠強就可以,他能在其他人計算的同時積攢了6個塊而不對外廣播,他就可以按照自己的想法記賬(俗稱分叉 )。這個其實中本聰也考慮到了,因為比特幣網絡早期的時候,比特幣根本不值錢,有一個哥們就是花了2w個比特幣買了一個披薩,這個時候也沒有人願意去做這個壞事。而當比特幣的價值逐漸被大家接受時,如果礦工去那樣作惡,其實在破壞比特幣的生態,導致比特幣貶值,反不如他挖礦獲得比特幣來的劃算。



技術分享圖片

從第一行代碼開始開發區塊鏈(一)