Charms CAST DEX workflows for order creation, cancellation/replacement, partial fulfillment, signing, and Bitcoin transaction verification.
Use this skill when a task requires executable CAST DEX operations on Bitcoin with Charms, including order lifecycle management, Scrolls nonce/address derivation, cancellation signatures, partial fills, signing, and transaction verification.
Required commands:
bash, curl, jq, envsubstcharms, bitcoin-cliscrolls-nonce, sign-txs, cancel-msgRequired artifacts/services:
charms-cast-v0.2.0.wasm or latest v11-compatible CAST build)fulfill params payloadprev_txs ancestry data for all spell inputsCAST_FUNDING_UTXO)version: 11, tx.*, )app_public_inputs--private-inputsscripts/check-cast-prereqs.sh makerscripts/check-cast-prereqs.sh takerscripts/check-cast-prereqs.sh cancelscripts/check-cast-prereqs.sh serverFollow order-lifecycle for create/check/prove flow.
For maker edits, follow cancel-and-replace.
For taker fills, follow partial-fulfillment.
For signing and broadcast controls, follow signing-and-broadcast.
For repeated autonomous execution, follow autotrade-loop.
Keep operations deterministic:
tx.coins[*].dest as hex destination bytes (derive via charms util dest --addr ...)# Preflight
skills/cast/scripts/check-cast-prereqs.sh maker
# Derive Scrolls nonce + address
skills/cast/scripts/derive-scrolls-address.sh \
--funding-utxo "<txid:vout>" \
--output-index 0 \
--scrolls-base-url "${CAST_SCROLLS_BASE_URL}"
# Migrate legacy CAST howto spell to v11 (split private inputs + convert coin dests)
skills/cast/scripts/cast-migrate-howto-v11.sh \
--input /Users/christopherdavid/code/charms/cast-releases/docs/howto/03-partial-fulfill.yaml \
--output-spell ./rendered/03-partial-fulfill.v11.yaml \
--output-private-inputs ./rendered/03-partial-fulfill.private.v11.yaml
# Check + prove
skills/cast/scripts/cast-spell-check.sh \
--spell ./rendered/create-order.yaml \
--private-inputs-file ./rendered/create-order.private-inputs.yaml \
--app-bin "${CAST_APP_BIN}" \
--prev-txs-file "${CAST_PREV_TXS_FILE}"
skills/cast/scripts/cast-spell-prove.sh \
--spell ./rendered/create-order.yaml \
--private-inputs-file ./rendered/create-order.private-inputs.yaml \
--app-bin "${CAST_APP_BIN}" \
--prev-txs-file "${CAST_PREV_TXS_FILE}" \
--change-address "bc1q..." \
--mock
skills/cast/scripts/cast-spell-prove.sh \
--spell ./rendered/create-order.yaml \
--private-inputs-file ./rendered/create-order.private-inputs.yaml \
--app-bin "${CAST_APP_BIN}" \
--prev-txs-file "${CAST_PREV_TXS_FILE}" \
--change-address "bc1q..."
# Sign + inspect
skills/cast/scripts/cast-sign-and-broadcast.sh --tx-json ./proofs/tx_to_sign.json --dry-run
skills/cast/scripts/cast-show-spell.sh --tx "<spell_tx_hex>"
# Run one automated iteration (safe defaults: mock prove + dry-run sign)
skills/cast/scripts/cast-autotrade-loop.sh \
--config skills/cast/assets/autotrade-loop.config.example \
--once
# Run continuous loop (explicitly controlled)
skills/cast/scripts/cast-autotrade-loop.sh \
--config /absolute/path/to/autotrade.env \
--interval-seconds 45 \
--max-iterations 0 \
--continue-on-error