比特币签名体积的变化

互联网 阅读 861 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.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:返回栏目 下一篇:返回栏目

相关资讯

  • 以太坊现货ETF,能否成为5月新的叙事?
    以太坊现货ETF,能否成为5月新的叙事?

    比特币现货ETF批准后,传统金融资金涌入加密世界。市场关注以太坊现货ETF,但由于转为PoS和是否被认定为“证券”等原因,市场对其批准并不乐观。知名人士和机构预计可能被拒绝,但灰度仍有信心。4月30日,香港以太坊现货ETF开放交易,投资者交易情况或影响SEC的看法。但从近期动向和机构看,批准可能性不大。.....

    每日资讯 2024-05-19 09:00 54
  • DAI向双稳定币发展,MakerDAO的Endgame“这盘棋”有多大?
    DAI向双稳定币发展,MakerDAO的Endgame“这盘棋”有多大?

    本文介绍了MakerDAO创始人Rune Christensen关于Dai未来发展的两篇文章,讲解了Dai如何在Endgame转型计划中实现双向“制导”,即去中心化和中心化两种稳定币新品牌。文章提出了两种解决稳定币三难困境的路径,分别是优先考虑效用和规模和走纯粹去中心化的路径,并披露了两种不同品牌的具体发展规划。未来,NewStable将继承大多数Dai的用例,专注于大众市场的采用和符合监管要求的现实世界资产支持,而PureDai则专注于实现完全去中心化的稳定币,通过与SubDAO生态系统合作,提供合法用

    每日资讯 2024-05-18 16:01 296
  • Coingecko:谁是交易速度最快的区块链?
    Coingecko:谁是交易速度最快的区块链?

    链上活动不断增加。Solana是最快的,以太坊是最慢的。.....

    每日资讯 2024-05-18 16:01 641
  • 「KOL轮融资」:新的暴富之路or下一个被SEC盯上的猎物
    「KOL轮融资」:新的暴富之路or下一个被SEC盯上的猎物

    3月,加密货币市场蓬勃发展,比特币创新高,数十亿美元流入新的ETF产品。Monad Labs获得30亿美元估值的融资,其中一些KOL以折扣价投资。KOL轮融资类似名人交易,但引发信息披露不充分和散户投资者面临风险的争议。美国SEC打击名人交易,KOL网络存在虚假账号投资的问题。KOL交易细节难以获得,但通常通过书面合同或Telegram完成。加密货币初创项目吸引KOL投资,但也面临融资困难。用户需自行承担风险。.....

    每日资讯 2024-05-18 16:01 457
  • Starknet的空投到底成不成功?
    Starknet的空投到底成不成功?

    本文比较了Starknet和Optimism两次代币空投的差异,发现Optimism更节省Gas,但Starknet的数据收集困难。数据显示,只有39.8%的人领取了空投,且空投效果不佳,只有1.1%的用户最终保留了代币。代币价格下跌50%,但TVL保持稳定。总体来看,这次空投并不成功。STARK空投效果不佳,只有1.1%的用户保留了代币,但从保留和CAC角度来看,相对成功。STARK采取了多样性分配代币的思路,但收集和分析数据仍然困难,需要更合适的工具。.....

    每日资讯 2024-05-18 16:01 492
  • Notcoin催生注意力经济赛道,Pump.fun遭受攻击|ForesightVenturesWeeklyBrief
    Notcoin催生注意力经济赛道,Pump.fun遭受攻击|ForesightVenturesWeeklyBrief

    本周市场观点:美国CPI放缓,降息预期重燃,美股大涨,加密市场跟随反弹。BTC震荡反弹,ETH/BTC汇率走低,主线围绕Meme和AI板块。投资情绪降温,机构资金净流入,期货多空比偏悲观。NFT市场蓝筹项目地板价有涨有跌,交易量下降,ETH、BSC、Polygon等平台锁仓量有变化。EthStorage获得Optimism资助,Accseal与Ingonyama建立合作,bitSmiley上线Merlin主网。NFT市场整体低迷。.....

    每日资讯 2024-05-18 14:01 101
  • 加密空投「常态化」,是泡沫还是价值发现
    加密空投「常态化」,是泡沫还是价值发现

    空投是加密货币领域的热门话题,最初只是奖励用户免费代币,现已发展为复杂的系统。最早的大型空投由Uniswap发起,向曾在其交易所进行过代币互换的用户发放400个UNI。空投概念已成为协议的代币分配计划,用户可以轻松获得数千美元的回报。但也出现了副作用,使空投变成一种价值观单一的挖矿活动。近期,不少项目在牛市中完成空投,但用户往往会立即抛售代币,加剧了代币被高估的问题。仍有一些项目值得参与,如在ETH和稳定币上赚取高年收益。随着协议和用户偏好的发展,空投将继续演化,仍将存在。.....

    每日资讯 2024-05-18 14:01 560
  • 被“示好币圈版”特朗普多次引用,加密预测市场Polymarket到底有何来头?
    被“示好币圈版”特朗普多次引用,加密预测市场Polymarket到底有何来头?

    2024年1月15日,特朗普在艾奥瓦州共和党首次党内初选中获胜,这一结果被视为总统选举的重要“风向标”。特朗普在其创办的加密预测市场Polymarket上多次转发自己的领先胜率,该平台吸引了大量用户,其最大优势在于敏感的热点嗅觉和活跃的评论区。然而,其激进的运营风格也带来了一些风险。随着全球大选的临近,Polymarket有望吸引更多用户并实现积极的增长。.....

    每日资讯 2024-05-18 14:01 268