在開放網路中,「資訊」包括文檔、圖檔、影音等檔案,在網路中的流通,傳送的都是副本而不是原始檔案。當我們再傳送資料時,你會發現,當對方接受到時,我們的電腦依然保有原始檔,對方收到的則是複製品,以「資訊」來說「無限複製」是一個優點,有助於資訊的傳遞與大眾化,然而,當我們要在開放網路中傳送有「價值」的數位資產時,「無限複製」便成為了難以解決的問題。
雙花問題
在密碼學中常說的「雙花問題(Double Spending)」是指,數位資產在開放網路中,會因為「無限複製」的特性,而導致一筆資產被重複花費。時至今日,在網路中進行價值轉移的解決方案都是透過大型中間機構例如政府、銀行、信用卡公司、社群媒體或科技巨頭等第三方單人中間人,處理身分驗證、信用評級以及交易結算等交易流程。然而,這種解決方案卻存在諸多問題例如高成本、耗時、資訊不對稱以及中間人掌握控制權等。更重要的是,中間人機制只是幫助我們透過互聯網實現價值轉移,並沒有真正解決開放網路中的雙花問題。
2008 年,「比特幣:點對點電子現金系統」白皮書問世後,才真正提出長久以來雙花問題的解決方案。比特幣的分散式帳本系統讓網路中數百萬個參與者透過共識機制共同維護帳本,讓每一筆比特幣交易,都被完整的紀錄在帳本中,且該系統不可竄改與去中心化的特性,能夠保證每一筆交易紀錄的有效性與帳本安全。而比特幣的分散式帳本系統也是世界上第一個在開放網路中解決雙花問題的系統。
雙花問題,區塊鏈的潛在問題
雖然區塊鏈的帳本系統,解決了雙花問題,但是,在交易達到最終性前,都有可能因為區塊鏈的臨時性或惡意分叉,導致該筆交易被回溯並重新驗證,甚至被其他交易取代,以比特幣為例,必須在得到六個確認後,才能確認交易的最終性。換句話說,攻擊者仍然有可能利用交易尚未達到交易最終性的這段期間達成雙花攻擊。
具體的雙花攻擊是甚麼樣子呢?舉一個簡單的例子:假設我錢包只有 10 比特幣,我花了所有比特幣買了一台車,但是,我同時發起兩筆交易,一筆「將 10 比特幣打給汽車公司」另一筆「將10 比特幣打給自己」。如果汽車公司看到該交易得到 1 個確認後就交車了,此時比特幣區塊鏈又正好處於臨時性分叉狀態,那原本給汽車公司的 10 比特幣就有可能被另一筆交易取代掉,如此一來我就能夠在沒有花費比特幣的狀態下,買到一台車。
所以進行比特幣交易時須要記得,確認數越多,交易失敗的可能性越低,普遍認定 6 個確認(大約一小時)後即達到交易最終性。換句話說,為了避免受到雙花問題的影響,使用者最好等待 6 個確認後,再認定該筆交易已完成,不會再改變。