MinSpend
- *Informally*. Let : `Tx`{.AgdaRecord} be a valid transaction and let
`txcerts`{.AgdaFunction} be its list of `DCert`{.AgdaDatatype}s.
Denote by `noRefundCert`{.AgdaFunction} `txcerts`{.AgdaFunction} the
assertion that no element in `txcerts`{.AgdaFunction} is one of the
two refund types (i.e., an element of is neither a
`dereg`{.AgdaInductiveConstructor} nor a
`deregdrep`{.AgdaInductiveConstructor}). Let , :
`UTxOState`{.AgdaRecord} be two UTxO states. If `⇀⦇`{.AgdaDatatype}
`,UTXO⦈`{.AgdaDatatype} and if `noRefundCert`{.AgdaFunction}
`txcerts`{.AgdaFunction}, then the coin consumed by is at least the
sum of the governance action deposits of the proposals in .
- *Formally*.
utxoMinSpend : {Γ : UTxOEnv} {tx : Tx} {s s' : UTxOState} → Γ ⊢ s ⇀⦇ tx ,UTXO⦈ s' → noRefundCert (txcertsOf tx) → coin (consumed _ s (TxBodyOf tx)) ≥ length (txpropOf tx) * govActionDepositOf Γ- *Proof*. See the module in the [formal ledger repository](\repourl).
- *Preliminary remarks*.
1. Define `noRefundCert`{.AgdaFunction} and as in
*'thm:minspend' (unresolved reference)*.
2. Given a ledger state and a transaction , denote by
`validTxIn₂`{.AgdaFunction} the assertion that there exists ledger
state such that `⇀⦇`{.AgdaDatatype} `,LEDGER⦈`{.AgdaDatatype} .
3. Assume the following additive property of the `∪⁺`{.AgdaFunction}
operator holds:
∑[ x ← d₁ ∪⁺ d₂ ] x ≡ ∑[ x ← d₁ ] x ◇ ∑[ x ← d₂ ] x- *Informally*. Let : `Tx`{.AgdaRecord} be a valid transaction and let : `ChainState`{.AgdaRecord} be a chain state. If the condition `validTxIn₂`{.AgdaFunction} (described above) holds, then the coin consumed by is at least the sum of the governance action deposits of the proposals in . - *Formally*.
propose-minSpend : {slot : Slot} {tx : Tx} {cs : ChainState} ( let pp = PParamsOf cs utxoSt = UTxOStateOf cs )
→ noRefundCert txcerts → validTxIn₂ cs slot tx → coin (consumed pp utxoSt body) ≥ length txprop * pp .govActionDeposit- *Proof*. See the module in the [formal ledger repository](\repourl).