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:
-
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.
-
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.
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:
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=0000000000000002in the log). It fails only at funding. TheBUDGET_PAD_*witnesses suggest fee machinery was intended; it doesn't appear wired into this action. Presumably a wallet-sourcedfee_input+ change output is the fix, if path 3 ofprediction_market.simftolerates the extra input — same question applies to ResolveNo.Two smaller things hit along the way:
State files drop covenant UTXOs. After CreateMarket the state file's
utxoswas[], and after InitialIssuance it contained onlycollateral_out— the reissuance-token outputs are never recorded, so ResolveYes/MintPairs need--input id=txid:voutpinned 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.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 withscript -qec). A--fee-rateflag 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.