Skip to content

deadcat_v3 ResolveYes/ResolveNo cannot be funded: no fee input, collateral preserved exactly #8

Description

@sideswap-io

Ran the examples end to end on Liquid testnet today (clean clone at 5624dfc, default build against upstream SimplicityHL master). First: this works remarkably well — p2pk round-tripped through the covenant, and deadcat_v3 got through IssueReissuanceTokens → CreateMarket → PrepareInitialIssuance → InitialIssuance with real broadcasts (e.g. InitialIssuance 878c8d80e6291800a3c83dd2fa69ef49d2fa13dbaf69f4a4ab0b41372104dc83, 5 pairs, 10k sats collateral).

The blocker: ResolveYes is unfundable as written. The action declares exactly three inputs (the two reissuance tokens and the collateral UTXO, all covenant), and its outputs preserve the collateral amount exactly, so PSET building fails for any fee > 0:

[error] PSET build failed:
  0: Insufficient L-BTC: have 10000 sat, need 10001 sat (outputs 10000 + fee 1)

Everything before that point succeeds: the oracle signature over sha256(MARKET_ID || 0x01) (internal byte order, RT_FACTOR=2) is accepted, all three covenant inputs compile, and the state-2 address derives correctly from the tapdata leaf (payload=0000000000000002 in the log). It fails only at funding. The BUDGET_PAD_* witnesses suggest fee machinery was intended; it doesn't appear wired into this action. Presumably a wallet-sourced fee_input + change output is the fix, if path 3 of prediction_market.simf tolerates the extra input — same question applies to ResolveNo.

Two smaller things hit along the way:

  1. State files drop covenant UTXOs. After CreateMarket the state file's utxos was [], and after InitialIssuance it contained only collateral_out — the reissuance-token outputs are never recorded, so ResolveYes/MintPairs need --input id=txid:vout pinned by hand from the explorer. The error message's suggested workaround is what we used, but the state file looks like it's meant to carry these.

  2. The fee-rate prompt is the one thing with no flag. Params, instance, state, and inputs are all scriptable, but prompt_fee_rate() always requires a TTY (we worked around it with script -qec). A --fee-rate flag or a config default would make fully unattended runs possible.

Happy to provide full logs, the instance file, or the exact txids for any of this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions