在信息互聯網的世界里復制粘貼是可以無限可復制零邊際成本,而在
區塊鏈充滿各種
數字貨幣里若是也存在無限可復制的話,就不會被承認被流通被交易了。換一種說法是多重花費,將數據復制就可以重復花費,區塊鏈的技術精髓就在于解決信息的無限可復制性,轉變成有價值的信息有價值的數據。
什么是“雙花問題”?
因數字貨幣是二進制的代碼,是可以復制的數據,存在一筆數字資產被重復使用的情況,這就是所謂的“雙花”。一筆資產可以花兩次甚至花多次。
我們知道作為中心化的支付平臺第三方是保留交易總賬來保證每筆數字現金只會被花掉一次;而作為去中心化的區塊鏈里數字資產,雙花問題是如何出現的呢?
先假設一個場景,一般 用戶
場景1:詐騙者使用數字貨幣購買數字產品如買一本電子書,價格為1個EOS。他先將EOS發送給店家,假設這筆交易是tx1;然后同時將相同數量EOS發給自己另外一個錢包地址,稱這筆交易為tx2。店家網站程序檢測到交易tx1后,覺得沒有問題,程序自動發電子書過去;但因交易tx1和交易tx2是相沖突,礦工只會在一個時間點打包一個交易,萬一不小心都打包了,其他節點礦工會驗證并拒絕這個區塊打包成功,所以如果交易tx2打包成功了,交易tx1會作廢,這種情況下,詐騙者成功雙花了EOS,即買到了電子書,也收回了自己的EOS。
解決辦法:這種場景下的雙花比較好解決,店家網站程序自動發電子書前,先讓區塊確認交易,至少一個區塊交易,而只有被至少一個區塊確認過的交易,就會蓋上時間戳且之前從未存在過,才被認為交易的有效性。目前
比特幣的交易要被6個區塊確認才算安全有效可靠,以避免孤立區塊的情況;EOS的充值確認在
幣安里是需要至少32個區塊確認數。
另外一種場景,假設詐騙者是礦池或礦工。
場景2:詐騙者礦工先構造交易tx1和tx2,tx1的手續費很低,將tx1發給商家買電子書,但是交易tx2隱藏起來不廣播,只保存在自己的區塊內。因為tx1的手續費太低,所以其他節點礦工們不想打包;而tx2被隱藏起來了,所以區塊鏈瀏覽器是不可能發現有相沖突的交易,商家也就不可能發現。當商家認為是正常的交易一旦發貨了,詐騙者礦工就會在自己挖到的區塊打包進去,這個時候廣播這個區塊,全網所有的節點就會發現tx1是非法的了,直接作廢掉,商家就收不到幣了。
解決辦法:想防御這類雙花攻擊就要依賴其他礦池礦工的協作。因為詐騙構造的tx2交易是不會被廣播的,是以直接打包進詐騙礦池挖到的區塊才會被其他礦池發現。如果其他礦池如果針對這種包含了延遲出現交易(tx2)的區塊進行孤立,那這個詐騙礦池的這個塊就白挖了,損失區塊獎勵,這是非常慘的事。具體的設定可以是礦池將超出一定時間,比如10秒內,都沒有見到的交易(tx2),卻包含在最新的區塊里,則直接孤立掉這個塊,在這個塊的前一個高度上挖礦。
如果執行這種孤立政策的算力超過51%,那基本上就沒有礦池敢發起這一類隱藏交易(tx2)來攻擊零確認交易了。
小結
避免數字貨幣的“雙花問題”,主要就是交易成功后的區塊確認數,比特幣的區塊確認數達到6就非常安全,雙花問題基本上不可能出現,除非礦池的算力超過50%了,就可以為所欲為,雙花在這種情況下算蠅頭小利,強制分叉獲利遠遠大于雙花獲利。
另外判斷交易是否合理,不僅僅是礦池節點,任何一個核心節點都會進行。即查詢歷史區塊鏈,判斷交易的輸出是否不大于輸入。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。