隔離見證見證數據如何“脫鏈”?它的真正含義是什麼?
我有幾個關於隔離見證見證數據的問題。我目前的理解如下。
在隔離見證之前,見證數據是使用者必須提供的輸入的一部分,以便他們可以花費 UTXO。見證數據是允許使用 UTXO 的數字簽名或任何其他解決方案。輸入不僅包括見證數據,而且見證數據可能是輸入的很大一部分。
因此,使用 segwit,見證數據與輸入的其餘部分分離。更具體地說,見證數據現在是“鏈下”的。這使得輸入變得更輕,反過來,它使得花費一個 UTXO 更便宜、更快地處理。
我的問題是:
- 我上面的理解正確嗎?
- 當我們說見證數據是“鏈下”時,我們是什麼意思?如果它不是區塊鏈的一部分,它在哪裡?這是否意味著節點處理見證數據的方式與其他輸入數據不同?
- 雖然我知道輸入本身現在更輕了,但使用者仍然必須提供見證數據才能使用 UTXO。見證數據是否需要與輸入的其餘部分一起轉發,以便節點可以確保交易有效?怎樣才能提高效率?
不,這不准確。見證數據在鏈上,輸入具有與以前相似的字節長度(它們只是權重不同),並且交易吞吐量增加,因為隔離見證是事實上的塊大小增加。
因此,使用 segwit,見證數據與輸入的其餘部分分離。更具體地說,見證數據現在是“鏈下”的。這使得輸入變得更輕,反過來,它使得花費一個 UTXO 更便宜、更快地處理。
這是一個常見的誤解,由於大量(有時是故意)對 segwit 工作原理的令人困惑的描述而長期存在。
如果沒有證據證明它是由已用資金的所有者授權的,則交易是不完整的。因此,見證人明確地是“完整交易”的一部分。segwit 所做的是將見證(讀取“簽名”)從輸入腳本中分離出來,並將其移動到交易的“見證部分”。見證部分與輸入和輸出處於同一層次。
在計算交易 id (txid) 時不包括見證部分,但它是交易的一部分,用於計算見證交易 id (wtxid)。雖然塊頭中的 merkle 根送出到包含交易的 txid,但每個 segwit 塊另外送出到交易 wtxid 的 merkle 樹。總之,見證人是 a) 交易的一部分,b) 區塊鏈的一部分,c) 完全驗證區塊鏈所必需的。
隔離見證用塊重限制代替了塊大小限制。塊大小基於交易的原始字節長度,上限為 1,000,000 字節。區塊權重的上限為 4,000,000 個權重單位,其中權重是通過計算因子為 1 的見證字節和因子為 4 的非見證字節來計算的。如果一個區塊僅包含沒有見證數據。
與非隔離見證輸入相比,隔離見證輸入的實際交易數據僅略小。見證數據的折扣允許區塊超過之前的區塊大小限制,使得隔離見證有效地增加了區塊大小,迄今為止最大的區塊有 2,422,858 字節(但有 3,993,379 個權重單位)。
隔離見證交易和區塊與隔離見證前節點向前兼容。Segwit 節點將在將數據中繼到 pre-segwit 節點之前剝離見證數據。剝離的交易和區塊是非標準的,但根據 pre-segwit 協議規則是有效的,因此 pre-segwit 節點可以跟隨區塊鏈並聚合在同一個 UTXO 集上。
請注意,自隔離見證於 2017 年 8 月 24 日啟動以來,預隔離見證節點並未“完全驗證節點”,因為它們不會單方面執行比特幣協議的所有共識規則。