Segregated-Witness

將見證儲存在區塊之外如何防止延展性?

  • August 26, 2019

我對隔離證人的工作方式有一些疑問。

我正在閱讀這篇文章,答案中存在這句話

由於簽名數據(見證數據)儲存在交易之外(以及標準塊之外),這意味著該數據不必計入塊大小。

現在我對這個論點有三個問題

  1. scriptSig的數據是從TransactionInput移動到RawTransaction,那麼RawTransaction就沒有延展性了嗎?也許我無法想像在延展性期間非見證交易到底發生了什麼,你能給我舉個例子嗎?
  2. 為什麼見證數據儲存在區塊之外?你的意思是?我想我不明白這種節省空間的意義,因為見證數據存在於 blk 文件中
  3. (如果我理解正確的話)Bitcoin Core 如何使用 Merkle 樹來驗證簽名?(這個問題與第一個有關,我認為我沒有理解延展性現象發生)

scriptSig 的數據是從 TransactionInput 移動到 RawTransaction 的,所以 Raw 交易不是延展性的嗎?也許我無法想像在延展性期間非見證交易到底發生了什麼,你能給我舉個例子嗎?

交易 ID 是整個交易資料結構(版本、輸入、輸出、簽名、輸入和輸出的數量、鎖定時間等所有內容)的雜湊。橢圓曲線簽名,例如比特幣使用的簽名,包含一個隨機數作為簽名的一部分。使用另一個隨機數也將導致有效但不同的簽名。如果簽名改變,整個交易對象的雜湊值也會改變。

在隔離見證交易中,此簽名數據不是基本交易資料結構的一部分——這意味著更改簽名將不再更改 txid,因為交易的其餘部分尚未更改。

為什麼見證數據儲存在區塊之外?你的意思是?我想我不明白這種節省空間的意義,因為見證數據存在於 blk 文件中

將見證數據移出區塊允許比特幣有效地將更多交易打包到一個區塊中——之前所有簽名使用的空間現在可用於添加更多交易。

(如果我理解正確的話)比特幣核心如何使用 Merkle-tree 來驗證簽名?(這個問題與第一個有關,我認為我沒有理解延展性現象發生)

Merkle 樹與簽名驗證無關。默克爾樹用於建構交易包含在塊中的承諾,然後將其放置在塊頭中並使用工作量證明系統鎖定。交易的延展性影響了這一點,因為在為區塊選擇的交易中更改交易 ID 會改變默克爾樹 - 由於上述原因,這不再可能。

引用自:https://bitcoin.stackexchange.com/questions/89806