Author Topic: 新版重钱包 2.0.180425  (Read 2007 times)

0 Members and 1 Guest are viewing this topic.

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
BTS 2.0.180425 新版本已发布。这是一个BUG修复版本。

下载地址: https://github.com/bitshares/bitshares-core/releases/tag/2.0.180425

这个版本修复了一个账户历史插件的问题,该问题会导致某些情况下节点会记录错误的操作历史ID。主要影响第三方合作者进行系统对接。

这个问题不影响共识和安全。

## 谁需要更新,需要怎么做

交易所、网关、商户等第三方合作者,如果运行 witness_node 节点时使用了 `track-account` 参数,并且依赖于操作历史 ID (即 `1.11.x`)来唯一识别转账等交易记录,那么很可能已经受到这个BUG影响。

解决方法:
1. 升级到新版本;
2. 使用 `--replay-blockchain` 参数重启节点;
3. 仔细检查以往处理过的操作历史记录 ,和升级后的节点返回的 ID 进行对比,如果需要,处理好其中的差异;
4. 可能需要重新审查业务处理逻辑。

请注意,上面第3点很重要,其目的是为了防止同一笔交易(比如充值)被重复处理,导致损失。因为使用 `--replay-blockchain` 参数重启后,账户操作历史ID可能已经发生变化,比如,某一笔充值在升级前的 ID 是 `1.11.123456789` ,升级后可能变成了 `1.11.123456700` ,如果对接程序不能识别这两个ID其实对应的是同一笔交易,会导致重复入账,带来资金损失。

之前的版本都受到这个bug影响。

## 谁没有受影响

这里列出若干种可能没有受到bug影响的情形。但是,为了您的资金安全,请自行甄别确定是否受到影响。

* 这个bug不影响 `delayed_node` ,所以 `delayed_node` 返回的数据一直是准确的,虽然 `delayed_node` 连接到的 `witness_node` 数据可能不准确。如果对接程序只从 `delayed_node` 获取操作历史 ID,那么应该没有受到bug影响。
  * 注意,如果对接程序也从 `witness_node` 读取数据,则可能受到bug影响

* 不依赖 `1.11.x` 这种ID来识别唯一交易的对接程序,比如按照交易的txID或者签名来识别的,不受这个bug影响。

* 没有使用 `track-account` 参数的节点不受这个BUG影响。
  * 使用默认参数运行的节点不受影响
  * 见证人、API节点、种子节点一般不会使用 `track-account` 参数,所以应该不受影响

* 个人节点可能会配置 `track-account` 参数,所以可能受到影响;但是,一般用户使用节点时,并不关心 `1.11.x` 这种操作历史ID,所以一般来说不用升级。

## 关于BUG的更多信息

如果使用了 `track-account` 参数,当网络发生分叉(常见的原因比如延迟),没升级的节点的账户历史插件会跳过一些操作ID,导致后续的操作ID都不正确。在使用 `--replay-blockchain` 参数重启后,账户历史插件内部的老数据的ID会被自动修正,但是新的数据ID还是可能出错。

升级后的节点不会再跳过ID,保证ID连续,所以不再会有这个问题。

相关 issue 和 pull request 见 https://github.com/bitshares/bitshares-core/issues/585 , https://github.com/bitshares/bitshares-core/pull/873

BitShares committee member: abit
BitShares witness: in.abit