晴天財(cái)經(jīng)閣9星評(píng)價(jià)
2018-02-25 13:01:32
什么是雙花
雙花就是同一枚比特幣被使用兩次,但是無論在比特幣網(wǎng)絡(luò)中還是現(xiàn)實(shí)世界都不可能發(fā)生,就像在現(xiàn)實(shí)中你不能用1塊錢買個(gè)蘋果,又用同一張1塊錢買橙子。如果這都可以的話,錢就變得毫無價(jià)值了,因?yàn)檫@樣每個(gè)人都會(huì)擁有無數(shù)多的錢,用也用不完,貨幣價(jià)值也就沒有了。比特幣核心網(wǎng)絡(luò)在比特幣區(qū)塊鏈中驗(yàn)證每筆交易來防止雙花。
那比特幣網(wǎng)絡(luò)如何防止雙花呢?
假如你有1個(gè)比特幣,你想要花兩次。于是你向商家買了價(jià)值1個(gè)比特幣的商品。然后,你再在另一個(gè)比特幣地址上簽名,并發(fā)送相同的1個(gè)比特幣。
兩筆交易都進(jìn)入了還未進(jìn)行驗(yàn)證的交易池。你的第一筆交易得到了確認(rèn),并在下一個(gè)區(qū)塊中得到了礦工的工作量驗(yàn)證。但是礦工會(huì)認(rèn)為第二筆交易是無效的,這樣就沒辦法獲得足夠的確認(rèn),就會(huì)被撤出網(wǎng)絡(luò)。
但是如果這兩筆交易是由礦工同時(shí)操作呢?
當(dāng)?shù)V工同時(shí)從池中提取交易時(shí),獲得網(wǎng)絡(luò)中確認(rèn)數(shù)量最大的交易將會(huì)保留在區(qū)塊鏈中,而另一個(gè)將被撤出。也有可能真實(shí)的那筆交易無法獲得確認(rèn)。這就需要6次確認(rèn)機(jī)制。6次確認(rèn)”就是在這筆交易被添加到區(qū)塊鏈之后,另外6個(gè)包含多個(gè)其他交易的區(qū)塊就會(huì)被添加到這個(gè)區(qū)塊之后。每一個(gè)都需要6次確認(rèn)”,且都和前一個(gè)區(qū)塊有關(guān)聯(lián)。所有這些確認(rèn)和交易都在加上了時(shí)間戳,這就使得區(qū)塊不可逆轉(zhuǎn),而且無法篡改。
而當(dāng)你掌握的算力超過50%時(shí),就可以無限逆轉(zhuǎn)區(qū)塊。但是有些區(qū)塊鏈網(wǎng)絡(luò)已經(jīng)非常之大,想要和它對(duì)半抗衡是不可能的,但有一些區(qū)塊鏈網(wǎng)絡(luò)比較小,節(jié)點(diǎn)比較少,也有可能遭遇51%算力攻擊,今天的BTG就是一個(gè)例子。
那名礦工為了實(shí)施雙花攻擊,獲得了至少51%的BTG網(wǎng)絡(luò)算力,就能夠臨時(shí)控制BTG區(qū)塊鏈。像BTG這樣的小型網(wǎng)絡(luò)上,獲得這么大的哈希算力也是非常費(fèi)錢費(fèi)力的,但是無利不討好嘛,實(shí)施雙花之后就有錢可賺了。
控制了網(wǎng)絡(luò)之后,攻擊者開始往加密貨幣交易所充值比如1000個(gè)BTG,讓其進(jìn)入市場(chǎng),或者提現(xiàn)出來。再運(yùn)用手中的算力,從自己對(duì)外付款交易之前的區(qū)塊開始,忽略自己所有對(duì)外的付款交易,重新構(gòu)造后面的區(qū)塊,利用算力優(yōu)勢(shì)與全網(wǎng)賽跑,當(dāng)最終創(chuàng)建的區(qū)塊長(zhǎng)度超過原主分支區(qū)塊,成為新的主分支,至此,攻擊完成;結(jié)果就是,由于撤銷了所有對(duì)外付款交易,等于收回來所以已賣掉的BTG。就這樣,他們能夠向交易所充值后再迅速收回資金。
比特幣黃金開發(fā)人員建議交易所在用戶交易時(shí)通過確認(rèn)交易數(shù)量來應(yīng)對(duì)攻擊。區(qū)塊鏈數(shù)據(jù)表明,攻擊者成功逆轉(zhuǎn)了22個(gè)區(qū)塊,這導(dǎo)致開發(fā)者建議將需要確認(rèn)的區(qū)塊提高到50個(gè)。
微米-納米SiO21星評(píng)價(jià)
2020-05-12 15:32:34
雙花問題是指一筆數(shù)字現(xiàn)金在交易過程中被重復(fù)使用的現(xiàn)象。
比如,我只有兩百塊錢,想要把這筆錢支付兩次,于是我同時(shí)給甲、乙轉(zhuǎn)200元錢。
遇到這種問題,比特幣是怎么解決的呢?
大家請(qǐng)仔細(xì)想一想,這筆錢是固定的,如何保證這筆錢在交易過程中,只支付了一次呢?
比特幣的創(chuàng)始人中本聰在《比特幣白皮書》中寫道,比特幣的支付步驟是這樣說的:
1.有一個(gè)新的交易,要向全網(wǎng)公布廣播。
2.每一個(gè)節(jié)點(diǎn),都要將收集到的交易信息,放入一個(gè)區(qū)塊中。
3.每一個(gè)節(jié)點(diǎn)都要試著在自己的區(qū)塊中,找到一個(gè)足夠難的工作量證明。
4.當(dāng)一個(gè)節(jié)點(diǎn)找到了自己的工作量證明,都要對(duì)全網(wǎng)進(jìn)行公布廣播。
5.當(dāng)且僅當(dāng)這個(gè)區(qū)塊中的所有交易是有效且之前從未有過,其他的節(jié)點(diǎn)才承認(rèn)這個(gè)交易過程的有效性。
6.其他節(jié)點(diǎn)表示承認(rèn)這個(gè)區(qū)塊,表示認(rèn)可的方法就是,根據(jù)這個(gè)區(qū)塊的編碼,往后延長(zhǎng)這個(gè)鏈接。
有了上述的步驟,我們就能保證交易的唯一性和確定性。
這樣說來,在交易發(fā)生的時(shí)刻,比特幣的交易數(shù)據(jù)就被蓋上了一個(gè)時(shí)間戳;而在這筆交易數(shù)據(jù)被打包到區(qū)塊中這個(gè)過程中,就完成了第一次確認(rèn),在連續(xù)地進(jìn)行了六次確認(rèn)之后,這個(gè)記錄就不能被輕易篡改了。
在這種情況下,當(dāng)我嘗試進(jìn)行兩次支付交易時(shí),由于確認(rèn)時(shí)間較長(zhǎng),后一交易幾乎不可能與前一次交易同時(shí)確認(rèn)。在第一次交易確認(rèn)后,資金在第二次交易中無法確認(rèn)。區(qū)塊鏈的全網(wǎng)記賬需要在整個(gè)網(wǎng)絡(luò)中達(dá)成共識(shí),就無法產(chǎn)生雙花問題。