Segregated-Witness

交易延展性,我如何更改簽名?

  • January 7, 2019

我有點絕望,因為我無法理解一些我不理解的想法。我希望你能幫助我。先感謝您

一切都與隔離見證有關

問題 1)它說當 bob 向 alice 進行交易時,該交易會轉到 bob 的惡意節點。然後 bob 更改簽名,使其仍然保持有效交易。在那之後,這個交易有可能比其他一些節點在 mempool 中的原始交易發生得更快。並且 BOb 有機會獲得 alice 打算轉移的雙倍 * 金額。我很好奇鮑勃的惡意節點在簽名部分發生了什麼變化,它仍然保持愛麗絲的簽名並且仍然有效?這怎麼可能?

問題 2) 隔離見證是如何工作的?我知道 scriptSig 已從交易中刪除,但它保存在哪裡?

問題3)如果它仍然保存在區塊鏈中,那麼它的大小如何更小,區塊如何比現在擁有更多的交易?

問題 4)他們說簽名部分保存為 merkle 根雜湊。但是節點如何檢查特定簽名是否與特定交易相關?

謝謝你們。我希望你的解釋是有道理的

問題 1)它說當 bob 向 alice 進行交易時,該交易會轉到 bob 的惡意節點。然後 bob 更改簽名,使其仍然保持有效交易。在那之後,這個交易有可能比其他一些節點在 mempool 中的原始交易發生得更快。並且 BOb 有機會獲得 alice 打算轉移的雙倍 * 金額。

不,鮑勃不會得到雙倍的。他將看到兩個相互衝突的交易。不會創建或花費額外的硬幣。這很煩人,錢包不能很好地處理這些相互衝突的交易。

我很好奇鮑勃的惡意節點在簽名部分發生了什麼變化,它仍然保持愛麗絲的簽名並且仍然有效?這怎麼可能?

簽名具有延展性。ECDSA 簽名由兩個值組成,Rs。由於簽名驗證算法的工作原理,可以將 替換為s它的否定 ( -s)。-s很容易被第三方計算,因此攻擊者可以計算-s,將s值替換為倒數,然後發送新交易。因為由於替換了swith -s,交易的內容現在不同了,所以交易有不同的 id 所以被認為是不同的。但它仍然是完全有效的。

問題 2) 隔離見證是如何工作的?我知道 scriptSig 已從交易中刪除,但它保存在哪裡?

隔離見證定義了一種新的交易格式,它是原始交易格式的擴展。在這種格式中,添加了一個新欄位,稱為scriptWitness. 這scriptWitness是簽名的地方。對於沒有隔離見證的節點,它們只接收舊格式的交易。他們不會看到scriptWitness.

簽名不會從交易中刪除。他們只是搬到別處。

問題3)如果它仍然保存在區塊鏈中,那麼它的大小如何更小,區塊如何比現在擁有更多的交易?

塊實際上在物理上並不更小。塊大小在沒有硬分叉的情況下增加了。

segwit 所做的還是將塊大小的度量從字節重新定義為稱為權重的新單位。要計算一個塊的權重,你必須查看交易。作為原始交易格式一部分的交易的每個字節都計為 4 個權重單位。作為新隔離見證交易格式一部分的每個字節是 1 個權重單位。一個塊中權重單位的最大數量是 4000000。計算結果是,舊節點不會看到數據超過 1 MB 的塊(因為它們沒有接收到新格式的交易)。

因此,有了這個權重單位的新定義,沒有隔離見證的交易比使用隔離見證的交易擁有更多的權重單位。因此交易“更小”,因此更多交易可以容納在一個塊中。

問題 4)他們說簽名部分保存為 merkle 根雜湊。但是節點如何檢查特定簽名是否與特定交易相關?

簽名不保存在 merkle 根雜湊中。您不能將任何數據保存在雜湊中。簽名被送出到 merkle 根雜湊中。這意味著進入 merkle 根雜湊的數據包括簽名。這樣一來,一旦交易在一個塊中,簽名就不會出現。之所以需要這樣做,是因為 merkle 根僅在 txid 之上,而scriptWitnesses 不是其中的一部分(它們在 txid 計算中被忽略)。因此,完整的交易雜湊(稱為wtxid)被用於包含在 coinbase 交易中的見證 merkle 根。這導致該雜湊成為 coinbase 交易的 txid 的一部分,該 txid 進入區塊的 merkle 根。

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