okx

币安交易所平台|比特币签名:缩短步骤的硬核讲解

时间:2023-08-25|浏览:141

技术的突破是推动区块链行业前进的引擎。币安中国区块链研究院与链闻ChainNews密切关注区块链与密码学等领域技术发展前沿,因此联合推出「他山之石」专栏,向中文读者介绍全球范围内最值得关注的区块链技术进展,以及金融等产业最新的应用分析与动态。希望为中国的区块链行业提供借鉴和思考。

本文介绍了BIP-340提议使用的Schnorr签名与ECDSA签名相比,能够缩短6至9个字节,从而节省更多的区块链存储空间。

撰文:0xB10C,比特币开发者 翻译:ChenBoYu、HsuTzuHsiu

数字签名是比特币协议中的重要组成部分,占据了区块链存储数据的一大部分。本文详细介绍了已编码的椭圆曲线数字签名算法(ECDSA)签名大小在过去几年持续降低的情况,并对新提出的Schnorr签名与目前使用的ECDSA签名的长度进行了比较。

在比特币协议中,没有使用隔离见证(Segwit)的交易,数字签名存放在UTXO中input的SigScript栏位;而使用隔离见证的交易则会存放在Witness栏位。一个数字签名由编码过的r和s值以及说明哪一部分交易进行了签名的SigHash标志组成,其中r和s值都是256比特(32字节)的整数。

DER编码的ECDSA签名 比特币客户端一直依靠OpenSSL进行签名验证和编码。ECDSA签名采用了ANS.1编码规则中定义的唯一编码规则(DER)。虽然DER编码只允许一种唯一的方式来表示签名的字节序列,但OpenSSL库会将由DER标准衍生的其他编码同样视为有效。当OpenSSL库实现发生变化时,会导致一些节点拒绝来自使用旧版本库的节点的链接。因此,BIP-66提出了一个软分叉(Softfork)提案,只有严格遵循DER编码的签名才会被接受。

一个DER编码的ECDSA签名以一个0x30标识符开始,表示一个复合结构。接下来是一个长度字节,表示结构的长度,然后是复合结构本身。复合结构包含r和s的整数值,这些值用0x02标识符表示整数,并在后面跟随一个长度字节,定义各自的值的长度。

然而,ANS.1编码规则使用有符号整数(Signed),而ECDSA的r值和s值是无符号整数(Unsigned)。因此,当r值或s值的第一个比特为1时,会错误地判断数值。为了解决这个问题,我们在数值前加上了一个0x00字节,将无符号整数编码为正整数。在原始的r值与s值中,若第一个比特为1,则称其为高的,否则称其为低的。r值和s值的生成是随机的,在两个值都为高的情况下(两个值的第一个比特都为1),它们都需要在开头加上一个0x00字节。加上了两个额外的字节以及SigHash标志,签名的总长度为73字节。可以发现,对于同一个签名,r和s两个值都为高的概率是25%。直到2014年初,在比特币区块链上的签名中,大约25%为73字节、50%为72字节,大约25%为71字节。2014年3月Bitcoin Core v0.9.0发布后,具有高s值的签名比例开始减少。随着2015年10月Bitcoin Core v0.10.3和v0.11.1的发布,高s值的签名被认定为非标准,以消除可变动性向量。从2015年12月开始,几乎所有交易的签名中的s值都为低的。2018年10月发布的Bitcoin Core v0.17.0版本包含对Bitcoin Core钱包的改进,只产生71字节的签名。通过使用不同的nonce - ALaymansGuidetoaSubsetofASN.1,BER,andDER-AnRSALaboratoriesTechnicalNote-1993 - Createtheshortesttransaction-EternityWallBlog-2017 - ExactprobabilitiesofobtainingaDERencodedsignatureofacertainlength-EternityWallBlog

热点:区块链 区块链行业 币安 币安交易 币安交易所 平台 比特币

欧易

欧易(OKX)

用戶喜愛的交易所

币安

币安(Binance)

已有账号登陆后会弹出下载

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

非小号交易所排名-专业的交易行情资讯门户网站,提供区块链比特币行情查询、比特币价格、比特币钱包、比特币智能合约、比特币量化交易策略分析,狗狗币以太坊以太币玩客币雷达币波场环保币柚子币莱特币瑞波币公信宝等虚拟加密电子数字货币价格查询汇率换算,币看比特儿火币网币安网欧易虎符抹茶XMEX合约交易所APP,比特币挖矿金色财经巴比特范非小号资讯平台。
非小号行情 yonghaoka.cn 飞鸟用好卡 ©2020-2024版权所有 桂ICP备18005582号-1