BSV 节点团队已正式发布节点软件v1.0.0版。这个版本是实施2月4日“创世纪升级”硬分叉的必需版本。点击此处查看比特币及共识规则变更的技术规范。
需要注意的是,请务必于2月4日之前,将所有已安装的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
- 设置异步验证的最长任务时间