The property
The HTLC covenant contains zero OP_CHECKSIG. Both branches are signature-free:
- claim — scriptSig
<preimage> <OP_0>
- refund — scriptSig
<OP_1> only ("no preimage, no sig")
Destination is enforced by the covenant pinning hash256(tx.outputs[0]) to the taker's (claim) or maker's (refund) holder script.
Two consequences follow, and the first is an opportunity rather than a defect:
- Once the maker reveals
p, anyone can broadcast a claim that pays the taker. No authorisation exists to withhold, and a third party cannot redirect the output. So the requirement is not "the taker must be online" — it is "someone must pay a fee."
README.md's "the RXD covenant claim is not pre-signable" is about the fee input, not the covenant. The watchtower's hot key is a fee key, not one that can move swap value. Smaller blast radius than the phrasing implies.
The idea
Fund a bounty that pays whoever broadcasts the claim, turning a liveness dependency on one party into an open incentive. This is structurally the Lightning watchtower-incentive pattern.
The objection that makes the naive version wrong
A bounty for broadcasting pays for speed, and on a chain with low reorg cost speed is exactly the wrong thing to buy. The whole assess_claim_finality / value-scaled-burial apparatus exists to make the claim wait. A first-to-broadcast bounty pushes directly against it.
It compounds with #511: because the refund is signature-free too, once CSV matures anyone can broadcast the maker's refund. Both sides are permissionless, so a bounty would fund one side of a race a reorg can re-run.
The inversion that might work
Pay for burial, not for broadcast. Let the claim create a second output — a bounty spendable by anyone only after N blocks via OP_CHECKSEQUENCEVERIFY, which on Radiant is consensus-enforced and relative to that transaction's confirmation. If the claim is reorged out, the bounty output ceases to exist with it. The hunter is paid only if the claim stuck for N blocks, which is the property the taker actually cares about.
That converts a race into an alignment, using a primitive the chain definitely has.
Unverified — needed before anyone builds this
Scope note
This does not help the gBTC direction. That is constrained by what Bitcoin script can verify about a Radiant burn, and by an economic-security ceiling near RXD's own market cap — neither of which an incentive mechanism moves. A bridge also pools risk, where a swap bounds it per-swap, so value-scaled burial does not transfer.
Design direction, not a defect. Filed for scrutiny before anyone builds it.
The property
The HTLC covenant contains zero
OP_CHECKSIG. Both branches are signature-free:<preimage> <OP_0><OP_1>only ("no preimage, no sig")Destination is enforced by the covenant pinning
hash256(tx.outputs[0])to the taker's (claim) or maker's (refund) holder script.Two consequences follow, and the first is an opportunity rather than a defect:
p, anyone can broadcast a claim that pays the taker. No authorisation exists to withhold, and a third party cannot redirect the output. So the requirement is not "the taker must be online" — it is "someone must pay a fee."README.md's "the RXD covenant claim is not pre-signable" is about the fee input, not the covenant. The watchtower's hot key is a fee key, not one that can move swap value. Smaller blast radius than the phrasing implies.The idea
Fund a bounty that pays whoever broadcasts the claim, turning a liveness dependency on one party into an open incentive. This is structurally the Lightning watchtower-incentive pattern.
The objection that makes the naive version wrong
A bounty for broadcasting pays for speed, and on a chain with low reorg cost speed is exactly the wrong thing to buy. The whole
assess_claim_finality/ value-scaled-burial apparatus exists to make the claim wait. A first-to-broadcast bounty pushes directly against it.It compounds with #511: because the refund is signature-free too, once CSV matures anyone can broadcast the maker's refund. Both sides are permissionless, so a bounty would fund one side of a race a reorg can re-run.
The inversion that might work
Pay for burial, not for broadcast. Let the claim create a second output — a bounty spendable by anyone only after
Nblocks viaOP_CHECKSEQUENCEVERIFY, which on Radiant is consensus-enforced and relative to that transaction's confirmation. If the claim is reorged out, the bounty output ceases to exist with it. The hunter is paid only if the claim stuck forNblocks, which is the property the taker actually cares about.That converts a race into an alignment, using a primitive the chain definitely has.
Unverified — needed before anyone builds this
outputs[0]; if it also fixes the output count there is no room for a bounty output.Scope note
This does not help the gBTC direction. That is constrained by what Bitcoin script can verify about a Radiant burn, and by an economic-security ceiling near RXD's own market cap — neither of which an incentive mechanism moves. A bridge also pools risk, where a swap bounds it per-swap, so value-scaled burial does not transfer.
Design direction, not a defect. Filed for scrutiny before anyone builds it.