Please note, this is a STATIC archive of website bitcoinsv.io from October 2020, cach3.com does not collect or store any user information, there is no "phishing" involved.
“创世纪升级”技术变更”
by Aleksander Gora
一月 15, 2020 (1min read)
BSV 节点团队已正式发布节点软件v1.0.0版。这个版本是实施2月4日“创世纪升级”硬分叉的必需版本。...

BSV 节点团队已正式发布节点软件v1.0.0版。这个版本是实施2月4日“创世纪升级”硬分叉的必需版本点击此处查看比特币及共识规则变更的技术规范。

需要注意的是,请务必于24日之前,将所有已安装的BSV节点软件升级至v1.0.0版。由于旧版节点软件与新规则不兼容,导致它将于2月4日之后失效。

重点变更

必要共识参数

必要共识参数必须由系统管理员进行配置。 当未配置参数时,软件无法正常启动。 如需了解必要共识参数的更多信息,请访问此链接

区块体积硬顶

区块体积硬顶参数定义了软件允许进行交易验证的最大区块体积。对于体积大于该参数的区块,软件将不进行检索及验证。

脚本运算允许使用的最大栈内存

本必要共识参数定义了脚本在运算时允许使用的最大栈内存。如果脚本尝试使用超过参数定义值的内存量,将中止脚本的运行,导致脚本失败。

共识变更

恢复 OP_RETURN 的功能

将OP_RETURN的功能恢复到其最初的设计,从而使开发人员能够轻松地提前中止脚本运行,同时还可得到有效的返回值。

 

BigNumber 替代 32 位操作码

将大大提高比特币脚本语言的数学能力。 32位的容量十分有限,在执行复杂的数学运算(例如签名验证)时,会很棘手且效率不高。此项更改将恢复最初的设计,提升复杂运算的效率,并启用提供各种高级功能的复杂脚本。

在新交易中废止使用P2SH

Pay-to-script-hash(或P2SH)是比特币引入的一种新机制,用于在创建输出脚本时隐藏行踪。这与比特币诚实记录的哲学背道而驰。此外,P2SH鼓励了不良的隐秘活动在其上大肆交易,并且与比特币至关重要的点对点主张相背离。现有P2SH地址上的比特币将不受影响,因此不需要整理旧钱包。这项变更是为了阻止进行新的P2SH输出。

 

恢复nLockTime 和 nSequence 的最初用法

这两个字段是支付通道机制中不可或缺的一部分,中本聪将它们设计为用于进行高速微支付的基本机制。但是后来BTC Core开发人员将它们重新定义为两个新的操作码。除了要删除这些操作码,还要恢复nLockTime和nSequence的最初用法。

 

其它必需的变更

对点传播非标交易

将允许任何人都可以使用复杂交易。在创世纪升级之前,只有标准交易(如支付交易或普通数据交易)才会被点对点传播,并传至矿工。这意味着,如果你想使用复杂的交易,你必须先与一个矿工达成协议,要求矿工进行确认并打包。在创世纪升级之后,所有交易类型都可进行点对点传播,这样任何人都可以使用复杂交易。

 

补充共识变更

  • 创世纪升级的区块高度激活机制
  • UTXO 继承依赖规则
  • 正式脚本语法
  • scriptSig中只能包含OP_PUSHDATA操作
  • 在新交易中废止使用OP_CHECKLOCKTIMEVERIFY和OP_CHECKSEQUENCEVERIFY
  • 添加max_script_memory_usage的策略限制,默认值为100MB
  • 添加max_script_memory_usage的共识限制,默认值为无限大
  • 取消对每MB块空间的签名数的共识上限
  • 取消对每笔交易的签名数的共识上限
  • 取消对每个脚本的操作码数量的共识上限
  • 取消对每个脚本对象体积的共识上限
  • 取消对脚本中对象数量的共识上限
  • 取消对每个multisig公钥数量的共识上限
  • 将交易体积的共识上限提高到1 GB

 

性能改善

  • 并行区块验证
  • 单独处理低优先级队列中的非标交易
  • 为标准交易和非标交易设定评估超时策略的脚本
  • Inv信息中包含按验证次序排序的tx
  • 并行区块验证的增强测试
  • 常见的创世纪激活代码与命令行选项
  • 在创世纪升级之后,在主网上启用对非标准交易的验证
  • 将内存池的默认值设为1GB
  • 删除User Agent中的区块大小字段
  • 更改默认交易费(默认打包费率为0.5默认允许的最低转播费率为0.25聪/字节)
  • 更新SPV布隆过滤器,以避免重放攻击
  • 提高无序化预分配的性能
  • 更改日志消息,使其内容更加精准
  • 修复:验证非标准事务时,可能将节点锁定超过一分钟
  • 修复:在验证交易时,使用“拒绝提示”和“封禁记分”功能
  • 修复:区块发送列队溢出
  • 修复:bsv::deserialize函数中的未定义行为
  • 修复:“bitcoin-cli help getblock”无法正常运行
  • 修复:当检测不到Boost参数时,应当配置失败
  • 修复:对创世纪新功能的测试,设置执行权限位
  • 修复:最近区块中位数时间
  • 修复:无输入的非最终交易,会被错误拒绝
  • 修复:asn1_integer的内存泄露
  • 修复:boost::optional 函数的警告
  • 修复:源码包中未包含py
  • 修复:Fundrawtransaction RPC changePosition 参数导致访问超出范围
  • 添加基本的 –enable-tcmalloc 选项
  • 修复:CTxnDoubleSpendDetector 删除向量末尾
  • 修复:大于2GB的数据的lshift和rshift
  • 为创世纪升级作准备,更新RDP
  • 设置异步验证的最长任务时间
BitcoinSV-zh