Skip to content

design: the covenant is signature-free so anyone can broadcast the claim — but exactly-one-output rules out an in-transaction bounty #521

Description

@Zyrtnin

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:

  1. 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."
  2. 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.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions