Skip to content

ci: restore relay integration test (btcd+relayd) and fix relay verify addr check - #1319

Merged
33cn merged 3 commits into
masterfrom
agents/relayed
Sep 3, 2026
Merged

ci: restore relay integration test (btcd+relayd) and fix relay verify addr check#1319
33cn merged 3 commits into
masterfrom
agents/relayed

Conversation

@33cn

@33cn 33cn commented Sep 3, 2026

Copy link
Copy Markdown
Owner

问题

relay 集成测试自 2021 年起从未真正运行:

  • plugin/dapp/relay/cmd/build.sh 的 relayd 构建段被注释(739e84e44),build/ci/relay 从不生成,make docker-compose dapp=relay 打印 "dapp=relay not exist or is system dir" 后返回 0 —— 原 build_relay.yml 因此是假绿,已在 b04a1b8 删除,但真测试一直没有替代。
  • relay 仅有 dapptest 的 RPC 层覆盖(test-rpc.sh),btcd+relayd 的完整链路无人跑。

变更

  1. 恢复 relayd 构建build.sh 重新生成 build/ci/relay(relayd 二进制 + toml + Dockerfile-relayd + docker-compose-relay.yml + testcase.sh)。
  2. 新建真实 ci_relay workflow.github/workflows/build_relay.yml):make build_ci + make docker-compose dapp=relay,触发条件与其他 workflow 一致(master push + pull_request)。
  3. 修复 testcase.sh 的 wait_btcd_up:原实现用 v1 语法 docker-compose ps(ubuntu-22.04 runner 已没有)且 awk '{print $5}' 取到的是 CREATED 列而非 STATUS,btcd 正常也会永远重启直到超时失败。改为 docker inspect 判容器状态。
  4. 修复 relay verify 地址校验 bugverifyBtcTxContent 硬编码 MainNetParams 解析输出地址,simnet 订单地址('S...')被重编码成 mainnet 地址后永远匹配不上,RelayVerify 交易被拒(ErrRelayVerifyAddrNotFound),订单永远卡在 confirming。改为按 order.XAddr 能解码成功的网络参数解析(mainnet/testnet3/regtest/simnet,失败回退 MainNet)。
  5. 测试:新增 simnet 地址回归单测;testcase.sh 在 finish 等待超时时 dump relayd/chain33 日志便于诊断。

验证

  • 本地:go test ./plugin/dapp/relay/... 全绿,shellcheck/gofmt 干净。
  • 远程 ci_relay(agents/relayed 推送触发):run 33634136873 ✅ 完整走完 btcd simnet 下订单 create → accept → confirm → revoke → finish → cancel 全流程。

🤖 Generated with Claude Code

king and others added 3 commits September 2, 2026 12:55
plugin/dapp/relay/cmd/build.sh has had its relayd build section commented
out since 2021 (739e84e), so build/ci/relay was never created and
`make docker-compose dapp=relay` silently returned 0 (the fake-green job
deleted in b04a1b8). Restore the OUT_DIR build so the btcd+relayd
testcase.sh runs again.

Also fix wait_btcd_up: docker-compose v1 no longer exists on the
ubuntu-22.04 runners, and the awk picked the CREATED column instead of
STATUS, so the loop could never see btcd as up. Use docker inspect
instead. Add a real ci_relay workflow to replace the deleted fake one.

Co-Authored-By: Claude <noreply@anthropic.com>
btcd simnet integration test creates orders with simnet addresses ('S...'),
but verifyBtcTxContent hardcoded MainNetParams when extracting addresses
from the raw tx outputs, so simnet output addresses were re-encoded as
mainnet '1...' addresses and never matched order.XAddr. The RelayVerify tx
was rejected with ErrRelayVerifyAddrNotFound and the order stayed in
confirming forever (relay testcase: 'wrong relay status finish real buy
order id').

Pick the network params that successfully decode order.XAddr (mainnet/
testnet3/regtest/simnet), falling back to MainNet. Add a simnet regression
test, and dump relayd/chain33 logs in testcase.sh when the finish wait
times out.

Co-Authored-By: Claude <noreply@anthropic.com>
Remote iteration on the agents/relayed branch is done; the workflow now
only runs on master pushes and pull requests, matching the other
workflows.

Co-Authored-By: Claude <noreply@anthropic.com>
@33cn
33cn requested a review from bysomeone September 3, 2026 04:08

@bysomeone bysomeone left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

确认之前指出的 relay 假绿已修复为真绿:

  • build.sh 恢复 relayd 构建后 build/ci/relay 正常生成,ci_relay 不再走 "not exist or is system dir" 空转路径;失败沿 set -edocker-compose-pre.sh exit 1 → make → job 非零,无假绿出口。
  • CI 实测(run 33709615255)起 8 容器(chain33×6 + relayd + btcd simnet),真实订单走到 finished、余额断言通过。
  • relay verify addr 网络参数修复正确:按地址自身网络解码,主网行为无回归,确定性纯函数无分叉风险,simnet 单测有效。

两个非阻塞提示:

  1. ForkRelayVerifyBtcTx 注册于 height 0(默认恒开),此改动会解冻此前卡在 confirming 的订单;若 relay 在运行中的链上启用,升级需各验证节点同步。
  2. ci_relay 依赖的是第三方 2019 年预编译镜像 suyanlong/btcd-run:latest(无固定版本、未维护),该镜像不可用会让全仓 CI 变红且难以复现。同为 btcd 依赖,仓库内 rgbx 的做法(plugin/dapp/rgbx/cmd/ci/Dockerfile.btcd)是构建时 clone 官方 btcsuite/btcd(固定 v0.24.x)现场编译,不依赖第三方预编译镜像——建议 ci_relay 参考该做法,或至少固定镜像版本,避免依赖未锁版本的 latest

@33cn
33cn merged commit dc119d2 into master Sep 3, 2026
21 checks passed
@33cn

33cn commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

🎉 This PR is included in version 1.71.3 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@33cn 33cn added the released label Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants