Skip to content

fix(dioxide): coordinate concurrent ISNs across plugins and Python callers - #6

Draft
fengjy73 wants to merge 16 commits into
feat/add-monitor-module-and-monitor-system-simulatorfrom
fix/dioxide-isn-coordination
Draft

fix(dioxide): coordinate concurrent ISNs across plugins and Python callers#6
fengjy73 wants to merge 16 commits into
feat/add-monitor-module-and-monitor-system-simulatorfrom
fix/dioxide-isn-coordination

Conversation

@fengjy73

@fengjy73 fengjy73 commented Sep 4, 2026

Copy link
Copy Markdown

问题与范围

Dioxide tx.compose 不预留 ISN。diox04/diox11 共用签名账户,而 Relayer 无序消息按不同会话并发提交,插件对象锁不能保护跨插件/跨进程账户。只读并发探测中四次 compose 均返回 181,账户 ISN 未变化。

修复

  • 共享 MySQL bridge_tx_account / bridge_tx_submission,网络实例 + 有效 sender/delegatee 账户协调;数据库不可用时 fail closed。
  • 显式 ISN、签名先持久化后广播,结果未知重用原字节;UCP + 目标域 + 操作类型生成稳定内部 submissionId,通过可选 gRPC 字段传递。其他链 SPI 保持兼容。
  • 两个 Dioxide 插件与 Python Runner/维护工具使用同一规则;跨 PF4J 类加载器正确加载 JDBC 驱动。
  • SDP 查询 mailbox 跨进程锁;同步等待超时和内部 relay 失败不能返回成功。
  • 不修改公共 API、链账户、合约、前端、端口,不补发或改写任何历史失败业务。

已完成验证

  • Java 8 协调单测 8 项;两个 Java + 两个 Python 进程 128 个唯一 ISN。
  • Java 签名落库后退出,Python 恢复原记录/ISN;Python 两进程 64 个唯一 ISN。
  • 两个插件分别 14 项 finality/完整 RPC JSON 测试;Relayer 定向测试、Java 8 生产包、Java 21 Plugin Server/插件构建通过。
  • Python 10 项测试,包括签名前/后进程退出恢复、两 Java/两 Python 共用查询 mailbox 的 32 次读回。
  • Runner 现有 4 项测试通过。

发布与实链验收

已部署新 Relayer、Plugin Server、两个插件、Python 模块及 Runner adapters,独立表和 root-only 配置生效,旧包已备份。

  • Mychain→diox04 监管 3×32 条全部闭环;另 32 条跨插件竞争批次全部闭环;正文各执行一次,PTC 100%、监管四阶段完整。
  • 实际交错分配 ISN 306(diox11)、307(diox04)、308(diox11)、309(diox04);9月4日21:29全库227条ISN唯一且全部FINALIZED,无abort。
  • Dioxide→Ethereum 普通反向成功,同 operationId 重复调用返回同一原哈希;没有生成第二笔业务交易。
  • Dioxide→Ethereum 监管反向亦 SUCCESS,PTC 100%、监管四阶段完整,两种反向正文精确一致。
  • Ethereum→FISCO SDP V1/V2/V3 新消息均成功、PTC 100%、监管四阶段完整;只读 SDK 核对三个目标业务事件正文精确一致、各一份。
  • Ethereum普通三批现为96/96成功:另获授权的采集/PTC修复PR #7已部署,原93条PENDING自然继续完成,原96条raw_message指纹全部不变。93条新增目标提交均唯一且FINALIZED,分配窗口48.075秒,首分配至最后归档73.377秒;正文各一次、PTC100%。不重发源交易、不改证明、不降低验证门限。
  • 一并修复 Dioxide 同组不同业务回执串读:保留 groupHash:index;组缓存不可被 JSONObject(Map) 引用修改。已有第三批仅通过正确查询归档,无重发或人工改状态。
    验收不向真实业务应用注入数据。Dioxide 本身仅支持原生 SDP V1;V2/V3 在已有支持链路回归,不能伪造 Dioxide V2/V3 通过。

运维说明:acb-sdk/tools/dioxide-tx-coordinator/README.md。回滚必须保留协调表与未决签名记录,不得回退 ISN。

配套 crosschain PR #3;无监管专属代码的通用 upstream PR #83。所有历史失败 UCP 均保持原样。

最终补充:新版Ethereum采集同块普通/监管各2条全部成功,PTC100%;监管四阶段完整,独立FISCO SDK确认目标正文各一次。最终协调库229个唯一ISN(181–409)全部FINALIZED。本次文档提交不替换已验收的ISN运行包。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant