雙重支付,資產(chǎn)翻倍的秘籍,比特幣讓它翻車

早些年流行過一陣投幣電話,只要往電話里投入硬幣就能在相應(yīng)的時(shí)間里保持通話。

后來有人想出一個(gè)主意:把綁了一根細(xì)繩的硬幣投進(jìn)去,待通話結(jié)束后將硬幣拉出來繼續(xù)投幣使用,如此反復(fù)……

這其實(shí)就是雙花,即將同一筆貨幣重復(fù)花費(fèi)了兩次或以上,也被人們稱為“雙重支付”。

01 什么是雙重支付

雙重支付(Double Spending),指因設(shè)計(jì)缺陷而使某些貨幣被重復(fù)支付兩次或以上。

一手交錢一手交貨,這是人們普遍的共識(shí)。但如果使用同一筆貨幣先后買入兩份貨物,就必然使對(duì)方產(chǎn)生財(cái)產(chǎn)上的損失。這是不應(yīng)當(dāng)也不道德的,和騙子沒有什么區(qū)別。

在我們的生活中,傳統(tǒng)貨幣的確會(huì)有雙花的情況,那么數(shù)字貨幣的表現(xiàn)又怎么樣呢?

實(shí)際上,很多在早期出現(xiàn)的數(shù)字貨幣,就是因?yàn)殡p重支付的問題而紛紛夭折,都未能實(shí)現(xiàn)大規(guī)模的應(yīng)用。

這種情況一直延續(xù)到能完美解決雙重支付問題的比特幣出現(xiàn)。

02 如何解決雙重支付

在人們用實(shí)體貨幣進(jìn)行交易時(shí),基本不會(huì)出現(xiàn)雙重支付,因?yàn)槟悴荒馨岩粔K金子交到別人手里同時(shí)自己還拿著同一塊金子去做另一筆交易。但隨著數(shù)字化記賬,雙重支付的問題就出現(xiàn)了——比如某一款項(xiàng)已支付但未移除,從而可以給另一賬戶支付的情況。

傳統(tǒng)貨幣系統(tǒng)通過大家都信任的銀行機(jī)構(gòu)來記賬,他們驗(yàn)證每筆交易的正確性。人們信任它們,默認(rèn)雙重支付不會(huì)發(fā)生。但其實(shí)從根本上來講,對(duì)于這種記賬方式,人們并不能確信記賬不出錯(cuò)、記賬的人不作惡,這時(shí)候的信任是一種沒有其他選擇的選擇。

比特幣是通過技術(shù)手段來解決雙重支付問題的。比特幣通過UTXO數(shù)據(jù)結(jié)構(gòu)記錄每筆交易,使得它的每筆交易都能追根溯源到比特幣發(fā)行時(shí)產(chǎn)生的第一筆交易。這就像是一棵樹,樹干是比特幣發(fā)行時(shí)產(chǎn)生的第一筆交易,比如是10BTC,而這10BTC在以后的交易中被不斷拆分,形成一個(gè)個(gè)樹枝,我們順著樹枝往回看的話,就能且只能找到最初的那個(gè)樹干。

雙重支付在這種數(shù)據(jù)結(jié)構(gòu)下,相當(dāng)于在一個(gè)樹枝長(zhǎng)出來后,把它取消,讓它在另一個(gè)地方再長(zhǎng)出來。在物理世界,這是很難辦到的,但是在數(shù)字世界去卻能夠通過篡改數(shù)據(jù)來辦到。但是,比特幣又用另外兩個(gè)機(jī)制使得它的記賬數(shù)據(jù)是幾乎難以被篡改的,那就是工作量證明和最長(zhǎng)鏈原則。

比特幣系統(tǒng)將交易記錄在一個(gè)個(gè)區(qū)塊上,每一個(gè)區(qū)塊都包含上一個(gè)區(qū)塊的獨(dú)一無二的信息,從而串成一條鏈。全網(wǎng)的礦工節(jié)點(diǎn)會(huì)對(duì)每個(gè)區(qū)塊上的交易信息進(jìn)行驗(yàn)證,保障信息的準(zhǔn)確無誤。如果有人想要篡改記賬數(shù)據(jù),實(shí)現(xiàn)雙重支付,那么就相當(dāng)于要在他要篡改的地方分出一個(gè)支鏈來,并且讓所有礦工都認(rèn)為同這條鏈才是正確的,旁邊那條不對(duì)。那不好意思,礦工們不會(huì)承認(rèn)這條新分叉的鏈,因?yàn)楦鶕?jù)最長(zhǎng)鏈原則,礦工們只承認(rèn)最長(zhǎng)鏈——最長(zhǎng)鏈?zhǔn)堑玫阶疃嗟V工的算力驗(yàn)證的鏈,理論上是正確的鏈。

正是因?yàn)檫@種技術(shù)保障,當(dāng)你接收比特幣時(shí)才能夠放心——這筆交易記錄會(huì)帶著時(shí)間戳,得到網(wǎng)絡(luò)所有節(jié)點(diǎn)的共同驗(yàn)證,再確認(rèn)后被添加到新區(qū)塊上成為難以篡改的交易記錄。 而且,比特幣中的交易數(shù)據(jù)是公開可查詢的,所以這是一個(gè)完全公開透明的賬本。

03 潛在風(fēng)險(xiǎn)

雖然這個(gè)機(jī)制設(shè)計(jì)得非常巧妙,但仍要注意兩種情況。

一種情況是,比特幣新區(qū)塊的產(chǎn)生時(shí)間是10分鐘,即系統(tǒng)記賬的時(shí)間區(qū)間是10分鐘。正常情況下,交易要經(jīng)過6次確認(rèn)后,最終被記錄在區(qū)塊中。如果收款人B在交易確認(rèn)數(shù)為零(即系統(tǒng)尚未記賬)的情況下,將貨物交給了付款人A,就冒了很大的風(fēng)險(xiǎn)。

因?yàn)楦犊钊薃可以在這10分鐘之內(nèi)重新將這筆比特幣支付給其他人,當(dāng)?shù)V工接收到一筆比特幣的兩個(gè)交易請(qǐng)求時(shí),最終會(huì)根據(jù)“最長(zhǎng)鏈”原則選取最長(zhǎng)鏈中的交易記錄來確認(rèn)。一旦收款人B的交易記錄不在最長(zhǎng)鏈中,就會(huì)導(dǎo)致收款人B被雙重支付。

正確的做法應(yīng)該是等待交易確認(rèn)數(shù)為1以上,更保險(xiǎn)的做法是等到6個(gè)交易確認(rèn)數(shù)。當(dāng)然,這需要收款人等待1個(gè)小時(shí)的時(shí)間。

還有一種情況是,有人掌握了比特幣網(wǎng)絡(luò)51%以上的算力,就可以在想要篡改交易記錄的位置分出一個(gè)支鏈,然后利用其強(qiáng)大的算力在這個(gè)支鏈的基礎(chǔ)上不斷挖出新的區(qū)塊,來追趕、超越原來的最長(zhǎng)鏈。一旦這條支鏈的長(zhǎng)度超越原來那條鏈,它就會(huì)成為礦工眼中的最長(zhǎng)鏈并得到承認(rèn),從而達(dá)到篡改交易數(shù)據(jù)的目的。這種情況下,這個(gè)人就能夠使已經(jīng)花出去的比特幣重新回到自己地址上,這些比特幣就能夠進(jìn)行再一次的支付。

但在文章《天使與魔鬼,51%的勝利屬于誰?》中我們?cè)岬竭^的,雖然在理論上有算力攻擊的可能,但從經(jīng)濟(jì)上來看這是得不償失的。所以比特幣網(wǎng)絡(luò)在經(jīng)過了多年之后,依然十分地安全,沒有出現(xiàn)算力攻擊的情況。

04 結(jié)語
對(duì)于雙重支付的知識(shí)來說,除了理解和掌握之外,能在生活中應(yīng)用才是所學(xué)知識(shí)的價(jià)值體現(xiàn)。

比如等待6個(gè)交易確認(rèn)數(shù)之后再完成交易,以免被別人送上“雙花”甚至“一束花”。不然,你肯定要把別人的臉抓花!

參考資料:

《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》中本聰


鏈客道每周二、四、六晚上8:00發(fā)文。期待你的進(jìn)步。

版權(quán)聲明:本文版權(quán)歸鏈客道所有,未經(jīng)授權(quán)不得轉(zhuǎn)載。

Linker? ? DAO
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容