比特幣白皮書粗解

##白皮書

        區塊鏈白皮書相當於論文的摘要,主要是用來告訴閱讀者,作者發現了什麼問題,通過什麼辦法來解決這些問題,且說明解決這個問題的方式及其優勢,以有理有據的論點來論證。

##比特幣白皮書

        文中提出了一種基於密碼學原理完全通過點對點技術實現的,杜絕回滾交易支付的電子現金系統,它使得在線支付能夠直接由一方發起並支付給另外一方,中間不需要通過任何的金融機構。該系統中數字簽名可以解決部分問題,但爲了防止發生雙重支付問題發生,採用了隨機散列方法並且給每筆交易都加上時間戳,使用工作量證明機制(POW)來記錄最長的鏈,交易記錄不可更改。

##拜占庭將軍問題

        故事背景:拜占庭帝國想要進攻一個強大的敵人,爲此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊。基於一些原因,這10支軍隊不能集合在一起單點突破,必須在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通信兵相互通信來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們能否找到一種分佈式的協議來讓他們能夠遠程協商,從而贏取戰鬥?這就是著名的拜占庭將軍問題。

        “拜占庭將軍問題”其實是一個共識問題:如果所有將軍都是忠誠的,當然沒有問題,根據大多數將軍投票結果就好了。但是問題在於,將軍中可能有叛徒。假設9位將軍投票,4人投進攻,4人投撤退,剩下1人是叛徒,他選擇告訴進攻的4人他投進攻,告訴撤退的4人他投撤退,那麼結果就悲慘了。

        比特幣系統成功解決了“拜占庭將軍問題”,採用的是工作量證明機制(POW),只要沒有超過51%的算力合作起來攻擊全網,那麼正確記錄交易信息的節點將會生成最長的,超過攻擊者的鏈條。這個系統本身需要的基礎設施非常少。信息盡最大努力在全網傳播即可,節點可以隨時離開和重新加入網絡,並將最長的工作量證明鏈條作爲在該節點離線期間發生的交易的證明。若果要攻擊整個網絡,是需要付出巨大代價的,就是要掌握整個網絡51%以上的算力。

##關於交易

        比特幣交易由發起方輸入轉出方地址,接收方地址,數量,及手續費,交易發起後,當前節點則會向附近節點廣播該交易,每隔十分鐘,礦工進行一次打包,將未被確認的信息放在資金池中進行打包記賬,交易信息記入區塊中。在此需特別提醒的是:

        1、比特幣的交易費是按字節收費的,普通的一筆交易大概是250個字節,手續費在0.001-0.0015BTC,手續費越高,礦工則優先進行打包記賬。

        2、比特幣地址是有字母和數字組成的26-34位的字符串,交易時轉出方的地址加上數字簽名,時間戳等,用來混淆。

        3、礦工的激勵除了可以挖礦獲得比特幣,也可以通過交易確認和數據打包來獲取手續費。

        4、交易可以從一個賬戶同時轉給多個賬戶,但需切找零機制❶是需要廣播該筆交易餘下的轉回自己的賬戶,否則會被記爲手續費歸礦工所有。

        5、交易信息的確認包括輸入和輸出,需要判斷輸入的地址是否存餘額(所有礦工都有這個賬本),以及這個上面附帶着這個輸入方對應的數字簽名❷(所有人可以驗證是否正確,但無法僞造)是否有效。只要符合就可以認爲交易是成立可以記錄的。


        注:

        1、找零機制:個人認爲這個是比特幣客戶端坑新手的機制,通過離線簽名發送比特幣,全部細節都由你自己完成,需要記得將剩餘的金額髮回你自己的地址就行了。舉個例子:

          轉出方地址A1,有比特幣38個,還有一個地址是A3,現在去A2的店鋪購買東西話費了3個比特幣,手續費是1個比特幣,現在可以輸入如下:

輸入:A1 38個

輸出:A2 3個 A3 34個

        2、數字簽名:利用密碼學的技術保證身份驗證的的可靠技術,該技術是區塊鏈技術的根基技術之一。簡單來說就是,比特幣轉賬的轉出方生成的,一段方僞造的字符串,通過驗證該字符串,一方面驗證該交易是轉出方發起的,另一方面證明交易信息在傳輸過程中沒有被更改。同時,數字簽名加密的私鑰和解密的公鑰是不一致的,採用的非對稱加密技術。這裏需要指出的是,公鑰相當於銀行卡的賬號,是公開的,礦工手裏都存有,可以進行驗證;而私鑰相當於銀行卡的密碼,僅當事人保存,可以在線存儲也可以離線存儲,在比特幣系統中,誰手持私鑰,誰就是比特幣的主人。

           數字簽名的具體流程,舉個例子來講:

          A向B借錢,需要寫欠條,欠條內容爲“借錢1000元,下個月還款1500元”下面簽名,要確保這內容是真實正確的,A先將文本“借錢1000元,下個月還款1500元”      用哈希算法處理一次,會得到一串沒人看懂的,也不可逆的字符。

         然後A用A的私鑰對這段字符加密,加密後是一段密文,這段密文就是A的數字簽名。

        鑑別電子簽名是否是A簽署的,過程如下:

        鑑別先把文本 “借錢1000元,下個月還款1500元”  哈希一下,會得出相同的內容,然後用公鑰來解密,如果解密的文本和鑑定方自己哈希出來的內容完全一樣,這裏是“===”即恆等,那麼就證明這段文字是有A簽署的。   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章