1. 程式人生 > >《詳解比特幣白皮書》-Simplified Payment Verification(簡化的交易驗證(SPV))

《詳解比特幣白皮書》-Simplified Payment Verification(簡化的交易驗證(SPV))

It is possible to verify payments without running a full network node. 

不用執行完整的網絡節點,也能驗證交易。

 

A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in.

只需要保留一份最工作量證明鏈的區塊頭資料副本,獲取這條鏈的方式是通過不斷查詢網路節點直到確信拿到的是最長鏈,並獲得Merkle樹枝,將這筆交易與這筆交易加上時間戳後納入的區塊聯絡起來

He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it. 

無法自己檢查交易,而是通將其接到上的一個位置來完成檢查。他可以看到一個網絡節點接受了筆交易,並且其後的區塊進一步確了整個網也接受了筆交易。

As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. 

這樣一來,只要誠實節點掌控網路,驗證就是可靠的。而當攻擊稱霸驗證得更加脆弱。

注:overpower

形象,含即以更大的力量來制和控制,就是稱霸、制霸的意思,也就是在遊常提到OP

While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network.

當交易驗證由所有網絡節點自行完成的候,因只要攻者能稱霸網化(驗證)方法就可能被攻造的交易記錄所欺

One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. 

防止生此事件的策略之一將是從網絡節點接受警,當檢測到一個非法的區塊時,提示用件去下全部區和有問題交易記錄以確其不一致性。

Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification. 

要接受高支付的商可能仍然想要執行他自己的點群,以得更獨立的安全性和更快的驗證速度。

注:這一章節講了回收硬碟空間之後帶來的交易驗證問題。並不是所有節點都是完整節點,因為那樣的確會消耗很大的硬碟空間,特別是對個人使用者來說。於是採取了按需下載的節點資料儲存與驗證方式。通常情況下,只要能在精簡版的鏈上找到交易雜湊值正確的位置,就能驗證交易。而對於有問題的交易,賬目對不上,就要下載與其相關的交易資訊進行比對和排除。而以全量方式執行節點更適合商戶,儲存不差錢,安全和效率第一。

比特幣,或者說區塊鏈,是不斷增長的鏈式結構。隨著時間的推移和交易頻次的加快,儲存容量和驗證效率的矛盾越來越突出,甚至會成為區塊鏈應用的瓶頸,這也是每一種區塊鏈技術都需要面對的可延展性問題。為了解決這類問題,比特幣社群一直在擴容方案上爭論不休。主要分為以下兩種方式:

一,上外掛。在比特幣作為主鏈的基礎上,整一條側鏈或者新鏈與主鏈關聯起來,把絕大多數交易資訊帶離主鏈,放在其他地方進行結算和驗證,減輕主鏈的負擔。閃電網路(Lightening Network)就是比較知名的方案之一。

二,改程式碼。有人提出突破中本聰的原設,增加區塊容量上限值,修改MAX_BLOCK_SIZE (原始碼中該值為1000000,即1MB),搞硬分叉。而比特幣核心團隊提議的隔離見證(Segregated Witness,縮寫SegWit),是一種從交易資訊中剝離簽名資料的軟分叉方案。SegWit方案早在2015年就被提出並開始測試,經過長期的辯論,在紐約共識的推動下,直到20178月區塊高度481824時才得以啟用,將其單個區塊的交易容量提高到1.754倍。

這一類方案都包含在各種BIPBitcoin Improvement Proposal)裡面,即比特幣改進提案。有意思的是,BIP的落地啟用是靠節點投票達成的,任何人都有權力提交BIP,並不是完全由比特幣核心團隊說了算。不同的提案反映了不同的擴容思路和邏輯,當然也有不同的礦池在幕後支援。代表全網83.28%比特幣算力的多個團隊合力達成了紐約共識,即SegWit2x方案,除了SegWit啟用還包含了2M區塊擴容計劃,相當於軟硬分叉兼施的中庸方案,這讓比特幣核心團隊很不情願。