比特币签名体积的变化

互联网 阅读 858 2024-04-29 15:50:59

作者:0xB10C

来源:https://b10c.me/blog/006-evolution-of-the-bitcoin-signature-length/

本文撰写于 2020 年 11 月。

数字签名是比特币协议的根本模块;并且区块链上存储的大部分数据都是数字签名。我们详细介绍了比特币区块链上编码的 ECDSA 签名的体积是如何逐渐减小的,以及还在提议阶段的 Schnorr 签名与当前使用的 ECDSA 签名的体积对比。

在花费非 SegWit 输出时,比特币交易中的数字签名会放在输入的 SigScript 字段;而在花费 SegWit 输出时,签名会放在 Witness 字段。无论哪一种情形,签名都由编码的 r 值和 s 值以及一个叫做 SigHash 的标签组成;SigHash 标签指明这个签名涵盖了交易的哪些部分。而 r 值和 s 值都是 256 比特(32 字节)的整数。

DER 编码的 ECDSA 签名

从第一个版本开始,Bitcoin 客户端软件就依赖于 OpenSSL 来编码和验证签名。ECDSA 签名是以 ANS.1 编码规则所定义的 “Distinguished Encoding Rules (DER)”来编码的。虽然 DER 编码只允许确切的一种将一个签名表示为一个字节序列的方法,但 OpenSSL 库也将源自 DER 标准的变种视为有效的。当 OpenSSL 库的这一特性发生改变时,它还导致一些使用更新 OpenSSL 遍布的节点拒绝来自使用较旧版本 OpenSSL 的节点的区块。BIP-66 提出了一项共识软分叉,从此只允许严格遵守 DER 编码规则的签名。

一个 DER 编码的 ECDSA 签名以一个 0x30 标识符开头,表示这是一个复合结构。接下来是一个表示长度的字节,包含这个结构的长度;再然后就是复合结构本身。这个复合结构包含了作为整数的 r 值和 s 值。这些数值是用整数标识符 0x02 开头的,然后是一个长度字节,定义相应的数值的长度。

Format of a DER-encoded Bitcoin signature with SigHash flag

- 一个 DER 编码的、带有 SigHash 标签的比特币签名的格式 -

虽然 ANS.1 编码要求使用带符号的整数(signed integer),但 ECDSA 中的 r 值和 s 值都是无符号的整数。在 r 值和 s 值的第一个比特不为 0 时(hen the first bit of the r- or s-values are set),这会产生问题。要解决这个问题,则需要前置一个 0x00 字节。因此,这些无符号的整数会被编码成一个带符号的正整数。第一个比特不为 0 的数值被称为 “高数值”,而第一个比特为 0 的数值被称为 “低数值”。

A 73-byte high-r and high-s Bitcoin ECDSA signature

- 一个 73 字节、使用高数值 r 和 高数值 s 的比特币 ECDSA 签名 -

r 值和 s 值都是随机数值。当两个数值都是 高数值(第一个比特不为 0)时,它们都需要前置一个 0x00 字节。因为这两个额外的字节,最终编码好的 r 值和 s 值再加上 SigHash 标签会是 73 字节长。一个签名中的两个数值都需要 高数值 的概率是 25% 。在 2014 年初以前,可以在区块链上观察到的签名大概有 25% 是 73 字节长,50% 的是 72 字节长,还有 25% 是 71 字节长。而在 72 字节的签名中,其中一个值是 高数值,另一个值是 低数值。

从 2014 年 3 月发布的 Bitcoin Core v0.9.0 开始,带有高数值 s 的签名开始减少。这个版本包含了一项对 Bitcoin Core 签名的变更:仅创建 低数值 s 的签名。而到 2015 年 10 月发布 Bitcoin Core v0.10.3 和 v0.11.1 时,使用 高数值 s 的签名开始被认作是不标准的交易,以移除熔融性(malleability)界面。这禁止了使用高数值 s 的交易被转发和挖矿(译者注:如果仅仅是当成一种非标准的交易,应该是可以挖矿的)。从 2015 年 12 月开始,几乎所有出现在区块链上的交易都只使用带有 低数值 s 的签名了。

A 72-byte high-r and low-s Bitcoin ECDSA signature

- 一个带有高数值 r 和低数值 s 的比特币 ECDSA 签名(72 字节) -

在 2015 年 12 月到 2018 年初期间,区块链上的签名几乎分成了 72 字节和 71 字节长的两种。72 字节的签名的 s 是低数值,r 是高数值(要求一个 0x00 字节作为前缀)。而 71 字节长的签名中,两个数值都是低数值。

到 2017 年 8 月,隔离见证软分叉激活。隔离见证将 SigScript 中的内容(包括,比如说,签名)移到了 Witness 字段。虽然在计算交易的重量时 witness 字段中的数据可以得到折扣,它们在区块链上的体积是相同的。

A 71-byte low-r and low-s Bitcoin ECDSA signature

- 一个 r 值和 s 值都是低数值的比特币 ECDSA 签名(71 字节) -

2018 年 10 月发行的 Bitcoin Core v0.17.0 包含了对 Bitcoin Core 钱包的一个提升,从此开始仅创建 71 字节长的签名。软件会不断使用不同的 nonce 值(r 值)签名一笔交易,直到找出两个数值都是低数值的签名。这项技术也已经被其它项目(例如 NBitcoin 库和 Electrum Bitcoin Wallet)采用了。

Schnorr 签名

BIP-340 为比特币引入了 Schnorr 签名;而 BIP-341 提出了一个新的 SegWit 版本 1 输出类型,其花费规则是基于 Schnorr 签名、Taproot 和默克尔分支的。不像 ECDSA 签名,Schnorr 签名不使用 DER 编码。

Format of a Bitcoin Schnorr signature

- 一个比特币 Schnorr 签名的格式 -

Schnorr 签名包含 32 字节的 r 值,然后是 32 字节的 s 值。最常用的 SigHash 标签 SIGHASH_ALL 被默认采用,所以,假设使用了这个标签,就不需要显示出来。如果使用其它 SigHash 标签,则需要放在 s 值后面。使用默认的 SIGHASH_ALL 标签的 Schnorr 签名的长度刚好是 64 字节。而使用其它标签的则是 65 字节长。

A 64-byte SIGHASH_ALL Bitcoin Schnorr signature

- 使用 SIGHASH_ALL 的比特币 Schnorr 签名(64 字节) -

相比 ECDSA 签名,Schnorr 签名会短 6 到 9 个字节。这些节省来源于移除的编码负担以及默认的 SigHash 标签。当 Schnorr 签名的采用率达到 20% 的时候,假定每天得到花费的 80 0000 个输入只包含一个签名,那么每天可以节约 1 MB 的区块空间。

相关阅读

  • A Layman’s Guide to a Subset of ASN.1, BER, and DER - An RSA Laboratories Technical Note - 1993

  • Create the shortest transaction - Eternity Wall Blog - 2017

  • Exact probabilities of obtaining a DER encoded signature of a certain length - Eternity Wall Blog


免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:返回栏目 下一篇:返回栏目

相关资讯

  • 被判有罪!TornadoCash案判决对DeFi监管意味着什么?
    被判有罪!TornadoCash案判决对DeFi监管意味着什么?

    荷兰法院判决Tornado Cash创始人犯洗钱罪,监禁64个月。此前,Tornado Cash和Uniswap引发DeFi监管议题,美国监管机构指控其涉嫌洗钱和违反制裁规定。Tornado Cash被指控为朝鲜黑客组织Lazarus的关键工具,但仍继续运作。Uniswap也因允许诈骗代币交易而受到指控,创始人发表公开信回应指控。Tornado Cash和Uniswap的案件可能对DeFi创业团队和监管产生影响。.....

    每日资讯 2024-05-15 14:03 438
  • 首日“吸金”逾5000万美元,浅析Synthetix创始人的新项目Infinex
    首日“吸金”逾5000万美元,浅析Synthetix创始人的新项目Infinex

    Infinex是一款综合性DeFi平台,由Synthetix创始人Kain Warwick创建。它提供无感DeFi体验,用户无需掌握复杂概念即可访问多链DeFi应用。用户通过Passkey创建账户,存款可获得治理积分GP,优先获得访问资格。Infinex将与Synthetix Perps V3集成,允许去中心化衍生品交易。虽然宣称不推出代币,但背靠头部协议和明星创始人,首日取得优异数据。无感体验策略符合市场趋势,但后续激励和社区忠诚度可能面临挑战。.....

    每日资讯 2024-05-15 14:02 768
  • 比起给特朗普投票,直接买$TRUMP更合适
    比起给特朗普投票,直接买$TRUMP更合适

    美国总统大选引发加密社区关注,现任总统拜登和前任特朗普对加密行业态度不同。特朗普表现出支持态度,举办NFT晚宴并发行同名meme币,引发社区兴奋。但也有人认为特朗普并不了解加密行业。加密社区通过推出特朗普主题的meme代币和NFT来抗衡政治化的加密货币。这一趋势早在2月就已经开始,其中包括月涨幅达百倍的代币。特朗普主题的meme币MAGA在5月9日涨幅达80%,市值接近4.5亿美元。.....

    每日资讯 2024-05-15 14:02 148
  • DegenL3宕机与重组,发生了什么?
    DegenL3宕机与重组,发生了什么?

    L3链Degen Chain于5月13日发生宕机,停止出块超过24小时,引起社区关注。该链是由DAO基础设施服务商Syndicate推出的超低成本L3链,宕机可能是因为自定义配置更改导致的50万个区块重组。Degen Chain使用Arbitrum构建,Gas代币为DEGEN。宕机可能是由定序器发布的batch与软确认不一致导致,也需考虑其他问题,如托管排序器的诚信性和L1、L2出错的解决方案。具体原因需等待Conduit的分析。.....

    每日资讯 2024-05-15 14:02 458
  • BinanceLabs参投,Zest如何打造比特币借贷DeFi?
    BinanceLabs参投,Zest如何打造比特币借贷DeFi?

    Zest是一款DeFi项目,为比特币持有者提供借贷服务,通过在链上持有资本和发放贷款来降低交易风险。项目由硅谷风投教父Tim Draper领投,近日获得350万美元种子轮融资。Zest采用Stacks二层架构,用户操作与比特币链上的原生BTC交互,无需支付包装费用。上月遭黑客攻击,损失由Zest财库赔付,但已重启开放并上线Stacks市场,即将上线其他功能。据官方数据,已获得超1000万美元的TVL,随着市场热情重新被点燃,Zest或将迎来强劲增长期。.....

    每日资讯 2024-05-15 14:02 233
  • 揭秘TON上假虚拟号骗局:钓鱼团队花式坑蒙拐骗大赏
    揭秘TON上假虚拟号骗局:钓鱼团队花式坑蒙拐骗大赏

    TON生态发展迅速,生态TVL涨幅超70%,达到2.6亿美元。但钓鱼团队通过虚假NFT和假空投欺骗用户,手续费高达1 Toncoin。虚拟号码NFT最高拍卖价达1365 Toncoin,钓鱼团队利用用户的怀疑心理抬高手续费并留住NFT,已有数万美元被骗。提醒大家加强风险意识。.....

    每日资讯 2024-05-15 14:02 819
  • SEC委员、加密货币捍卫者HesterPeirce详谈监管:这六年我非常沮丧
    SEC委员、加密货币捍卫者HesterPeirce详谈监管:这六年我非常沮丧

    Hester Peirce是美国证券交易委员会委员,支持加密货币和区块链技术发展。她提出“安全港”提案,允许去中心化项目发展。与SEC主席Gary Gensler不同,Peirce认为政府应有限介入商业监管。她认为加密带来新参与者和想法,应与其合作。Peirce认为去中心化金融有角色,但不会取代中心化中介。SEC主席Peirce认为加密货币的去中心化不是目的,应关注解决问题的目标。SEC与执法部门合作,但具体案件由工作人员处理。对于DAO报告和XRP案件,SEC不愿发表意见。SEC认为资产本身不是证券,与

    每日资讯 2024-05-15 14:02 874
  • CyberCapital创始人:认可NEAR分片模式,虽有弊端但代表了加密未来
    CyberCapital创始人:认可NEAR分片模式,虽有弊端但代表了加密未来

    Cyber Capital创始人Justin Bons批评SUI代币经济学过于中心化,超80亿枚SUI被质押,且超过84%的质押供应被创始人持有。他对NEAR协议进行了“中立”解读,认为NEAR可以通过分片扩展满足需求,但目前分片尚未完全实现。NEAR的代币经济学和治理机制受到称赞,但作者认为NEAR试图用民主来平衡设计,实际上削弱了治理。Bons驳斥了对分片的批评,认为分片不会影响安全性和可组合性。他希望NEAR能在利益相关者投票上有所建树,因为NEAR代表了加密的未来,虽然落后于竞争对手,但仍是行业技

    每日资讯 2024-05-15 14:02 382