发表时间:2021年11月25日
信息来源:bitcoinsv.io
BSV节点软件v1.0.10(正式版)是在v1.0.9(正式版)基础之上的推荐升级版本;本次升级版软件带来了一系列的功能改进和性能提升。
详细内容列示如下:
- 对并行交易验证(Parallel Transaction Validation,PTV)调度器的改进
- 对用户代理(User Agent)字符串处理逻辑的调整
- 更新maxscriptsizepolicy和maxscriptnumlengthpolicy的默认值
- 更新点对点(P2P)消息头:
o 版本号
o 变更描述 - sendrawtransactions 提供跳过某些策略验证的选项
- 全新的ZMQ主题(topic)
o 原来的rawtx、hashtx、rawblock、hashblock topicstx通知
o 新增的rawtx2、hashtx2、rawblock2、hashblock2 topicstx通知 - 可配置的超时时间
对并行交易验证(PTV)调度器的改进
对交易无序到达时长且复杂交易图的处理进行了性能改进。
对用户代理(User Agent)字符串处理逻辑的调整
目前,BSV节点可能会连接到BCH节点(在BSV GitHub上有关于如何避免这种情况的建议)。这不会引起任何严重的问题,但会导致带宽浪费和处理无效区块。处理无效区块会产生错误消息,这些消息会污染日志文件,导致很难查看当前的实际情况。采取以下措施可以让节点尽可能只连接到其它BSV节点:
- banclientua – 禁止的用户代理字符串子串的列表(节点将禁止
任何返回这些用户代理字符串的对等节点),默认列表值被设置为:“abc”、“cash”、“bch”; - allowclientua – 新引入的配置选项,包含允许的用户代理字符串子串的列表,这些值会覆盖banclientua的设置。默认列表值为空。
字符串匹配不区分大小写。请注意,如果在节点配置文件或命令行中设置了单个banclientua参数的值,则它的默认列表值将被清空。
配置示例:
banclientua=XYZ
banclientua=ABC
allowclientua=its-not-abc
这个配置将允许/禁止下列用户代理字符串:
‘ThisAbcClient’ # 禁止,匹配ABC
‘ThisBchClient’ # 允许,因为默认值被清空,所以可以连接返回“cash”或“bch”的节点
‘I-cant-believe-its-not-ABC’ # 允许,虽然匹配ABC但也匹配its-not-abc,后者优先级更高
更新maxscriptsizepolicy和maxscriptnumlengthpolicy的默认值
maxscriptsizepolicy和maxscriptnumlengthpolicy配置项的默认值已更新。
- maxscriptsizepolicy的默认值从原来的10,000改为500,000
- maxscriptnumlengthpolicy 的默认值从原来的250,000改为10,000
更新点对点(P2P)信息头
网络上的每一条点对点消息都有相同的基本结构:一个24字节的信息头,后面跟着具体的载荷数据。信息头中包含了描述载荷数据长度的字段,该字段目前使用uint32_t类型编码。因此,这限制了所有消息载荷的长度都不能超过4GB。
为了支持大于4GB的区块,我们对点对点消息的结构进行了改进以克服此限制。
版本号
在这次升级中,点对点协议的版本号已从70015增加到了70016。这能让节点提前知道连接到自己的对等节点是否能理解新的扩展消息格式,从而避免向对方发送这些使用了新格式的消息。遵循此规则的节点不得向版本号低于70016的节点发送使用扩展格式的消息,否则将被对方禁止。
变更描述
总的来说,对点对点消息的更改涉及在现有信息头的某些字段上设置特殊值,这个标记可以被支持此类更改的对等节点识别,以指示这是一条具有大数据载荷的消息。这些特殊值还允许不理解它们的对等节点拒绝这样的消息,并在遇到这样的消息时直接失败。
现有的点对点消息头包含一个12字节的消息类型字段。我们引入了一个新的消息类型extmsg(扩展消息的缩写),当看到这个值时,它会向接收者指示在这个消息头之后是一些新的扩展消息的信息头,然后才是真正的数据载荷。
建议的扩展消息完整格式如下所示:
sendrawtransactions – 提供跳过某些策略验证的选项
现在使用sendrawtransactions RPC时可以对特定的一笔交易或特定的一批交易(前者的优先级更高)指定新的参数配置,来覆盖当前既定的交易规则参数。
这些交易规则参数并未凌架于共识规则之上。
使用sendrawtransactions RPC时,可以指定覆盖既定配置的参数有:maxtxsizepolicy、datacarriersize、maxscriptsizepolicy、maxscriptnumlengthpolicy、maxstackmemoryusagepolicy、limitancestorcount、limitcpfpgroupmemberscount、acceptnonstdoutputs、datacarrier、dustrelayfee、maxstdtxvalidationduration、maxnonstdtxvalidationduration、minconsolidationfactor、maxconsolidationinputscriptsize、minconfconsolidationinput、acceptnonstdconsolidationinput、dustlimitfactor、skipscriptflags
例1:针对特定一笔交易覆盖既定配置参数的方法
sendrawtransactions([{‘hex’: signed_tx, ‘dontcheckfee’: True, ‘config’: {“maxtxsizepolicy”: 10000000, “minconfconsolidationinput”: 200, “skipscriptflags”: [“CLEANSTACK”, “DERSIG”]}…])
例2:针对特定一批交易覆盖既定配置参数的方法
sendrawtransactions([{‘hex’: signed_tx, ‘dontcheckfee’: True}, …], {“maxtxsizepolicy”: 10000000, “minconfconsolidationinput”: 200, “skipscriptflags”: [“CLEANSTACK”, “DERSIG”]})
全新的ZMQ主题(topic)
全新的ZMQ主题已添加到节点中。原来的和新增的ZMQ主题之间的差异如下所示。
原来的rawtx、hashtx、rawblock、hashblock主题
交易通知:
• 在交易被内存池接受时发布交易
• 当包含某交易的区块连接时发布交易
• 当包含某交易的区块断开连接时发布交易
区块通知:
• 当区块连接上区块链时发布区块
• 在发生区块重组时仅发布最新区块
新增的rawtx2、hashtx2、rawblock2、hashblock2主题
交易通知:
• 在交易被第一次看到时发布交易:
• 交易被内存池接受,或者
• 交易出现在收到的某个区块中,且内存池里没有
• 当挖出(连接)一个区块时,我们会发布之前没有发布过的交易(通常只有coinbase交易)
• 当收到一个有效区块,我们会发布之前没有发布过的交易(出现在区块中但不在内存池中的交易)
• 我们不会在包含某交易的区块断开连接时发布该交易
区块通知:
• 我们会发布每个连接上区块链的区块
当发生区块重组时,针对每个交易和连接的区块我们都会收到一次通知:
• 当来自断开连接的区块内的交易被内存池接受时,或
• 当包含某交易的较长链中的新区块连接时
• 我们会发布每个新的较长链中的连接区块,而不仅仅是最新区块
• !来自断开连接的区块内的coinbase交易不会被发布!
可配置的超时时间
新的配置选项可被用于解决下载超时的潜在问题。
• blockdownloadtimeoutbasepercent (默认值为100%,即10分钟)
• blockdownloadtimeoutbaseibdpercent (默认值为600%,即60分钟)
• blockdownloadtimeoutbaseperpeerpercent (默认值为50%,即5分钟)
区块下载超时时间的计算方法
如果区块被当作初始区块下载(IBD)的一部分被下载,那么
base-timeout = blockdownloadtimeoutbaseibdpercent
否则
base-timeout = lockdownloadtimeoutbasepercent
超时时间的计算方法如下
最大下载超时时间 = 10 分钟 * (base-timeout + 对等节点的个数 * blockdownloadtimeoutbaseperpeerpercent)
例如,如果节点连接了3个对等节点,那么默认的IBD超时时间将是10分钟 * (600 + 3 * 50)% = 10分钟 * 750% = 75分钟。
请在此下载可执行文件和源代码:https://download.bitcoinsv.io/bitcoinsv/。
如有问题,您可以通过邮件support@bitcoinsv.io或Telegram https://t.me/bitcoinsvsupport联系我们。
目前,全球已有超过400个项目构建于BSV区块链之上。凭借坚如磐石的协议及超高的网络性能,BSV生态系统迅猛发展,我们期待未来出现更多前所未有的商业应用。
- 对BSV区块链开发感兴趣的朋友可以通过CSDN站内私信联系我们,申请加入BSV开发者交流群。
- 同时,您也可以扫描下方二维码,关注BSV区块链官方
本文链接:http://m.zhangshiyu.com/post/37452.html