比特幣1個確認和6個確認的區別在哪里?什么是雙花問題?
一個問題:比特幣或者ETH充提幣的時候只有1個確認就給用戶確認到賬,可以申請提幣有什么安全性問題嗎?(網上默認的安全確認數是6和12,問了錢包的同事說只要有1個確認這筆交易就肯定到鏈上了,即使在分叉上也會最終合並進去的只是交易所往前掃鏈確認的時候可能掃不到,但幣最終會到。但eth轉賬不是有很多種情況會導致最終失敗嗎?1個確認后確定不會再失敗了?失敗的話就連一個確認都沒有嗎?1個確認和6個確認的區別在哪里?)
會不會導致幣最終沒充到交易所地址上?
實際幣沒充成功,卻給用戶確認成功在數據庫里增加幣的數據可以交易或者提幣了呢?
區塊鏈是可以往前追溯的,6個確認就說明連續6個區塊都包含了這個交易ID,要攻擊的話得在6個區塊之前進行挖礦並成為主鏈。算力要大於6個區塊才行。
可以重新發送交易,不同節點同時發,就是雙花問題
比如這個區塊鏈是10分鍾確認一次,全網51%的算力每10分鍾的成本是10萬元。你賣的鑽石價值100萬元。那么你至少要10個確認以上才能交付鑽石。最好是20個以上確認。
總之,預防雙花攻擊,一個基本的原理就是,讓攻擊者賠錢的概率遠遠高於你被雙花的概率。
區塊鏈應用也類似,整個區塊鏈技術的核心就是保障賬本的安全,記了賬就不能被雙花。但安全不是絕對的,即使記了賬,仍然有可能被雙花。因為,區塊鏈應用不是依靠中央銀行這樣的機構的權威來保障賬本安全的,而是依靠分布世界各地的節點都保存統一份的賬本,並且由全世界的礦工用算力來競爭記賬,產生完全一致的新賬頁的。
當有人掌握了全網51%以上的算力時,就能夠將剛剛記過的賬頁作廢,把里面的一筆花費恢復成沒被花掉的狀態。這就是記賬后的雙花了,這種攻擊方法叫“51%攻擊”。這種雙花相對於記賬前的雙花比較難實現,因為掌握51%算力需要很多錢。但如果雙花的收益足夠大,攻擊仍然是有可能的。
所謂雙花問題,顧名思義,就是一筆錢被重復花了兩次。比如,我們微信錢包里有100塊錢,我們先去飯店吃了頓飯,結果微信出了bug,這一筆錢並沒有被銀行同步,還留在錢包里,於是我們又能拿着同樣的100塊錢去看場電影,這就屬於雙花問題。
一般來說,雙花問題分為兩種情況:一種是記賬前雙花,比如同一筆錢,因為銀行同步延遲的問題,被多次使用,像我們剛才舉的例子就是這種情況;另一種是記賬后的雙花,一筆錢花出去,銀行已經記賬,但如果你攻擊銀行,從銀行賬本上刪除了這筆花費,就可以再花一次了,即雙花。
怎么辦呢?
解決的辦法是,等待更多確認。51%的算力要作廢最新賬頁,其成功概率是51%,但作廢連續兩個新賬頁的概率就是51%*51%=26%,作廢3個的概率是13.3%,作廢6個的概率只有0.46%了。如果攻擊者沒有掌握51%的算力,只掌握20%的算力,那么攻擊成功的概率就只有0.0064%了。
這樣,問題就簡單了。商戶可以根據交易金額的大小來決定如何防范雙花。
如果交易金額很小,比如賣支鉛筆,完全可以接受零確認,對用戶既省時又貼心。萬一雙花也不在乎。如果交易金額大一些,比如賣件衣服,那建議等待一個確認就可以了。不會有黑客為了你一套衣服動用51%的算力發起攻擊的。如果交易金額很大,比如買鑽石,那就要小心了。要根據全網算力的成本估算一下需要多少個確認,金額越大,需要的確認數就越多。
確認數要做成用戶可以根據情況配置的才合理
交易所1個確認就到賬我感覺還是有很大的風險的,個人錢包1個確認顯示到賬就無所謂,個人錢包沒有到賬是轉不出去的。
交易所提幣不是從用戶子錢包轉賬的,是交易所的熱錢包轉賬給外部地址的。
交易所確認后數據庫記賬完他就可以到幣幣交易里面交易了,可以申請提幣了,可能把交易所熱錢包里的幣提走的。
就要看交易所有沒有做異常預警機制了
結合實際情況,最好是可以讓用戶根據情況配置確認數
你們說的這些我們都知道,這個要考慮實際應用場景
omni一個充值,6個確認,趕上高峰期,兩個小時到不了都很正常
不要急着把事情想到最后的場景
比如說多花問題,黑客充幣到交易平台,他需要充值多少?什么樣的條件才能讓他有動力去碰着個51%
碰了這個51%,交易所會不會發現,會不會讓他走
現在btc用1的原因就是大部分情況下滿足業務要求,考慮總體性價比
肯定是有地方的原因讓我們做出了取舍
讓用戶自己取舍配置交易確認數我覺得會更完美
充幣容易,提幣難,不然要審核員干啥,當然有提示
我之前的做法是,如果交易有變化,數據庫做相應更新
這只是理想狀態下的情況,黑客有很多方法可以搞的,比如不用自己的賬號提幣,通過幣幣交易讓很多其他賬號買到幣再去提幣。或者提前在另外交易所做空某個幣種,然后集中砸一個幣讓他暴跌等實現套利
安全無小事,更多需要綜合考慮問題才能找到最優解決方案。