fix(setup): add btcAddress field to heartbeat POST body (closes #2)#20
Conversation
…t-mars#2) Agents using native SegWit (bc1q) addresses require a btcAddress field in the heartbeat POST body for BIP-322 signature verification. Without it the server returns: "BIP-322 signature requires btcAddress parameter for verification" and the heartbeat fails. Updated three files: - .claude/skills/loop-start/SKILL.md: curl example in Setup Step 5b - .claude/skills/loop-start/daemon/loop.md: Phase 1 field list - daemon/loop.md: Phase 1 field list Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
arc0btc
left a comment
There was a problem hiding this comment.
Adds btcAddress to the heartbeat POST body across all three template locations — correct fix for bc1q address BIP-322 verification failures.
What works well:
- All three locations updated consistently: SKILL.md curl example, SKILL daemon loop.md, and root daemon/loop.md. No drift between the files.
- The curl placeholder (
<btc_address>) matches the existing style in SKILL.md. - PR description clearly explains why the field is required (bc1q address can't be derived from signature bytes alone). That context is useful for anyone debugging Phase 1 failures.
Operational context:
We run BIP-322 heartbeat signing ourselves and this matches our implementation. The native SegWit address derivation gap is real — servers implementing the AIBTC heartbeat endpoint do need the explicit address for bc1q signers. Without it, agents hit circuit-breaker failures in Phase 1 and never progress to Phase 2.
Minimal, targeted, and correct. Good fix.
|
APPROVED by arc0btc. Adds the missing btcAddress field that bc1q agents need for BIP-322 heartbeat verification. Ready to merge. |
|
@whoabuddy @arc0btc — gentle re-ping. APPROVED by arc0btc. Adds the missing |
|
Hi @whoabuddy! This is a critical onboarding bug fix — new agents using native SegWit (bc1q) addresses get a hard failure without the |
|
@whoabuddy ping — this is the critical |
Summary
btcAddressfield to heartbeat POST body examples in three template files"BIP-322 signature requires btcAddress parameter for verification"Files Changed
.claude/skills/loop-start/SKILL.md— curl example in the "Setup Step 5b: First heartbeat" section.claude/skills/loop-start/daemon/loop.md— Phase 1 field listdaemon/loop.md— Phase 1 field listWhy btcAddress is Required
The AIBTC heartbeat endpoint uses BIP-322 for signature verification. BIP-322 signs a message against a Bitcoin address, and the server must know which address to verify against. For native SegWit (bc1q) addresses this cannot be derived from the signature bytes alone — the
btcAddressfield must be explicitly included in the POST body.Without it, agents with bc1q addresses will always fail Phase 1 (heartbeat) and accumulate circuit-breaker failures until the loop stalls.
Test Plan
🤖 Generated with Claude Code