主页 > 苹果版imtoken钱包官网 > 比特币改进建议序列化脚本大小限制 520 字节

比特币改进建议序列化脚本大小限制 520 字节

苹果版imtoken钱包官网 2023-06-25 06:14:12

0 有用 +1 票

比特币改进建议

本条目由“科学中国”科学百科词条编撰工作项目审核。

比特币改进提案 (BIP) 为比特币脚本系统描述了一种新的“标准”交易类型,并定义了仅适用于新交易的额外验证规则。

这个 BIP 取代了 BIP 12,它提出了一个新的脚本操作码(“OP_EVAL”)来完成这个 BIP 中的所有操作。这种 BIP(和 BIP 13,支付脚本哈希地址类型)的动机有些争议,有些人认为没有必要,复杂/多签名交易类型应该通过简单地向发送者提供完整的 {序列脚本} 来支持。此 BIP 对将资金发送到 base58 编码的 20 字节比特币地址进行了最小的更改,从而允许商家和交易所以及其他软件开始支持多重签名交易。

中文名

比特币改进建议

外名

7/5000 比特币改进建议。

纪律

金融

字段

区块链金融

比特币提币是什么意思

功能

为新交易定义额外的验证规则

替换

BIP 12

目录

123456

比特币改进方案简介

比特币改进提案 (BIP) 为比特币脚本系统描述了一种新的“标准”交易类型,并定义了仅适用于新交易 [1] 的额外验证规则。

比特币改进提案目的广播

pay-to-script-hash 的目的是将提供条件的责任从资金的发送方转移到接收方。

这样做的好处是允许发件人发起交易,无论多么复杂,都可以使用足够短的 20 字节固定长度散列来扫描二维码或轻松复制和粘贴[1]。

比特币提币是什么意思

比特币改进提案详情广播

定义了一种新的标准交易类型以包含在挖矿区块中:

OP_HASH160 [20-byte-hash-value] OP_EQUAL

[20-byte-hash-value] 应该是将 20 个字节压入堆栈的操作码(0x14),后跟 20 个字节。

这种新的交易类型由标准脚本代码兑换:

签名...{序列化脚本}<​​/p>

只有在序列化脚本(也称为redeemScript)本身是其他标准交易类型之一的情况下,赎回这些按脚本付费的交易才能被视为标准交易。

在传播交易或将它们合并到新块中时验证这些外点的规则如下:

如果 scriptSig(解锁脚本)中存在“推送数据”以外的任何操作,则验证失败。

正常验证完成:从签名和{序列化脚本}创建初始堆栈,并计算脚本的哈希,如果与outpoint的哈希不匹配,则验证失败。

{serialized script} 从初始堆栈中弹出,并使用弹出的堆栈和反序列化脚本作为 scriptPubKey 再次验证事务。

比特币提币是什么意思

这些新规则仅适用于验证时间戳 => 1333238400(2012 年 4 月 1 日)[1] 的区块中的交易。

对于区块链中早于 1333238400 的交易,应用这些新的验证规则将失败。 [2]。旧交易必须根据旧规则进行验证。 (有关详细信息,请参阅向后兼容性部分)。

例如scriptPubKey和对应的scriptSig用于单次签名所需的交易:

scriptSig: [signature] {[pubkey] OP_CHECKSIG} scriptPubKey: OP_HASH160 [20-byte-hash of {[pubkey] OP_CHECKSIG} ] OP_EQUAL

{Serialization Script} 中的签名操作将有助于每个块允许的最大值(20,000) 如下:

OP_CHECKSIG 和 OP_CHECKSIGVERIFY 对于签名操作都计为 1,无论它们是否被评估。

OP_CHECKMULTISIG 和 OP_CHECKMULTISIGVERIFY 之前的 OP_1 到 OP_16 将被计为 1 到 16 次签名操作,无论它们是否被评估。

所有其他 OP_CHECKMULTISIG 和 OP_CHECKMULTISIGVERIFY 计为 20 次签名操作。

例子:

+3 签名操作:{2 [pubkey1] [pubkey2] [pubkey3] 3 OP_CHECKMULTISIG}

+22 签名操作:{OP_CHECKSIG OP_IF OP_CHECKSIGVERIFY OP_ELSE OP_CHECKMULTISIGVERIFY OP_ENDIF}[1]

比特币提币是什么意思

比特币改进提案理论基础广播

此 BIP 取代了 BIP 12,它提出了一个新的脚本操作码 ("OP_EVAL") 来完成此 BIP 中的所有操作。

这个 BIP(和 BIP 13,支付脚本哈希地址类型)的动机有些争议。有些人觉得没有必要,复杂/多签名的交易类型应该通过简单地为发送者提供完整的{serialization script}来实现。此 BIP 对将资金发送到 base58 编码的 20 字节比特币地址进行了最小的更改,从而允许商家和交易所以及其他软件开始支持多重签名交易。

很难识别“特殊”形式的 scriptPubKey 并在检测到时执行额外的验证。然而,共识是替代方案要么越来越复杂,要么危险地放大表达语言的力量。

签名操作计数规则旨在通过静态扫描{序列化脚本}来简单快速地实现。比特币对每个区块规定了最大数量的签名操作比特币提币是什么意思,以防止对矿工的拒绝服务攻击。如果没有限制,流氓矿工可能会广播一个需要数十万次 ECDSA 签名操作来验证的区块,并且可能能够在网络的其余部分工作以验证当前区块的同时开始计算下一个区块。

已确认针对旧实现的攻击比特币提币是什么意思,但在实践中代价高昂且困难重重。攻击是:

攻击者创建一个pay-to-script-hash 交易,该交易对旧软件有效但对新实现无效,并使用它发送一些比特币。

攻击者还创建了一个按脚本付费的标准交易,并向运行旧软件的受害者付款。

攻击者计算出一个包含这两个交易的区块。

如果受害者接受 1 笔确认付款,则攻击者获胜,因为当网络的其余部分覆盖攻击者的无效区块时,两个交易都将失效。

这种攻击代价高昂,因为它要求攻击者创建一个他们知道\将被网络其余部分无效的块。这很困难,因为创建区块的成本非常高,用户不应该接受高价值交易的确认交易[1]。

比特币提币是什么意思

比特币改进提案向后兼容性广播

这些事务对于旧的实现来说是非标准的,它们(通常)不会传播它们或将它们包含在块中。

在验证由完全支持此 BIP 的软件创建的块时,较旧的实现将验证 {serialize script} 的哈希是否匹配,但不会进行其他验证。

有一种情况需要小心处理,以避免区块链被恶意的pay-to-script交易分裂:

pay-to-script-hash 交易对新客户/矿工无效,但对老客户/矿工有效。

为了正确升级并确保不会发生持久的区块链分裂,超过 50% 的矿工必须支持对新交易类型的完全验证,并且必须同时从旧验证规则切换到新规则。

要确定是否有超过 50% 的算力支持此 BIP,矿工需要升级他们的软件并将字符串“/P2SH/”输入到他们创建的区块的 coinbase 交易中。

2012 年 2 月 1 日,检查区块链以确定过去 7 天内支持 pay-to-script-hash 的块数。如果 550 个或更多 coinbase 交易包含“/P2SH/”,则 2/15/2012 00:00:00 之后的所有时间戳块将具有完全验证的 pay-to-script-hash 交易。一周内创建大约 1,000 个区块;因此,550 应该是大约 55% 的网络支持新功能。

如果大多数哈希算力不支持新的验证规则,则推出将被延迟(或者如果明确绝大多数将永远不会实施)[1]。

比特币改进提案序列化脚本大小限制520字节广播

由于向后兼容的要求,序列化脚本本身遵循与任何其他 PUSHDATA 操作相同的规则,包括大于 520 字节的数据可能被压入堆栈的规则。因此,如果引用的兑换脚本长于 520 字节,则无法花费 P2SH 输出。例如,当 OP_CHECKMULTISIG 操作码本身最多可以接受 20 个 pubkey,使用 33 字节的压缩公钥时,它只能通过需要最多 15 个 pubkey 的 P2SH 输出来兑换:3 字节 + 15 pubkeys * 34 字节/ pubkey = 513 字节[1]。

百度百科内容由网友共同编辑。如果您发现您的参赛作品内容不准确或不完整,欢迎您使用我的参赛作品编辑服务(免费)参与更正。现在去>>

进入图集 更多图集

参考文献