雙重支付的問題:比特幣是如何解決的?
數(shù)字貨幣的概念已經(jīng)存在很長一段時間了,它并不是10年前比特幣第一次出現(xiàn)的時候產(chǎn)生的。然而,我們以前所有的嘗試都失敗了,原因很簡單——雙重支付。
什么是雙重支付?
名稱幾乎完全說明了這一點,而雙重支付則是兩次使用相同金錢的行為。這是一個特定于加密的問題,它不會影響傳統(tǒng)的物理貨幣。一旦你花掉了你的錢,它就離開了你的財產(chǎn),你就不能在其他地方再使用它,因為你沒有它。
對于數(shù)字貨幣,情況就不同了,因為它們更容易復(fù)制和消費兩次。這是任何想創(chuàng)造數(shù)字貨幣的人首先需要解決的問題之一,比特幣的創(chuàng)造者Satoshi Nakamoto想出了一個解決方案。
解決雙重支付的辦法
為了解決這個問題,中本采用了共享公共賬簿的概念,我們現(xiàn)在稱之為區(qū)塊鏈技術(shù)。這種想法也已經(jīng)存在了一段時間,但直到2009年才與比特幣本身一起實現(xiàn)。
這個過程相當(dāng)簡單——比特幣持有者進行的交易與其他人進行的其他交易是分組的。這個組稱為塊,為了確保商人將得到他的錢,以及不會發(fā)生雙重支付,需要驗證分組在塊中的交易。
一個選擇這樣做是有一個能夠集中的第三方進行驗證,但如果是這樣的話,他們將會是一個責(zé)任,任何攻擊,設(shè)法把服務(wù)將對整個加密貨幣體系產(chǎn)生大影響。
比特幣選擇采用的另一種選擇是,讓一大群個人單獨參與解決區(qū)塊(驗證交易),以換取回報。這樣,即使他們中的一些人成為黑客攻擊的受害者,剩下的人仍然可以完成這個過程。在交易被驗證之后,它們被存儲到區(qū)塊鏈中,區(qū)塊鏈作為一種確認,即商家確實得到了支付,并且客戶的代幣確實被花掉了。
如果某人同時進行兩個事務(wù)怎么辦?
這種可能性也存在,如果有人使用相同的資金進行兩個交易,那么首先解決并存儲的交易將被認為是有效的交易。在此期間,第二個將不會通過,商人將不會收到資金??紤]到這可能會對商家造成損害,建議他們在解決了幾個塊(每個塊在10分鐘內(nèi)創(chuàng)建)之前不要發(fā)貨。
正因為如此,商家被建議等待大約一個小時,這樣6個街區(qū)就可以解決。在這一點上,商人將肯定知道他們是否得到支付或被騙,他們可以根據(jù)情況繼續(xù)。同時,客戶無法返回和逆轉(zhuǎn)事務(wù),因為這樣做將占用大量的資源、知識和對區(qū)塊鏈的控制,而這是任何個人都無法做到的。
雙重支付還可能嗎?
不幸的是,理論上有可能進行雙重支消費攻擊,并設(shè)法將同樣的錢花兩次。然而,這在理論上是可能的,但實際上是非常困難的,而且目前還沒有人成功的已知案例。有幾種情況下,這種情況可能會發(fā)生,但是,如前所述,這只能在理論上實現(xiàn)。
1. 種族攻擊
第一種方法叫做種族攻擊,它發(fā)生在那些接受比特幣和其他貨幣以換取服務(wù)的人身上。然而,為了實現(xiàn)這一點,商家必須立即放棄他們的商品,而不是等待其他確認區(qū)塊出現(xiàn)在區(qū)塊鏈上。騙子可能同時使用兩筆交易,如果商家決定不等待確認,則有可能先處理發(fā)送給其他人的付款。
2. 芬尼攻擊
這種類型的攻擊與race攻擊非常相似,只是它是由一個決定嘗試欺騙一個商人的礦商進行的。例如,如果一個礦商擁有兩個地址,其中一個擁有比特幣,他們可能會將BTC從一個地址發(fā)送到另一個地址。然后,他們對數(shù)據(jù)塊進行挖掘,但不廣播結(jié)果,因此交易仍處于一種“不確定狀態(tài)”?!霸谶@一點上,他們可能會欺騙商家,選擇不等待額外的區(qū)塊被解決,并在收到雙倍付款后放棄他們的商品和服務(wù)?!?/p>
這是當(dāng)?shù)V商廣播包含其原始事務(wù)(即它們發(fā)送給自己的事務(wù))的塊時。在這種情況下,發(fā)送給商人的交易將由其他人來解決,它將無效,因為相同的錢已經(jīng)發(fā)送到礦商的第二個地址。
3. 51%的攻擊
第三種也是最后一種攻擊形式是51%的攻擊,只有控制了區(qū)塊鏈網(wǎng)絡(luò)一半以上的哈希率的人才能進行這種攻擊。這在理論上也是極其困難的,因為沒有人有足夠的資源和計算能力來與正在工作的大型真實礦商集團競爭。
在這個場景中,他們可能使區(qū)塊鏈的一個私有分支看起來像主鏈,因為由于更高的哈希率會出現(xiàn)更多塊,所以它會變得更快。通過這種方式,他們可以欺騙商家,讓他們以為他們收到的錢以前沒有花過,而實際上,攻擊者是在執(zhí)行雙重花費攻擊。