當前位置:
首頁 > 最新 > 比特幣白皮書原文精讀(五)

比特幣白皮書原文精讀(五)

存儲容量和驗證效率的矛盾越來越突出,這也是每一種區塊鏈技術都需要面對的可延展性問題。

《讀譯 | 比特幣白皮書原文精讀》系列

8. Simplified Payment Verification

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. 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.

8.簡化的交易驗證(SPV)

不用運行完整的網路節點,也能驗證交易。用戶只需要保留一份最長工作量證明鏈的區塊頭數據副本,獲取這條鏈的方式是通過不斷查詢網路節點直到確信拿到的是最長鏈,並獲得Merkle樹枝,將這筆交易與這筆交易加上時間戳後納入的區塊聯繫起來。用戶無法自己檢查交易,而是通過將其連接到鏈上的一個位置來完成檢查。他可以看到一個網路節點接受了這筆交易,並且其後的區塊進一步確認了整個網路也接受了這筆交易。

As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network isoverpowered by an attacker. 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.

這樣一來,只要誠實節點掌控網路,驗證就是可靠的。而當攻擊者稱霸網路的時候驗證就變得更加脆弱。當交易驗證由所有網路節點自行完成的時候,因為只要攻擊者能夠持續稱霸網路,這個簡化(驗證)方法就可能被攻擊者編造的交易記錄所欺騙。

註:overpower原詞更為形象,含義即以更強大的力量來壓制和控制,就是稱霸、制霸的意思,也就是在遊戲圈經常提到OP。

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年就被提出並開始測試,經過長期的辯論,在紐約共識的推動下,直到2017年8月區塊高度481824時才得以激活,將其單個區塊的交易容量提高到1.75至4倍。

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

9. Combining and Splitting Value

Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs: one for the payment, and one returning the change, if any, back to the sender.

9.價值組合與分割

儘管可以單獨處理比特幣,但是為每一分錢的轉移都要形成一個單獨的交易就太顯笨拙了。為了允許價值被細分與組合,交易將包含多個輸入和輸出。通常,會有來自上一個更大額交易的單一輸入或者組合了小額交易的多個輸入,然後會有最多兩個輸出:一個用於支付,另一個用於找零,如果有剩的話,返還給發送者。

It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction"s history.

需要注意的是,一個交易依賴多個交易、多個交易又依賴更多交易,這樣的扇出在這裡不是問題。因為絕不會有提取一個交易歷史完整獨立副本的需求。

註:fan-out扇出,是出自數字電路技術的術語,原意是指一個邏輯門輸出能夠驅動其他門輸入的數量。軟體結構化設計中,也沿用了扇入、扇出的概念,來表述模塊之間調用與繼承的關係。

比特幣交易是一個多輸入少輸出(最多兩個)的模塊,其精髓就是人們常說的UTXO(Unspent Transaction Output,未花費交易輸出)。這樣的結構對於正向操作是有利的,即可以高效的查到每筆交易的結餘,然後組合起來用於下一筆支付。但是這樣的結構對於反向回溯是不利的,即如果要查找某一筆支付的所有來源,因為扇出小、扇入大,你將面對的是一個海量的樹形結構,效率將變得非常低。所以作者補充了一句,無此必要。

UTXO像是一個個的滴水不漏的水管組件,錯綜複雜的連接成了比特幣的交易賬本,記錄了交易額的來龍去脈。這與中心化的賬本最大的區別在於,UTXO不記錄餘額,只記錄行為。如果用戶想要知道手裡到底有多少比特幣,就從UTXO中找到屬於自己的地址,計算未花費交易返還的總和。在比特幣網路中,一個人可以擁有多個賬戶(地址)。UTXO還起到了保護隱私的作用,即只能查到哪些地址的比特幣還沒有花出去,卻查不到哪些地址屬於同一個人或者這個人是誰。

對於本文,歡迎留言提出你的看法,或者對翻譯糾錯。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 造字 的精彩文章:

TAG:造字 |