| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ledger.Constraints.OffChain
Synopsis
- data ScriptLookups a = ScriptLookups {
- slTxOutputs :: Map TxOutRef DecoratedTxOut
- slOtherScripts :: Map ScriptHash (Versioned Script)
- slOtherData :: Map DatumHash Datum
- slPaymentPubKeyHashes :: Set PaymentPubKeyHash
- slTypedValidator :: Maybe (TypedValidator a)
- slOwnPaymentPubKeyHash :: Maybe PaymentPubKeyHash
- slOwnStakingCredential :: Maybe StakingCredential
- typedValidatorLookups :: TypedValidator a -> ScriptLookups a
- generalise :: ScriptLookups a -> ScriptLookups Any
- unspentOutputs :: Map TxOutRef DecoratedTxOut -> ScriptLookups a
- mintingPolicy :: Versioned MintingPolicy -> ScriptLookups a
- plutusV1MintingPolicy :: MintingPolicy -> ScriptLookups a
- plutusV2MintingPolicy :: MintingPolicy -> ScriptLookups a
- otherScript :: Versioned Validator -> ScriptLookups a
- plutusV1OtherScript :: Validator -> ScriptLookups a
- plutusV2OtherScript :: Validator -> ScriptLookups a
- otherData :: Datum -> ScriptLookups a
- ownPaymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups a
- ownStakingCredential :: StakingCredential -> ScriptLookups a
- paymentPubKey :: PaymentPubKey -> ScriptLookups a
- paymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups a
- data SomeLookupsAndConstraints where
- SomeLookupsAndConstraints :: forall a. (FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => ScriptLookups a -> TxConstraints (RedeemerType a) (DatumType a) -> SomeLookupsAndConstraints
- data UnbalancedTx
- unBalancedTxTx :: UnbalancedTx -> Either CardanoBuildTx Tx
- cardanoTx :: Traversal' UnbalancedTx CardanoBuildTx
- tx :: Traversal' UnbalancedTx Tx
- requiredSignatories :: Traversal' UnbalancedTx (Set PaymentPubKeyHash)
- utxoIndex :: Lens' UnbalancedTx (Map TxOutRef TxOut)
- emptyUnbalancedTx :: UnbalancedTx
- adjustUnbalancedTx :: PParams -> UnbalancedTx -> Either ToCardanoError ([Ada], UnbalancedTx)
- adjustTxOut :: PParams (BabbageEra StandardCrypto) -> TxOut -> Either ToCardanoError ([Ada], TxOut)
- data MkTxError
- = TypeCheckFailed ConnectionError
- | ToCardanoError ToCardanoError
- | TxOutRefNotFound TxOutRef
- | TxOutRefWrongType TxOutRef
- | TxOutRefNoReferenceScript TxOutRef
- | DatumNotFound DatumHash
- | DeclaredInputMismatch Value
- | DeclaredOutputMismatch Value
- | MintingPolicyNotFound MintingPolicyHash
- | ScriptHashNotFound ScriptHash
- | TypedValidatorMissing
- | DatumWrongHash DatumHash Datum
- | CannotSatisfyAny
- | NoMatchingOutputFound ValidatorHash
- | MultipleMatchingOutputsFound ValidatorHash
- | AmbiguousRedeemer TxOutRef [Redeemer]
- | AmbiguousReferenceScript TxOutRef [TxOutRef]
- _TypeCheckFailed :: AsMkTxError r => Prism' r ConnectionError
- _ToCardanoError :: AsMkTxError r => Prism' r ToCardanoError
- _TxOutRefNotFound :: AsMkTxError r => Prism' r TxOutRef
- _TxOutRefWrongType :: AsMkTxError r => Prism' r TxOutRef
- _TxOutRefNoReferenceScript :: AsMkTxError r => Prism' r TxOutRef
- _DatumNotFound :: AsMkTxError r => Prism' r DatumHash
- _DeclaredInputMismatch :: AsMkTxError r => Prism' r Value
- _MintingPolicyNotFound :: AsMkTxError r => Prism' r MintingPolicyHash
- _ScriptHashNotFound :: AsMkTxError r => Prism' r ScriptHash
- _TypedValidatorMissing :: AsMkTxError r => Prism' r ()
- _DatumWrongHash :: AsMkTxError r => Prism' r (DatumHash, Datum)
- _CannotSatisfyAny :: AsMkTxError r => Prism' r ()
- _NoMatchingOutputFound :: AsMkTxError r => Prism' r ValidatorHash
- _MultipleMatchingOutputsFound :: AsMkTxError r => Prism' r ValidatorHash
- mkTx :: (FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => ScriptLookups a -> TxConstraints (RedeemerType a) (DatumType a) -> Either MkTxError UnbalancedTx
- mkTxWithParams :: (FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => Params -> ScriptLookups a -> TxConstraints (RedeemerType a) (DatumType a) -> Either MkTxError UnbalancedTx
- mkSomeTx :: Params -> [SomeLookupsAndConstraints] -> Either MkTxError UnbalancedTx
- data ValueSpentBalances = ValueSpentBalances {
- vbsRequired :: Value
- vbsProvided :: Value
- provided :: Value -> ValueSpentBalances
- required :: Value -> ValueSpentBalances
- missingValueSpent :: ValueSpentBalances -> Value
- data ConstraintProcessingState = ConstraintProcessingState {}
- unbalancedTx :: Lens' ConstraintProcessingState UnbalancedTx
- valueSpentInputs :: Lens' ConstraintProcessingState ValueSpentBalances
- valueSpentOutputs :: Lens' ConstraintProcessingState ValueSpentBalances
- paramsL :: Lens' ConstraintProcessingState Params
- processConstraintFun :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m, MonadState ConstraintProcessingState m) => TxConstraintFun -> m ()
- addOwnInput :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m, MonadState ConstraintProcessingState m, FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => ScriptInputConstraint (RedeemerType a) -> m ()
- addOwnOutput :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m, ToData (DatumType a)) => ScriptOutputConstraint (DatumType a) -> m [TxConstraint]
- updateUtxoIndex :: (MonadReader (ScriptLookups a) m, MonadState ConstraintProcessingState m, MonadError MkTxError m) => m ()
- lookupTxOutRef :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => TxOutRef -> m DecoratedTxOut
- lookupMintingPolicy :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => MintingPolicyHash -> m (Versioned MintingPolicy)
- lookupScript :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => ScriptHash -> m (Versioned Script)
- lookupScriptAsReferenceScript :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => Maybe ScriptHash -> m ReferenceScript
- prepareConstraints :: (ToData (DatumType a), MonadReader (ScriptLookups a) m, MonadError MkTxError m) => [ScriptOutputConstraint (DatumType a)] -> [TxConstraint] -> m [TxConstraint]
- resolveScriptTxOut :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => DecoratedTxOut -> m (Maybe (Versioned Validator, DatumWithOrigin, Value))
- resolveScriptTxOutValidator :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => DecoratedTxOut -> m (Maybe (Versioned Validator))
- resolveScriptTxOutDatumAndValue :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => DecoratedTxOut -> m (Maybe (DatumWithOrigin, Value))
- data DatumWithOrigin
- datumWitness :: DatumWithOrigin -> Maybe Datum
- checkValueSpent :: (MonadReader (ScriptLookups a) m, MonadState ConstraintProcessingState m, MonadError MkTxError m) => m ()
Lookups
data ScriptLookups a Source #
Constructors
| ScriptLookups | |
Fields
| |
Instances
typedValidatorLookups :: TypedValidator a -> ScriptLookups a Source #
A script lookups value with a script instance. For convenience this also includes the minting policy script that forwards all checks to the instance's validator.
If called multiple times, only the first typed validator is kept:
typedValidatorLookups tv1 <> typedValidatorLookups tv2 <> ...
== typedValidatorLookups tv1
generalise :: ScriptLookups a -> ScriptLookups Any Source #
unspentOutputs :: Map TxOutRef DecoratedTxOut -> ScriptLookups a Source #
A script lookups value that uses the map of unspent outputs to resolve input constraints.
mintingPolicy :: Versioned MintingPolicy -> ScriptLookups a Source #
A script lookups value with a versioned minting policy script.
plutusV1MintingPolicy :: MintingPolicy -> ScriptLookups a Source #
A script lookups value with a PlutusV1 minting policy script.
plutusV2MintingPolicy :: MintingPolicy -> ScriptLookups a Source #
A script lookups value with a PlutusV2 minting policy script.
otherScript :: Versioned Validator -> ScriptLookups a Source #
A script lookups value with a versioned validator script.
plutusV1OtherScript :: Validator -> ScriptLookups a Source #
A script lookups value with a PlutusV1 validator script.
plutusV2OtherScript :: Validator -> ScriptLookups a Source #
A script lookups value with a PlutusV2 validator script.
otherData :: Datum -> ScriptLookups a Source #
A script lookups value with a datum.
ownPaymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups a Source #
Deprecated: Shouldn't be meaningful due to change in MustSpendAtLeast and MustProduceAtLeast offchain code
A script lookups value with a payment public key hash.
If called multiple times, only the first payment public key hash is kept:
ownPaymentPubKeyHash pkh1 <> ownPaymentPubKeyHash pkh2 <> ...
== ownPaymentPubKeyHash pkh1
ownStakingCredential :: StakingCredential -> ScriptLookups a Source #
Deprecated: Shouldn't be meaningful due to change in MustSpendAtLeast and MustProduceAtLeast offchain code
A script lookups value with staking credentials.
If called multiple times, only the first staking credential is kept:
ownStakingCredential skh1 <> ownStakingCredential skh2 <> ...
== ownStakingCredential skh1
paymentPubKey :: PaymentPubKey -> ScriptLookups a Source #
A script lookups value with a payment public key
paymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups a Source #
A script lookups value with a payment public key
Constraints resolution
data SomeLookupsAndConstraints where Source #
Some typed TxConstraints and the ScriptLookups needed to turn them
into an UnbalancedTx.
Constructors
| SomeLookupsAndConstraints :: forall a. (FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => ScriptLookups a -> TxConstraints (RedeemerType a) (DatumType a) -> SomeLookupsAndConstraints |
data UnbalancedTx Source #
An unbalanced transaction. It needs to be balanced and signed before it
can be submitted to the ledger. See note [Submitting transactions from
Plutus contracts] in Wallet.
Constructors
| UnbalancedEmulatorTx | |
Fields
| |
| UnbalancedCardanoTx | |
Fields
| |
Instances
adjustUnbalancedTx :: PParams -> UnbalancedTx -> Either ToCardanoError ([Ada], UnbalancedTx) Source #
Each transaction output should contain a minimum amount of Ada (this is a restriction on the real Cardano network).
adjustTxOut :: PParams (BabbageEra StandardCrypto) -> TxOut -> Either ToCardanoError ([Ada], TxOut) Source #
Adjust a single transaction output so it contains at least the minimum amount of Ada and return the adjustment (if any) and the updated TxOut.
Constructors
Instances
_TypeCheckFailed :: AsMkTxError r => Prism' r ConnectionError Source #
_ToCardanoError :: AsMkTxError r => Prism' r ToCardanoError Source #
_TxOutRefNotFound :: AsMkTxError r => Prism' r TxOutRef Source #
_TxOutRefWrongType :: AsMkTxError r => Prism' r TxOutRef Source #
_TxOutRefNoReferenceScript :: AsMkTxError r => Prism' r TxOutRef Source #
_DatumNotFound :: AsMkTxError r => Prism' r DatumHash Source #
_DeclaredInputMismatch :: AsMkTxError r => Prism' r Value Source #
_MintingPolicyNotFound :: AsMkTxError r => Prism' r MintingPolicyHash Source #
_ScriptHashNotFound :: AsMkTxError r => Prism' r ScriptHash Source #
_TypedValidatorMissing :: AsMkTxError r => Prism' r () Source #
_CannotSatisfyAny :: AsMkTxError r => Prism' r () Source #
_NoMatchingOutputFound :: AsMkTxError r => Prism' r ValidatorHash Source #
_MultipleMatchingOutputsFound :: AsMkTxError r => Prism' r ValidatorHash Source #
mkTx :: (FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => ScriptLookups a -> TxConstraints (RedeemerType a) (DatumType a) -> Either MkTxError UnbalancedTx Source #
Deprecated: Use mkTxWithParams instead
Turn a TxConstraints value into an unbalanced transaction that satisfies
the constraints. To use this in a contract, see
submitTxConstraints
and related functions.
Uses default Params which is probably not what you want, use mkTxWithParams instead.
mkTxWithParams :: (FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => Params -> ScriptLookups a -> TxConstraints (RedeemerType a) (DatumType a) -> Either MkTxError UnbalancedTx Source #
Turn a TxConstraints value into an unbalanced transaction that satisfies
the constraints. To use this in a contract, see
submitTxConstraints
and related functions.
mkSomeTx :: Params -> [SomeLookupsAndConstraints] -> Either MkTxError UnbalancedTx Source #
Given a list of SomeLookupsAndConstraints describing the constraints
for several scripts, build a single transaction that runs all the scripts.
Internals exposed for testing
data ValueSpentBalances Source #
The balances we track for computing the missing Value (if any)
that needs to be added to the transaction.
See note [Balance of value spent].
Constructors
| ValueSpentBalances | |
Fields
| |
Instances
provided :: Value -> ValueSpentBalances Source #
required :: Value -> ValueSpentBalances Source #
data ConstraintProcessingState Source #
Constructors
| ConstraintProcessingState | |
Fields
| |
processConstraintFun :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m, MonadState ConstraintProcessingState m) => TxConstraintFun -> m () Source #
addOwnInput :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m, MonadState ConstraintProcessingState m, FromData (DatumType a), ToData (DatumType a), ToData (RedeemerType a)) => ScriptInputConstraint (RedeemerType a) -> m () Source #
Add a typed input, checking the type of the output it spends. Return the value of the spent output.
addOwnOutput :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m, ToData (DatumType a)) => ScriptOutputConstraint (DatumType a) -> m [TxConstraint] Source #
Convert a ScriptOutputConstraint into a TxConstraint.
updateUtxoIndex :: (MonadReader (ScriptLookups a) m, MonadState ConstraintProcessingState m, MonadError MkTxError m) => m () Source #
lookupTxOutRef :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => TxOutRef -> m DecoratedTxOut Source #
lookupMintingPolicy :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => MintingPolicyHash -> m (Versioned MintingPolicy) Source #
lookupScript :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => ScriptHash -> m (Versioned Script) Source #
lookupScriptAsReferenceScript :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => Maybe ScriptHash -> m ReferenceScript Source #
prepareConstraints :: (ToData (DatumType a), MonadReader (ScriptLookups a) m, MonadError MkTxError m) => [ScriptOutputConstraint (DatumType a)] -> [TxConstraint] -> m [TxConstraint] Source #
resolveScriptTxOut :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => DecoratedTxOut -> m (Maybe (Versioned Validator, DatumWithOrigin, Value)) Source #
resolveScriptTxOutValidator :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => DecoratedTxOut -> m (Maybe (Versioned Validator)) Source #
resolveScriptTxOutDatumAndValue :: (MonadReader (ScriptLookups a) m, MonadError MkTxError m) => DecoratedTxOut -> m (Maybe (DatumWithOrigin, Value)) Source #
data DatumWithOrigin Source #
datumWitness :: DatumWithOrigin -> Maybe Datum Source #
checkValueSpent :: (MonadReader (ScriptLookups a) m, MonadState ConstraintProcessingState m, MonadError MkTxError m) => m () Source #