Bitcoin-Core
為什麼庫的 segwit tx 簽名與比特幣核心簽名不同?
我一直在編寫一個(又一個)比特幣python 庫,主要用於教育目的;為我和我的學生。
簽署非隔離見證交易會產生與比特幣核心產生的相同的簽名交易。
但是,簽署 segwit tx 會產生一個有效的簽名 tx,但與比特幣核心產生的不同。創建的簽名不同。
我試圖理解為什麼。該庫在兩種情況下都使用相同的簽名方法。由於生成了有效的交易,圖書館的tx 摘要計算似乎工作正常。
我看到另一篇文章提到了寬鬆和嚴格的 DER 編碼。這是否相關,如果是,是否僅在簽署 segwit 輸入時適用?
我錯過了什麼?
編輯:來自圖書館的簽名是:483045022100debdd831b8f144afcaa4e9cb71713ec657292ac09d163e827dc1d458417841a70220292b6f250e4ad94ec2b3f062129b85620c32019bede1c24a222
來自比特幣核心:4730440220413d31dcd84594d2bf1408d41ec6913694b7936c2cc598f436a4709cd2d70264 02201b646f18fa4108ee19d103d427c2323a0f221e33ecb68bec8006
這與隔離見證無關。
自比特幣核心版本 v0.17 以來,簽名具有低 R簽名。重複簽名操作,直到建構的 R 值低於 2 255。平均而言,這只需要 2 次嘗試,但它使所有簽名的長度相同(71 字節;而不是 50% 的 71 字節和 50% 的 72 字節),使它們在網路上更可預測且成本略低。