怎麼使用區塊鏈解決比特幣的雙重支付問題?

什麼是雙重支付,簡單而言,就是一筆錢花了兩次。
這個問題主要出現在數字貨幣的世界裡,因為在這個世界你的錢只是一串數字,複製很容易。

而現實世界裡,紙幣上有非常嚴格的防偽標識,很難複製,並且還有銀行這樣的中心化的權威機構確保你的交易唯一性,所以幾乎不會出現這種問題,除非中心化機構數據出現問題。



怎麼使用區塊鏈解決比特幣的雙重支付問題?


雙重支付怎麼出現的?


首先,比特幣系統基於分佈式的區塊鏈。可以理解為,由很多人同時各自維護一份賬本。交易的有效性實際上是由賬本的一致性,也就是大多數人的認可來決定的。


當支付發生時,實際上是你向其他人發出廣播,我支付給商家300元。所有人都會聽到這個消息,於是都會在小本本上記下,你支付給商家300元。


但是不排除你因為各種原因和目的,在發出一條支付給商家的廣播的同時,發出一條廣播,宣稱你將這300元支付給了你老婆。於是雙重支付產生。


但是每個人只會記錄其中的一條消息,先收到那條就記錄哪條。這是因為,對於其中一個人來說,假如先收到支付給你老婆的消息,那就認為另一條支付的消息是非法的。


也就是說,有些人記錄了你支付給商家,有些人記錄了你支付給你老婆,整體來看,是有分歧的,但無論是誰的賬本,只會記錄其中—條記錄。


怎麼使用區塊鏈解決比特幣的雙重支付問題?



怎麼解決雙重支付


在數字貨幣中,比特幣會對前一次的交易和下一位擁有者的公鑰簽署一個數字簽名,將這個簽名附加在比特幣的末尾發送給下一位所有者。而由於沒有第三方機構去做監控,所以需要一個機制去確保比特幣之前的所有者沒有對更早發生的交易實施簽名。比特幣是怎樣解決這個問題的呢:


1、 所有的交易全網公開:歷史交易全網公開,那麼每個賬號裡面有多少比特幣,並不是由一個數據來表示的,而是根據歷史交易得出來的。而這個歷史交易鏈是經過全網公認的,才能保證不被造假。


2、 需要有時間戳,所有交易有先後順序:所有交易,要按照先後順序,給其加上時間戳,前面一筆交易成功後,整個交易鏈被公認後,下一筆交易是基於上一筆交易來生成的,整個交易就是一個交易鏈,這樣才能保證不被雙重支付。


3、 需要投入計算資源對交易進行確認:交易的確認,需要投入計算資源來確認,比特幣引入了工作量證明,礦工投入計算力來打包交易,若需修改某個區塊上的交易,需重新計算自區塊以來所有區塊。


怎麼使用區塊鏈解決比特幣的雙重支付問題?


比特幣網絡中有著無數節點,每一個節點都能獲知每一筆交易的發生,而每一筆交易都有著先後順序,存在著一個所有人公認的交易序列。只有當大部分節點都認同這筆交易是首次出現時,這筆交易才能夠發生。


你要說這個系統有什麼風險嗎?萬物無絕對,肯定是有的。唯一能夠讓整個比特幣系統奔潰的是,當有一個人擁有超過整個系統51%的計算能力,那麼他就能夠更改任何一筆交易記錄,這也就是所謂的“51%攻擊”。但我們都知道,這幾乎是不可能的。


分享到:


相關文章: