{-# OPTIONS --safe #-}
open import Ledger.Conway.Abstract
open import Ledger.Conway.Transaction
module Ledger.Conway.Properties
(txs : _) (open TransactionStructure txs)
(abs : AbstractFunctions txs) (open AbstractFunctions abs)
where
open import Ledger.Conway.Certs govStructure
open import Ledger.Conway.Chain txs abs
open import Ledger.Conway.Enact govStructure
open import Ledger.Conway.Epoch txs abs
open import Ledger.Conway.Ledger txs abs
open import Ledger.Prelude
isCredDeposit : DepositPurpose → Type
isCredDeposit (CredentialDeposit x) = ⊤
isCredDeposit _ = ⊥
instance
isCredDeposit? : isCredDeposit ⁇¹
isCredDeposit? {CredentialDeposit x} = ⁇ (yes tt)
isCredDeposit? {PoolDeposit x} = ⁇ (no λ ())
isCredDeposit? {DRepDeposit x} = ⁇ (no λ ())
isCredDeposit? {GovActionDeposit x} = ⁇ (no λ ())
isGADeposit : DepositPurpose → Type
isGADeposit (GovActionDeposit x) = ⊤
isGADeposit _ = ⊥
instance
isGADeposit? : isGADeposit ⁇¹
isGADeposit? {CredentialDeposit x} = ⁇ (no λ ())
isGADeposit? {PoolDeposit x} = ⁇ (no λ ())
isGADeposit? {DRepDeposit x} = ⁇ (no λ ())
isGADeposit? {GovActionDeposit x} = ⁇ (yes tt)
activeDReps : Epoch → NewEpochState → ℙ Credential
activeDReps currentEpoch s = dom (filterᵐ (λ (_ , e) → currentEpoch ≤ e) (DRepsOf s))
instance
_ : IsSet Block Tx
_ = record { toSet = fromList ∘ Block.ts }
_ : IsSet TxBody GovProposal
_ = record { toSet = fromList ∘ TxBody.txprop }
validBlockIn : ChainState → Block → Type
validBlockIn s b = ∃[ s' ] _ ⊢ s ⇀⦇ b ,CHAIN⦈ s'
validBlock : Block → Type
validBlock b = ∃[ s ] validBlockIn s b
validTxIn₁ : ChainState → Tx → Type
validTxIn₁ s tx = ∃[ b ] tx ∈ b × validBlockIn s b
module _ (s : ChainState) (slot : Slot) where
open ChainState s; open NewEpochState newEpochState
open EpochState epochState; open EnactState es
private
ledgerEnv = ⟦ slot , constitution .proj₁ .proj₂ , pparams .proj₁ , es , Acnt.treasury acnt ⟧
validTxIn₂ : Tx → Type
validTxIn₂ tx = ∃[ ls' ] ledgerEnv ⊢ ls ⇀⦇ tx ,LEDGER⦈ ls'
validTx₁ : Tx → Type
validTx₁ tx = ∃[ s ] validTxIn₁ s tx