他山之石丨硬核讲解比特币签名如何一步步缩短
时间:2023-03-29
技术的突破是推动区块链行业前进的引擎,binance中国区块链研究院与链闻 ChainNews 同为密切关注区块链与密码学等领域技术发展前沿的组织,故而联合推出「他山之石」专栏,向中文世界读者介绍全球范围最值得关注的区块链技术进展,以及在金融等产业最新的应用分析与动态,以期为中国的区块链行业「攻玉」提供借鉴和思考。
本文介绍了 BIP-340 提议使用的 Schnorr 签名与 ECDSA 签名相比,缩短了 6 到 9 个字节,可节省更多区块链空间。
撰文:0xB10C,比特币开发者
翻译:Chen Bo Yu、Hsu Tzu Hsiu
数字签名是比特币协议中的重要构件,占区块链上存储数据的很大一部分。这篇文章详细介绍了已编码的椭圆曲线数字签名算法(ECDSA)签名大小在过去几年中是讲解持续的降低,以及对新提出的 Schnorr 签名与目前使用的 ECDSA 签名的长度进行了比较。
在比特币协议中,没有使用隔离见证 (Segwit)的交易,数字签名存放于 UTXO 中 input 的 SigScript 栏位,而使用隔离见证的交易则会存放于 Witness 栏位。一个数字签名由编码过的 r 和 s 值以及说明了对交易的哪一个部分进行了签名的 SigHash 标志组成,其中 r 和 s 值都是 256 比特(32 字节)的整数。
比特币客户端自第一个版本以来,都是依靠 OpenSSL 进行签名验证和编码。ECDSA 签名采用 ANS.1 编码规则中定义的唯一编码规则(DER)进行编码。虽然 DER 编码只允许字节序列以唯一的一种方式表示签名,但 OpenSSL 库会将由 DER 标准所衍生的其他编码同样视为有效的。而当 OpenSSL 库中这一特性发生变化时,会导致一些使用较新 OpenSSL 版本的节点拒绝来自使用旧版本库的节点的链。为此,BIP-66 提出了一个软分叉(Soft fork)的提案,只有严格遵循 DER 编码的签名才会被接受。
一个 DER 编码的 ECDSA 签名以一个 0x30 标识符开始,标识一个复合结构。下面的是一个长度字节,表示结构的长度,然后是复合结构本身。复合结构包含 r 和 s 的整数值,这些值用会将用来表示整数的 0x02 标识符放在开头,后面是一个长度字节,定义各自的值的长度。
比特币中 DER 编码的数字签名格式
然而 ANS.1 编码规则中使用的是有符号整数(Signed),而 ECDSA 中的 r 值和 s 值是无符号整数(Unsigned),因此当 r 值或 s 值的第一个比特被设置为 1 时数值会被错误的判断。为了解决这个问题,在数值前加上了一个 0x00 字节,让无符号整数被编码为一个正整数。在原始的 r 值与 s 值中,若第一个比特为 1 则我们称它为高的,否则被称为低的。
由高的 r 与高的 s 所组成的 73 字节比特币 ECDSA 签名
r 值和 s 值的产生是随机的,当两个值都为高时(两个值的第一个比特都为 1),它们都需要在开头加上一个 0x00 字节。加上了两个额外的字节以及 SigHash 标志,签名的总长度为 73 字节。可以发现到在同一个签名中,r 与 s 两个值都为高的概率是 25%。直到 2014 年初,在比特币区块链上的签名可以观察到大约 25% 为 73 字节、50% 为 72 字节和大约 25% 为 71 字节的分布。在 72 字节的签名中,两个值中一个是高的,另一个是低的,而在 71 字节的签名中,两个值都是低的。
2014 年 3 月 Bitcoin Core v0.9.0 发布后,具有高 s 值的签名比例开始减少。这个版本包含了对 Bitcoin Core 钱包的修改,让钱包只创建低 s 值的签名。随着 2015 年 10 月 Bitcoin Core v0.10.3 和 v0.11.1 的发布,高 s 值的签名被认定为非标准签名,以彻底消除可变动性向量。这就禁止了高 s 值的交易被转发或用于挖矿。从 2015 年 12 月开始,在比特币区块链上几乎所有交易的签名中的 s 值都为低的。
由高的 r 与低的 s 所组成的 72 字节比特币 ECDSA 签名
2015 年 12 月至 2018 年初,区块链上的签名几乎平均长度在 72 和 71 字节之间。 72 字节的签名中有一个高的 r 值和一个低的 s 值,并且需要一个预置的 0x00 字节。而 71 字节的签名是由低的 r 值和低的 s 值组成。
2017 年 8 月底,隔离见证(Segwit)软分叉激活。隔离见证将包含签名等内容的 SigScript 移入 Witness 栏位中。虽然在计算交易的大小时,隔离见证交易的签名将不列入计算,但区块链上的签名大小实际上是不变的。
由低的 r 与低的 s 所组成的 71 字节比特币 ECDSA 签名
2018 年 10 月发布的 Bitcoin Core v0.17.0 版本包含了对 Bitcoin Core 钱包的改进,只产生 71 字节的签名。通过用不同的 nonce 重新签署交易,可以产生新的 r 值,直到找到一个低的 r 值。该技术已被其他项目采用,如 NBitcoin 库和 Electrum 比特币钱包。
BIP-340 为比特币引入了 Schnorr 签名,而 BIP-341 提出了基于 Schnorr 签名、Taproot 和 Merkle 分支的第一个版本的 SegWit 输出类型及其支出规则。与 ECDSA 签名不同的地方是,Schnorr 签名不是 DER 编码的。
Schnorr 签名的格式
Schnorr 签名包含 32 字节的 r 值和 32 字节的 s 值。最常用的 SigHash 标志 SIGHASH_ALL 是默认的,不需要明确设置,而其他的 SigHash 标志被放在 s 值之后。使用默认 SIGHASH_ALL 标志的 Schnorr 签名的长度正好是 64 个字节,使用不同的 SigHash 标志的签名长度则为 65 字节。
一个 64 字节的 SIGHASH_ALL 比特币 Schnorr 签名
与 ECDSA 签名相比,Schnorr 签名缩短了 6 到 9 个字节。这些节省来自于被移除的编码开销和默认的 SigHash 标志。在 Schnorr 签名采用率为 20% 的情况下,假设每天花费的 800,000 个 UTXO input 中都只包含一个签名,那么每天可以节省 1MB 上面这些的区块链空间。
相关阅读
A Layman’s Guide to a Subset of ASN.1, BER, and DER – An RSA Laboratories Technical Note – 1993Create the shortest transaction – Eternity Wall Blog – 2017Exact probabilities of obtaining a DER encoded signature of a certain length – Eternity Wall Blog来源链接:b10c.me
相关阅读
更多
- IMG钱包_IMG钱包软件 05-10
- meme币软件交易中心安卓版 meme币软件可靠吗? 05-10
- meme币软件安卓版下载 memebinance卓平台客户端下载 05-10
- meme币交易所在中国合法吗?meme币交易所合法性简述 05-10
- meme币交易所官方下载地址 meme币交易所官网下载地址 05-10
- meme币交易所下载教程 meme币最新版下载官方app苹果手机怎么下载 05-10
- meme币网页版登录 meme币网页版官网注册地址 05-10
- meme币交易所app下载地址 meme币交易所下载地址 05-10
- meme币下载安装 meme币6.1.18版安卓 05-10
- meme币交易所app 下载苹果手机 05-10
- meme币最新版下载链接 memebinance卓手机端下载app 05-10
- meme币交易所安卓版地址 meme币交易所最新版安卓 05-10
- meme币交易所安卓软件下载 meme币钱包安卓最新版地址 05-10
- meme币官方版交易中心 meme币官方手机平台app 05-10
猜你喜欢
-
- 安卓12正式版安装包
- 类型:[db:筛选栏目]
- 安卓12安装包下载 安卓12正式版安装包
-
- 荣耀平板V7升级推送Magic UI 5.0.0.122版本安装包
- 类型:[db:筛选栏目]
- 荣耀平板V7升级Magic UI 5.0.0.122版本下载 荣耀平板V7升级推送Magic UI 5.0.0.122版本安装包
-
- 谷歌安卓Android 12正式版官方更新
- 类型:[db:筛选栏目]
- 谷歌 Android 12正式版下载 谷歌安卓Android 12正式版官方更新
-
- 山东农机补贴最新版本
- 类型:[db:筛选栏目]
- 山东农机补贴 民生 补贴 申请 山东农机补贴最新版本下载
-
- 3d风水罗盘官方免费(3d罗盘指南针)
- 类型:[db:筛选栏目]
- 3d风水罗盘 指南针 坐标 3d风水罗盘官方免费(3d罗盘指南针)下载
-
- 黑鲨散热器app
- 类型:[db:筛选栏目]
- 黑鲨散热器app 黑鲨散热器app下载 黑鲨散热器app安卓版下载
热门资讯
- 1 中国广电手机资费公布:4G、5G最低19元月租套餐
- 2 不停追风口的360,元宇宙“N世界”能否装下周鸿祎的野心?
- 3 全球浏览器占比排名:第一有近70%人在用 毫无竞争对手
- 4 中国联通华为P50 Pro手机5G通信壳正式开售 售价799元
- 5 孩子居家、上网课,如何做到身心健康?权威机构支招
- 6 魔兽世界黑盒工坊打不开解决办法 WLK前夕黑盒工坊网络错误怎么办
- 7 中国声明的5G标准必要专利达1.8万项
- 8 vivo Y72t上架官网:主打千元5G长续航
- 9 深信服“离职倾向分析”专利曝光:能通过公司网络监控员工上网行为
- 10 亚马逊电子书退出国内市场 程序员开发Kindle助手:一键下载保存
应用推荐
换一换
下载排行
更多