背景:2008年,國際金融危機下,人們因為金融系統(tǒng)的崩潰,從而失去工作,甚至有人傾家蕩產(chǎn), 這時候,有一個網(wǎng)絡極客看到這一幕幕人間慘劇,心里暗罵:為什么華爾街這幫家伙造的孽需要全球來買單? 我要改變這種情況.
于是,這位現(xiàn)代俠客開始了他的計劃,他先是在2008年在網(wǎng)絡上發(fā)布<比特幣:一種點對點的電子現(xiàn)金系統(tǒng)>,一場偉大的社會實驗就此開始.
比特幣的實質(zhì)是去中心化的電子記賬系統(tǒng).
通常來講我們會通過銀行進行記賬, 銀行是以國家來為其背書的.所以大家都愿意去相信銀行,并且把錢存在里面.
比特幣的設計原理規(guī)避了銀行這種中心化的架構.
基本原理說明:
比如現(xiàn)在有A\B\C\D 四個人, 如果互相之間發(fā)生交易(如A給B10個比特幣,B給C3個比特幣,etc.),會把信息公開告訴所有人,然后每個人都要進行記賬. 那么問題來了:
1.ABCD憑什么要記賬
2.最后以誰的賬本為準
3.如何防偽?
4.如何防止雙重支付?
5.如何防止篡改?
接下來一個一個來看中本聰同學是如何解決這些問題的.
1.ABCD憑什么要記賬
記賬有獎勵,想讓人做某件事情,就是讓他有獎勵.人性哪.
1)記賬的人會得到手續(xù)費,比如A付給B10塊錢,C記的賬,C會從中得到一定的手續(xù)費.
2)打包獎勵,只能有一個人完成打包,打包會有人得到獎勵. 完成打包的人會得到50個比特幣(BTC)的獎勵
打包 注:中本聰設計賬本記錄要在10分鐘左右完成一個打包,打包的結果我們稱為區(qū)塊(區(qū)塊內(nèi)約有4000條交易記錄) 據(jù)以上,可以算出比特幣大概有多少個, 20*6*24*365*4*1+1/2+(1/2)^2+....)=2100萬個
2.最后以誰的賬本為準
工作量證明(Proof of work) 簡單理解就是,系統(tǒng)會出一個很難的數(shù)學題,如果誰先做出來了,就可以獲得獎勵.但是這個數(shù)學題非常難,難到只能通過窮舉法,一個一個試出答案,試答案的過程我們就叫做挖礦.
引申:哈希函數(shù)sha256("美女")=256位的二進制數(shù)
這個函數(shù)的特點在于,你隨便輸入什么,都能很快的得到256位的二進制數(shù).
舉個類比的例子說明:對于X^5+LOG2X=Y, 如果你輸入X=a, Y
快就能算出來,但是給你Y,讓你算X,就會難得多.而哈希函數(shù)就比這個還要難很多.
挖礦原理:
D-D-D-D-…
以上每個D代表一個區(qū)塊,每個區(qū)塊的里面包含的信息: 前塊頭部+賬單信息+時間戳+隨機數(shù)=字符串(先不要管字符串怎么來的)
對字符串進行哈希運算 HASH=SHA256(字符串)=256位的二級制數(shù)
對256位的二級制數(shù), 通常會要求前n位為0(通常設置難度即設置n的大小,調(diào)整n的大小來控制出塊時間),如果誰先試出來這個結果,就有資格去打包區(qū)塊. 這個幸運兒就能再把一個新的D(區(qū)塊)接到上面的區(qū)塊鏈中.并獲得相應獎勵.
要怎么算出來這個256位數(shù)字. 就需要挖礦的人(礦工)不停的進行試以上公式中的隨機數(shù).直到試出來.
注意,每個人在計算的時候難度是不一樣的,因為每個人記錄的賬單信息和時間戳及個人信息都不一樣.但是一般來講,誰的算力更強,即試得更快更多,誰挖到的概率就大.
3.如何防偽?
先從身份認證說起,傳統(tǒng)的身份認證方式有簽名\指紋\人臉等,但是不夠安全,現(xiàn)實中易被偽造
如何解決這個問題呢?
電子簽名!
怎么來的: 隨機數(shù)-->私鑰-->公鑰-->地址
公鑰和地址可以公開,比如你想讓人轉(zhuǎn)錢給你,可以把公鑰和地址給他. 但是私鑰要保密,不能給!
私鑰可以算出公鑰,但是公鑰算不出來私鑰,密碼學上這種關系稱為 非對稱加密
通過實例來理解:
比如A給B轉(zhuǎn)1個比特幣,A會對這個信息進行HASH哈希運算得到一個摘要,然后利用私鑰對摘要進行加密得到密碼. 然后A要對全網(wǎng)進行廣播這個信息+<公鑰>+<密碼>
比如C聽到廣播后, 會進行驗證這條信息是不是真實發(fā)生的. C會對進行哈希得到摘要1,同時用A提供的<公鑰>+<密碼>得到摘要2,如果摘要1=摘要2,就說明這條信息確實是A用自己的私鑰加密出來的. 如果不一樣,就說明這條信息是偽造的,不是A發(fā)起這筆交易的
4.如何防止雙重支付?
1)首先要理解余額檢查-追溯法,比如你要付錢給別人,至少要證明有足夠的錢. 比如A給B轉(zhuǎn)1個比特幣, 那么在歷史的區(qū)塊鏈上就可以看到過往的記錄,看是否A在歷史上得到過1個比特幣.
2)什么是雙重支付,也叫雙花,就是同一筆錢你用了兩次,比如A同時發(fā)出兩條消息1-A 付錢給B 1個BTC, 2-A 付錢給C1個BTC. 網(wǎng)絡上接收到這兩個消息的人時間不一樣. 此時比如D先接收到1-A 付錢給B 1個BTC并且算出了數(shù)學題,然后打包區(qū)塊并接上鏈.此時1-A 付錢給B這條信息會被確認,而 2-A 付錢給C1個BTC就會被放棄.
5.如何防止篡改?
先來理解最長鏈原則,如果網(wǎng)絡中有A和B幾乎同時算出了數(shù)學題并進行打包上鏈后怎么辦,此時鏈上會有兩個分叉,這個時候我們通過時間來解決,看兩條鏈過一段時間后哪一個最長,最長鏈的那條會有越來越多的人站位直到最后所有人拋棄那條短的鏈
理解之后我們再來看如何防止篡改
比如A之前發(fā)生過一筆交易A to B 1個比特幣,但是A想對這條記錄進行篡改怎么辦?
回到我們的鏈來 D1-D2-D3-D4-…
比如A想篡改的這筆交易發(fā)生在D2區(qū)塊,他需要從D1往后開始篡改,這個工作量會很大,相當于一人對抗全世界.理論上如果A的計算能力超過所有人,他是可以完成篡改的. 但是這種概率會很小,首先沒有人有如此大的計算能力,至少在可預見的未來沒有;其二,如果他有這么大的計算能力,他可以繼續(xù)挖礦賺錢(除非他是瘋子或者科學怪人)否則不會去做分叉.
總結,通過以上五個問題的解決,中本聰同學探索出了一條不需要銀行等中間商從而實現(xiàn)人人認可的記賬方案.這是一個偉大的發(fā)明.而且即將對未來的人類社會造成巨大的影響. 比特幣只是區(qū)塊鏈的一個應用,猶如電燈之于電力的發(fā)明. 實際上底層技術是區(qū)塊鏈技術,這個技術會大大降低人與人,點對點的信任成本.從而降低社會運行的成本.
其實還有很多細節(jié)的問題沒有提到,感興趣的同學可以了解 拜占庭將軍問題-如何解決惡意節(jié)點從而保證信息的一致性等.
文章內(nèi)容借鑒李永樂老師視頻內(nèi)容,并加以個人理解.僅用作學習與分享,不做任何商業(yè)用途.希望將區(qū)塊鏈的知識分享給有緣人.
閣閣