比特幣自誕生以來(lái),就因浪費(fèi)電力資源為人所詬病,但其強(qiáng)大的算力是必要過(guò)程,很難找到更好的方式來(lái)代替。
隨著它出現(xiàn)的年頭越來(lái)越久,在其底層技術(shù)區(qū)塊鏈上參與交易的人也越來(lái)越多,分布式賬本的內(nèi)容量急劇擴(kuò)張,中本聰設(shè)置的一個(gè)區(qū)塊1MB的存儲(chǔ)量使得交易過(guò)程和交易速度有了限制。
例如,目前比特幣主鏈的區(qū)塊數(shù)據(jù)高達(dá)200多G ,對(duì)普通用戶而言,存儲(chǔ)量實(shí)在過(guò)大。因此,下載整個(gè)賬本成了令人頭痛的一件事。能不能不下載整個(gè)賬本,只找與自己相關(guān)的部分呢?換句話說(shuō),找個(gè)過(guò)濾器,把沒用的都留在外面。
于是出現(xiàn)了SPV機(jī)制。
1. SPV機(jī)制
SPV 全稱“ Simplified Payment Verification ”,常見翻譯為簡(jiǎn)單支付驗(yàn)證。其目的是為了驗(yàn)證某筆交易是否存在,但并不能驗(yàn)證交易的合法性,這需要進(jìn)行兩步操作,第一步是確認(rèn)交易支付是否被驗(yàn)證過(guò),第二步是計(jì)算得到了多少確認(rèn)數(shù)。
中本聰在論文里提及了這一概念:在不運(yùn)行全節(jié)點(diǎn)時(shí)也依然有可能對(duì)交易進(jìn)行驗(yàn)證,用戶只需要保留最長(zhǎng)鏈上的所有的區(qū)塊頭數(shù)據(jù)。
簡(jiǎn)單而言就是:
假如小黑給大白轉(zhuǎn)了一個(gè)比特幣,大白怎么才能知道幣已經(jīng)交易完成了呢?在去中心化的系統(tǒng)里找證人那是不太可能的。
按照傳統(tǒng)的辦法就是:大白需要下載下來(lái)所有的區(qū)塊鏈賬本,然后找到小黑的賬戶,先瞅瞅它之前是不是有這樣一個(gè)比特幣,并且有沒有轉(zhuǎn)給大白的記錄。僅僅是第一步,就使得大白的存儲(chǔ)量要爆掉。
每個(gè)比特幣的區(qū)塊容量是 1 MB ,區(qū)塊頭只有 80 KB ,因此只需要下載區(qū)塊頭就可以節(jié)省很多空間。
區(qū)塊頭和區(qū)塊體究竟是什么呢?
把區(qū)塊頭比做人的頭部,里面存儲(chǔ)著區(qū)塊的頭信息,如哈希值、時(shí)間戳等;而區(qū)塊體則類似于人的整個(gè)身體,存儲(chǔ)著這個(gè)區(qū)塊的詳細(xì)數(shù)據(jù),如具體交易信息。區(qū)塊頭包含在區(qū)塊體中。
也就是說(shuō)一個(gè)區(qū)塊頭盡管有哈希值,但下載了區(qū)塊頭后大白仍無(wú)法知道交易記錄在哪個(gè)區(qū)塊里,這時(shí)候就需要拿著交易 ID 去找全節(jié)點(diǎn)查一下,是否有且在哪一個(gè)區(qū)塊里。
2. SPV 的支付驗(yàn)證過(guò)程
咦,那萬(wàn)一礦工和小黑聯(lián)合起來(lái)騙大白怎么辦?
這時(shí)候 SPV 機(jī)制就派上用場(chǎng)了。
如果礦工說(shuō)小黑轉(zhuǎn)過(guò)來(lái)了,但其實(shí)并沒有。那么為了圓謊他必須偽造更多的交易,使得這些交易能得到和自己區(qū)塊頭里同樣的哈希值。但由于哈希的技術(shù)特性,改變后的數(shù)據(jù)要想和原始數(shù)據(jù)得出一樣的哈希值,那是很難實(shí)現(xiàn)的。
總之, SPV 整個(gè)交易過(guò)程是這樣的:
第一步,確認(rèn)交易支付是否被驗(yàn)證過(guò)。
首先計(jì)算待驗(yàn)證支付的交易哈希值,把區(qū)塊頭從區(qū)塊鏈網(wǎng)絡(luò)上保存至本地,再?gòu)膮^(qū)塊鏈獲取待驗(yàn)證支付對(duì)應(yīng)的默克爾樹哈希認(rèn)證路徑。
對(duì)比獲得的哈希值與自己的是否一致,若一致,則證明支付真實(shí)有效。
第二步,驗(yàn)證得到了多少確認(rèn)數(shù)。根據(jù)該區(qū)塊頭所處的位置,確定該支付已經(jīng)得到的確認(rèn)數(shù)量。
完成這兩步,交易支付驗(yàn)證就完成了。
3. 小結(jié)
SPV機(jī)制不僅節(jié)省了儲(chǔ)存空間,減少了P2P網(wǎng)絡(luò)帶寬的浪費(fèi),使得普通用戶在沒有下載完整數(shù)據(jù)的情況下也可以操作,而且也給查賬帶來(lái)了極大方便。
但是,由于SPV沒有完整的區(qū)塊數(shù)據(jù),是無(wú)法驗(yàn)證交易不存在的,這種情況很容易導(dǎo)致雙花的情況出現(xiàn),而隨機(jī)鏈接節(jié)點(diǎn)也有可能受到網(wǎng)絡(luò)的惡意攻擊。
評(píng)論