Signature

s 的補碼(當 s < 曲線階數 / 2 時)

  • August 23, 2018

Bitcoinlib指的是這樣的要求,如果s &gt; ORDER / 2, 那麼應該使用的補碼,因為它短一個字節s

這聽起來像是指的是反向或負值s,但我也知道補碼可以是電腦科學術語。

相關程式碼可以在這裡找到(也許熟悉比特幣核心程式碼的人可以插話程式碼在做什麼),那麼,s 的補碼指的是什麼?

在 ECDSAs中,可以在曲線的任一側,並且簽名仍然有效。術語“低s”是指字面上低於曲線順序的值(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0)。低-的要求s是任意的(高s也可以很好地工作),並且是旨在對抗交易延展性的新BIP62有效性規則之一。

如果沒有這條規則,任何人都可以進行比特幣交易,翻轉s其任何簽名,然後使用不同的 TXID 再次推出交易。能夠做到這一點只會改變交易的雜湊值,並不會以任何方式改變其有效性。能夠變異交易打破了比特幣中許多潛在有趣的交易類型,例如支付渠道,其中交易鏈將突然因父被變異和包含在塊中的替代形式而失效。

通過強制有效交易始終處於低水平s,這種能力被移除,儘管擁有交易私鑰的人仍然能夠通過用新的 nonce 辭職來改變他們自己的交易。

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