关键词:
发表时间:2021年10月19日
信息来源:bitcoinsv.io
BSV节点软件v1.0.9(正式版)是在v1.0.8(正式版)基础之上的推荐升级版本;这次升级版本改进了安全模式下的处理性能,同时增设了网络回调(webhook)通知、区块内发生双花时的点对点通知消息、以及允许在双花发生时冻结其对应的交易输出。
详细内容列示如下:
- 在区块内有双花发生时,新增点对点通知消息。*
- 改进了的安全模式下的处理性能,包括新增RPC接口允许手动控制安全模式。*
- 在发生链竞争和双花时将有网络回调通知。
- 允许冻结交易输出。*
- 在处理交易链时的性能提升。
对区块预扣(withholding)攻击的响应
背景
在过去的几个月里,BSV网络上发生了多次攻击尝试。攻击涉及挖掘一条隐藏的备用链(长度大于80个区块),然后将其一次性发布到区块链上,使其成为新的主链。新的区块链中用双花交易替换了原始区块链中的一些交易。交易所通常会在存取资金的交易达到一定数量的区块确认(例如攻击者试图替换的交易上已有50个确认)后才认为有效,举例来说,这样可以防止攻击者在存入双花的BSV后就立即开始交易,或在隐藏链中重复之前在主链上的操作再次提取资金。
BSV区块链和其它PoW区块链很容易遭到此类攻击,因为在互相竞争的网络中有大量可随时切换使用的算力。
我们针对此类攻击的对策包括:
- 设置全天候不间断的监控:
• 在网络中出现很长的竞争链时通知矿工。
• 在新链里出现双花交易时通知交易所和用户。 - 请求诚实矿工使用invalidateblock命令将整条隐藏链全部作废,然后回到原来诚实的链上继续挖矿,直至其成为主链。
对安全模式状态改变的通知(竞争链)
如果发生可疑事件(很可能是攻击),交易所和矿工将收到通知。触发条件是网络中突然出现了一条很长的竞争区块链。
区块重组通知也是安全模式通知的一部分。
BSV节点软件目前包含的“安全模式”逻辑可以检测竞争链并停用对钱包的RPC调用(进入安全模式)。安全模式的逻辑已被更新,现在可以配置对链的检测(允许用户根据他们对可疑事件的敏感程度来自定义),并通过网络回调(webhook)触发对交易所、矿工和应用服务提供商的通知。
对双花的通知
交易所和矿工将收到有关BSV网络竞争链最近双花的通知。
区块链监控应用可能会向BSV节点(即挖矿节点)发送DSD点对点通知消息,然后节点会将该消息传播给其它节点。消息里包含了双花证明(区块包含某个交易的Merkle证明)。通知通过网络回调(webhook)发出。
冻结双花交易
BSV节点(特指挖矿节点)现在可以“冻结”特定的TXO(交易输出),例如被双花交易使用的交易输出。
如果某个交易输出被策略冻结,那么节点在挖矿时将不会把试图花费这个TXO的交易放进区块模板中,但会接受包含了花费这个TXO的交易的外部区块。
一些特定改动
DS Detector接口
节点软件将在双花被检测到时收到DSD点对点消息。节点收到DSD消息后,(a)验证DSD消息的有效性(以确保不是恶意伪造),(b)将DSD消息传播给其他节点,以及(c)使用网络回调通知用户。
请注意,没有必要将每个区块中的每个双花都通知给对等节点(peers),只通知在不同区块中相互冲突的单个交易的详细信息,就足够了。
DSD点对点消息
新的DSD点对点消息格式如下:
block_details:
block_header:
点击这里获取DSD点对点消息的技术文档。
网络回调(webhook)DSD通知消息
当在备用链上检测到新的双花时,节点将使用网络回调通知监听器。可以使用新的命令行参数dsdetectedwebhookurl设置网络回调消息的接收者。
DSD通知消息模板示例:
"version" : number,
"blocks : [
"divergentBlockHash" : string,
"headers" : [
"version" : number,
"hashPrevBlock" : string,
"hashMerkleRoot" : string,
"time" : number,
"bits" : number,
"nonce" : number
],
"merkleProof" :
"index" : number,
"txOrId" : string, // Full transaction, serialised, hex-encoded
"targetType": "merkleRoot",
"target" : string, // Merkle-root
"nodes" : [ "hash", ... ]
,
...
]
这个通知消息的文档是docs/web_hooks.md。
RPC接口getblockheader已被更新为报告区块的有效或无效状态。
升级安全模式的触发机制
安全模式会禁用节点的钱包功能导致用户无法花费BSV。当检测到长的竞争(并行)区块链时,安全模式会被触发。即当攻击链被发现时。网络回调用于在安全模式状态发生改变时通知用户。
此次更新还修改了安全模式的触发逻辑。
这个版本引入了3个全新的命令行参数:
- safemodemaxforkdistance,默认值为1000(挖矿7天)
- safemodeminforklength,默认值为3
- safemodeminblockdifference,默认值为-72(在低于当前链高度的链上挖矿12小时)
如果下列条件均被满足,则会触发安全模式:
- 当前块高与分叉处最后一个公共区块头之间的距离小于safemodemaxforkdistance。
- 分叉链的长度超过safemodeminforklength。
- 分叉链累计的工作量证明超过最小的分叉工作量证明(POW)。分叉工作量证明的最小值与活跃链的高度有关,可用此公式计算:< total-proof-of-work-active-chain > + safemodeminblockdifference * < proof-of-work-of-the-active-tip >。实际上,它归结为:如果分叉链的高度大于< height-active-chain-tip > + safemodeminblockdifference,则激活安全模式。请注意,safemodeminblockdifference的负值意味着它会在分叉链的高度低于活跃链时激活安全模式。
当前实现的第一个条件被保留,但会在竞争链超过活动链之前被触发。当竞争链追赶主链到两者的高度差小于safemodeminforklength,或者竞争链高度大于主链高度,安全模式就会被激活。
网络回调DSD通知消息
节点会在自己进入或退出安全模式、或在安全模式中发生了下列任一事件时,通过网络回调通知监听器。
- 非主链被延长
- 拉取到了非主链的最新区块
- 某条链的有效状态发生变化(例如使用了invalidateblock命令)
- 发生了区块重组(reorg)
在初始化区块下载或重建索引时,即使存在触发安全模式的条件也不会有通知发生。
只对当前安全模式状态感兴趣的用户可以查看通知消息中的safemodeenabled 字段(见下文)。
可以使用新的命令行参数safemodewebhookurl来设置网络回调消息的接收者。
安全模式通知消息模板示例:
"safemodeenabled": boolean, // Is the node in the safe mode.
"activetip": // Tip of the main chain.
"hash": string, // Block hash.
"height": number, // Block height.
"blocktime": string, // Human readable, UTC, block time.
"firstseentime": string, // Human readable, UTC, time when the node first received header.
"status": "active" // Status of the block. Possible values: active, invalid
// headers-only, valid-fork, and valid-headers.
,
"timeutc": string, // Human readable, UTC, time of creation of this message.
"reorg": // Information about possible reorg.
"happened": bool, // Indicates if an reorg happened.
"numberofdisconnectedblocks": number, // Number of blocks disconnected in reorg.
"oldtip": // Information about old active tip, "null" if an reorg did not happened.
"hash": string,
"height": number,
"blocktime": string,
"firstseentime": string,
"status": string
,
"forks": [ // List of forks that are triggering the safe mode.
"forkfirstblock": // Root of the fork, this block's parent is on the main chain.
"hash": string,
"height": number,
"blocktime": string,
"firstseentime": string,
"status": string
,
"tips": [ // List of tips of this fork.
"hash": string,
"height": number,
"blocktime": string,
"firstseentime": string,
"status": string
,
...
],
"lastcommonblock": // Block on the main chain which is parent of the "forkfirstblock"
"hash": string,
"height": number,
"blocktime": string,
"firstseentime": string,
"status": string
,
"activechainfirstblock": // Block on the main chain which is child of the "lastcommonblock"
"hash": string,
"height": number,
"blocktime": string,
"firstseentime": string,
"status": string
,
,
...
]
该通知消息的文档也是docs/web_hooks.md。
全新的用于启用和禁用安全模式的RPC方法
这些RPC方法允许用户手动修改安全模式状态,而不需要重启节点软件。
此版本引入了三个全新的RPC接口:
- ignoresafemodeforblock <block_hash> - 在验证是否进入安全模式的条件时,忽略指定的区块及其后面的所有区块。
- reconsidersafemodeforblock <block_hash> - 在验证是否进入安全模式的条件时,考虑指定的区块及其后面的所有区块。
- getsafemodeinfo - 获取安全模式状态的详细信息。
这些RPC设置不会在节点重启后被保留。
对冻结TXO(交易输出)的支持
节点现在可以“冻结”指定的TXO(交易输出)。冻结可被应用在已花费的和未花费的交易输出上,并可被用来确保节点不处理已知的双花。
如果某个TXO被策略冻结,那么节点在挖矿时将不会把试图花费这个TXO的交易放进区块模板中,但会接受包含了花费这个TXO的交易的外部区块。
此版本引入了全新的RPC接口:
- addToPolicyBlacklist < funds : object > - 将某个TXO加入策略冻结黑名单(即不再接受花费这个TXO的交易,但可能接受包含花费这个TXO的交易的区块,如果这个TXO不在共识冻结黑名单中)。
- removeFromPolicyBlacklist < funds : object > - 从策略冻结黑名单中移除某个TXO。
- queryBlacklist – 从数据库中返回所有被冻结的TXO。
- clearBlacklists <removeAllEntries : boolean, default=true> - 从黑名单中移除条目。
性能改进
这个版本优化了在极端负载下节点对长且复杂的链式交易的处理。
请在此下载可执行文件和源代码:https://download.bitcoinsv.io/bitcoinsv/。
如有问题,您可以通过邮件support@bitcoinsv.io或Telegram https://t.me/bitcoinsvsupport联系我们。
感谢您对BSV的持续支持!
本公告代表Steve Shadders和BSV基础架构团队向您发送。
目前,全球已有超过400个项目构建于BSV区块链之上。凭借坚如磐石的协议及超高的网络性能,BSV生态系统迅猛发展,我们期待未来出现更多前所未有的商业应用。
- 对BSV区块链开发感兴趣的朋友可以通过CSDN站内私信联系我们,申请加入BSV开发者交流群。
- 同时,您也可以扫描下方二维码,关注BSV区块链官方微信公众号,了解更多区块链领域的实时资讯。
yc-framework版本更新:v1.0.9
分布式微服务框架:YC-Framework版本更新V1.0.9!!!本文主要内容:1.V1.0.9版本更新主要内容2.YC-Framework新的征程一、V1.0.9版本更新主要内容(1)接入空气质量数据(和风天气API)。(2)新增image-combiner(Java服务端图片合成工 查看详情
bsv基础架构团队正式发布liteclienttoolbox工程中的三个开源项目
...。正式发布BitcoinJ-SVv1.0.1BitcoinJ-SV是旧版BitcoinJ库的轻量级版本,针对可大规模扩容BSV区块链做了大量的优化工作。此次发布的是社区版& 查看详情
mapi软件升级到v1.4.0(正式版)
...所需的IP地址(见下文),以及在交易提交到节点时跳过一些策略检查的能力,例如:“maxtxsizepolicy”:10000000“skipscriptflags”:[“CLEANSTACK”]详细内容列示如下:支持policyQuote和feeQuote为交易构造器提供DSNT信... 查看详情
汇智动力《软件测试课程v8.0版本》正式发布!
...f0c;为了使汇智学子适应科技变化的需要,汇智动力《软件测试课程V8.0版本》也随即正式发布!这套全新升级的V8课程体系,是我们对学员“每年至少进行一次课程重大更新”的承诺。其在之前V7基础上分别做了两个方... 查看详情
springboot3.0正式发布,这份升级指南必须收藏(代码片段)
...支持JakartaEE10。同时借助于GraalVM支持了AOT和NativeImage。3.0升级指南如果你想尝试SpringBoot3.0,不妨参考胖哥精心准备的升级指南。升级JDK首先要升级你的JDK到JDK17,如果你要使用NativeImage特性,要使用GraalVM22.3以上和Native... 查看详情
汇智动力《软件测试课程v8.0版本》正式发布!
...f0c;为了使汇智学子适应科技变化的需要,汇智动力《软件测试课程V8.0版本》也随即正式发布!这套全新升级的V8课程体系,是我们对学员“每年至少进行一 查看详情
软件版本gabetarc含义
...在Alpha版之后推出。RC:(Release Candidate)顾名思义么!用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。GA:GeneralAvailability,正式发布的版本,在国外都是用GA来说明release版本的... 查看详情
vite4.0正式发布!(代码片段)
...比,这个主版本的的更新范围更小,主要目标是升级到Rollup3。Vite团队与生态系统紧密合作,以确保这个新的主要版本顺利升级。Rollup3Vite4.0使用R 查看详情
springboot3.0正式发布及新特性解读(代码片段)
...E10。同时借助于GraalVM支持了AOT和NativeImage。JDK调整首先要升级你的JDK到JDK17,如果你要使用NativeImage特性,要使用GraalVM22.3以上和NativeBuildToolsPlugin0.9.17或更高的版本。平滑升级这里不建议直接从低于SpringBoot2.7的版本直接升... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
....5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化时由于非空模式下导致启动失败#28079当过... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
....5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化时由于非空模式下导致启动失败#28079当过... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
....5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化时由于非空模式下导致启动失败#28079当过... 查看详情
springboot2.5.5正式版发布,matecloud同步完成版本升级
....5版本,此版本包括41个错误修复、文档改进和依赖项升级。二、更新内容2.1bug修复修复执行器端点默认情况下不会清理SPRING_APPLICATION_JSON#28081使用Flyway和SpringIntegration的DataSource初始化时由于非空模式下导致启动失败#28079当过... 查看详情
microsoftgraphjavascriptsdk3.0.0正式发布(代码片段)
...传任务。新版本中引入的更改是不向后兼容的,关于升级客户端的具体操作请参见升级指导书。MicrosoftGraphJSSDK3.0.0需要Node.js12LTS或更高版本。源码使用TypeScript4.x实现。认证增强在这次更新中,微软通过添加对@azure/msal-... 查看详情
microsoftgraphjavascriptsdk3.0.0正式发布(代码片段)
...传任务。新版本中引入的更改是不向后兼容的,关于升级客户端的具体操作请参见升级指导书。MicrosoftGraphJSSDK3.0.0需要Node.js12LTS或更高版本。源码使用TypeScript4.x实现。认证增强在这次更新中,微软通过添加对@azure/msal-... 查看详情
云原生kubernetes集群升级(代码片段)
...群升级指南前言一、集群升级过程辅助命令二、升级master节点2.1、升级kubeadm。2.2、验证升级计划2.3、master节点升级三、升级node节点总结前言本文演示kubernetes集群从v1.24.1升级到v1.25.5。相关文档。一、集群升级过程辅助命令(... 查看详情
exadata中infiniband交换机升级
...独下载的,而之后的版本,infiniband的升级包跟随着存储节点的补丁包一起发布。 图Infiniband交换机的软件补丁包 1.3.3-2版本之前注意:1、1.3.3-2及之前的版本,升级方法基本一样,但不同的版本对应的升级包 查看详情
节点升级后 ESLint/Prettier 抛出错误
】节点升级后ESLint/Prettier抛出错误【英文标题】:ESLint/Prettierthrowerrorsafternodeupgrade【发布时间】:2021-03-0817:41:01【问题描述】:我目前正在使用ESLint和Prettier来lint我的React项目。这是当前使用的节点版本10。运行lint命令时,没有... 查看详情