Safe Haskell | None |
---|---|
Language | Haskell2010 |
Cardano.Api.Experimental
Description
This module provides an experimental library interface intended to replace the existing API. It is subject to significant changes. Please, use it with caution.
Synopsis
- newtype UnsignedTx era = UnsignedTx (Tx (LedgerEra era))
- newtype UnsignedTxError = UnsignedTxError TxBodyError
- makeUnsignedTx :: Era era -> TxBodyContent BuildTx era -> Either TxBodyError (UnsignedTx era)
- makeKeyWitness :: Era era -> UnsignedTx era -> ShelleyWitnessSigningKey -> WitVKey 'Witness
- signTx :: Era era -> [BootstrapWitness] -> [WitVKey 'Witness] -> UnsignedTx era -> Tx (LedgerEra era)
- convertTxBodyToUnsignedTx :: HasCallStack => ShelleyBasedEra era -> TxBody era -> UnsignedTx era
- type EraCommonConstraints era = (AlonzoEraTx (LedgerEra era), BabbageEraTxBody (LedgerEra era), EraTx (LedgerEra era), EraUTxO (LedgerEra era), ShelleyLedgerEra era ~ LedgerEra era, HashAnnotated (TxBody (LedgerEra era)) EraIndependentTxBody, IsEra era)
- obtainCommonConstraints :: Era era -> (EraCommonConstraints era => a) -> a
- hashTxBody :: HashAnnotated (TxBody era) EraIndependentTxBody => TxBody era -> Hash HASH EraIndependentTxBody
- evaluateTransactionExecutionUnitsShelley :: ShelleyBasedEra era -> SystemStart -> LedgerEpochInfo -> LedgerProtocolParameters era -> UTxO era -> Tx (ShelleyLedgerEra era) -> Map ScriptWitnessIndex (Either ScriptExecutionError (EvalTxExecutionUnitsLog, ExecutionUnits))
- data BabbageEra
- data ConwayEra
- data Era era where
- class IsEra era where
- data Some (f :: k -> Type) where
- type family LedgerEra era = (r :: Type) | r -> era where ...
- newtype DeprecatedEra era = DeprecatedEra (ShelleyBasedEra era)
- eraToSbe :: Era era -> ShelleyBasedEra era
- eraToBabbageEraOnwards :: Era era -> BabbageEraOnwards era
- sbeToEra :: MonadError (DeprecatedEra era) m => ShelleyBasedEra era -> m (Era era)
- data AnyWitness era where
- AnyKeyWitnessPlaceholder :: forall era. AnyWitness era
- AnySimpleScriptWitness :: forall era. SimpleScriptOrReferenceInput era -> AnyWitness era
- AnyPlutusScriptWitness :: forall (lang :: Language) (purpose :: PlutusScriptPurpose) era. PlutusScriptWitness lang purpose era -> AnyWitness era
- data PlutusScriptWitness (lang :: Language) (purpose :: PlutusScriptPurpose) era where
- PlutusScriptWitness :: forall (lang :: Language) era (purpose :: PlutusScriptPurpose). SLanguage lang -> PlutusScriptOrReferenceInput lang era -> PlutusScriptDatum lang purpose -> ScriptRedeemer -> ExecutionUnits -> PlutusScriptWitness lang purpose era
- data TxScriptWitnessRequirements era = TxScriptWitnessRequirements (Set Language) [Script era] (TxDats era) (Redeemers era)
- data Witnessable (thing :: WitnessableItem) era where
- WitTxIn :: forall era. AlonzoEraScript era => TxIn -> Witnessable 'TxInItem era
- WitTxCert :: forall era. (EraTxCert era, AlonzoEraScript era) => TxCert era -> StakeCredential -> Witnessable 'CertItem era
- WitMint :: forall era. AlonzoEraScript era => PolicyId -> PolicyAssets -> Witnessable 'MintItem era
- WitWithdrawal :: forall era. AlonzoEraScript era => StakeAddress -> Coin -> Witnessable 'WithdrawalItem era
- WitVote :: forall era. ConwayEraScript era => Voter -> Witnessable 'VoterItem era
- WitProposal :: forall era. (ConwayEraScript era, EraPParams era) => ProposalProcedure era -> Witnessable 'ProposalItem era
- data WitnessableItem
- data SimpleScript era where
- SimpleScript :: forall era. EraScript era => NativeScript era -> SimpleScript era
- data SimpleScriptOrReferenceInput era
- = SScript (SimpleScript era)
- | SReferenceScript TxIn
- data PlutusScriptInEra (lang :: Language) era where
- PlutusScriptInEra :: forall (lang :: Language) era. PlutusRunnable lang -> PlutusScriptInEra lang era
- data PlutusScriptOrReferenceInput (lang :: Language) era
- = PScript (PlutusScriptInEra lang era)
- | PReferenceScript TxIn
- data IndexedPlutusScriptWitness (witnessable :: WitnessableItem) (lang :: Language) (purpose :: PlutusScriptPurpose) era where
- IndexedPlutusScriptWitness :: forall era (witnessable :: WitnessableItem) (lang :: Language) (purpose :: PlutusScriptPurpose). AlonzoEraScript era => Witnessable witnessable era -> PlutusPurpose AsIx era -> PlutusScriptWitness lang purpose era -> IndexedPlutusScriptWitness witnessable lang purpose era
- data PlutusScriptPurpose
- data PlutusScriptDatum (lang :: Language) (purpose :: PlutusScriptPurpose) where
- SpendingScriptDatum :: forall (lang :: Language). PlutusScriptDatumF lang 'SpendingScript -> PlutusScriptDatum lang 'SpendingScript
- InlineDatum :: forall (lang :: Language) (purpose :: PlutusScriptPurpose). PlutusScriptDatum lang purpose
- NoScriptDatum :: forall (lang :: Language) (purpose :: PlutusScriptPurpose). PlutusScriptDatum lang purpose
- data NoScriptDatum = NoScriptDatumAllowed
- getAnyWitnessRedeemerPointerMap :: forall era (witnessable :: WitnessableItem). AlonzoEraOnwards era -> [(Witnessable witnessable (ShelleyLedgerEra era), AnyWitness (ShelleyLedgerEra era))] -> Redeemers (ShelleyLedgerEra era)
- toPlutusScriptPurpose :: forall (thing :: WitnessableItem). GetPlutusScriptPurpose era => Word32 -> Witnessable thing era -> PlutusPurpose AsIx era
- legacyWitnessConversion :: forall era (witnessable :: WitnessableItem) ctx. AlonzoEraOnwards era -> [(Witnessable witnessable (ShelleyLedgerEra era), BuildTxWith BuildTx (Witness ctx era))] -> Either DecoderError [(Witnessable witnessable (ShelleyLedgerEra era), AnyWitness (ShelleyLedgerEra era))]
- toPlutusSLanguage :: PlutusScriptVersion lang -> SLanguage (ToLedgerPlutusLanguage lang)
Creating transactions
For details and an example of creating a transaction using the experimental API, see the Cardano.Api.Internal.Experimental.Tx documentation.
Contents
Transaction-related
newtype UnsignedTx era Source #
A transaction that can contain everything except key witnesses.
Constructors
UnsignedTx (Tx (LedgerEra era)) |
Instances
IsEra era => Show (UnsignedTx era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Tx |
newtype UnsignedTxError Source #
Constructors
UnsignedTxError TxBodyError |
makeUnsignedTx :: Era era -> TxBodyContent BuildTx era -> Either TxBodyError (UnsignedTx era) Source #
makeKeyWitness :: Era era -> UnsignedTx era -> ShelleyWitnessSigningKey -> WitVKey 'Witness Source #
signTx :: Era era -> [BootstrapWitness] -> [WitVKey 'Witness] -> UnsignedTx era -> Tx (LedgerEra era) Source #
convertTxBodyToUnsignedTx :: HasCallStack => ShelleyBasedEra era -> TxBody era -> UnsignedTx era Source #
type EraCommonConstraints era = (AlonzoEraTx (LedgerEra era), BabbageEraTxBody (LedgerEra era), EraTx (LedgerEra era), EraUTxO (LedgerEra era), ShelleyLedgerEra era ~ LedgerEra era, HashAnnotated (TxBody (LedgerEra era)) EraIndependentTxBody, IsEra era) Source #
obtainCommonConstraints :: Era era -> (EraCommonConstraints era => a) -> a Source #
hashTxBody :: HashAnnotated (TxBody era) EraIndependentTxBody => TxBody era -> Hash HASH EraIndependentTxBody Source #
evaluateTransactionExecutionUnitsShelley :: ShelleyBasedEra era -> SystemStart -> LedgerEpochInfo -> LedgerProtocolParameters era -> UTxO era -> Tx (ShelleyLedgerEra era) -> Map ScriptWitnessIndex (Either ScriptExecutionError (EvalTxExecutionUnitsLog, ExecutionUnits)) Source #
Era-related
data BabbageEra Source #
A type used as a tag to distinguish the Babbage era.
Instances
A type used as a tag to distinguish the Conway era.
Instances
IsAllegraBasedEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eon.AllegraEraOnwards Methods | |||||
IsAlonzoBasedEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eon.AlonzoEraOnwards Methods | |||||
IsBabbageBasedEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eon.BabbageEraOnwards Methods | |||||
IsConwayBasedEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eon.ConwayEraOnwards Methods | |||||
IsMaryBasedEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eon.MaryEraOnwards Methods | |||||
IsShelleyBasedEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eon.ShelleyBasedEra Methods | |||||
IsCardanoEra ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eras.Core Methods | |||||
IsEra ConwayEra Source # | |||||
HasTypeProxy ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eras.Core Associated Types
| |||||
HasScriptLanguageInEra PlutusScriptV1 ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Script | |||||
HasScriptLanguageInEra PlutusScriptV2 ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Script | |||||
HasScriptLanguageInEra PlutusScriptV3 ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Script | |||||
ToAlonzoScript PlutusScriptV1 ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Script Methods toLedgerScript :: PlutusScript PlutusScriptV1 -> AlonzoScript (ShelleyLedgerEra ConwayEra) Source # | |||||
ToAlonzoScript PlutusScriptV2 ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Script Methods toLedgerScript :: PlutusScript PlutusScriptV2 -> AlonzoScript (ShelleyLedgerEra ConwayEra) Source # | |||||
ToAlonzoScript PlutusScriptV3 ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Script Methods toLedgerScript :: PlutusScript PlutusScriptV3 -> AlonzoScript (ShelleyLedgerEra ConwayEra) Source # | |||||
data AsType ConwayEra Source # | |||||
Defined in Cardano.Api.Internal.Eras.Core |
Represents the latest Cardano blockchain eras, including the one currently on mainnet and the upcoming one.
After a hard fork takes place, the era on mainnet before the hard fork
is deprecated and, after a deprecation period, removed from cardano-api
.
During the deprecation period, cardano-api
users should update their
codebase to the new mainnet era.
Instances
Eon Era Source # | A temporary compatibility instance for easier conversion between the experimental and old APIs. |
Defined in Cardano.Api.Internal.Experimental.Eras Methods inEonForEra :: a -> (Era era -> a) -> CardanoEra era -> a Source # | |
ToCardanoEra Era Source # | A temporary compatibility instance for easier conversion between the experimental and old APIs. |
Defined in Cardano.Api.Internal.Experimental.Eras Methods toCardanoEra :: Era era -> CardanoEra era Source # | |
TestEquality Era Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
Convert Era AlonzoEraOnwards Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods convert :: Era era -> AlonzoEraOnwards era Source # | |
Convert Era BabbageEraOnwards Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods convert :: Era era -> BabbageEraOnwards era Source # | |
Convert Era ShelleyBasedEra Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods convert :: Era era -> ShelleyBasedEra era Source # | |
Convert Era CardanoEra Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods convert :: Era era -> CardanoEra era Source # | |
ToJSON (Era era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods toEncoding :: Era era -> Encoding toJSONList :: [Era era] -> Value toEncodingList :: [Era era] -> Encoding | |
Show (Era era) Source # | |
Eq (Era era) Source # | |
Pretty (Era era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
FromJSON (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods parseJSON :: Value -> Parser (Some Era) parseJSONList :: Value -> Parser [Some Era] omittedField :: Maybe (Some Era) | |
ToJSON (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
Bounded (Some Era) Source # | |
Enum (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods succ :: Some Era -> Some Era Source # pred :: Some Era -> Some Era Source # toEnum :: Int -> Some Era Source # fromEnum :: Some Era -> Int Source # enumFrom :: Some Era -> [Some Era] Source # enumFromThen :: Some Era -> Some Era -> [Some Era] Source # enumFromTo :: Some Era -> Some Era -> [Some Era] Source # enumFromThenTo :: Some Era -> Some Era -> Some Era -> [Some Era] Source # | |
Show (Some Era) Source # | |
Eq (Some Era) Source # | |
Ord (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
Pretty (Some Era) Source # | |
data Some (f :: k -> Type) where Source #
An existential wrapper for types of kind k -> Type
. It can hold any
era, for example, Some Era
. The era witness can be brought back into scope,
for example, using this pattern:
anyEra = Some ConwayEra -- then later in the code Some era <- pure anyEra obtainCommonConstraints era foo
Constructors
Some :: forall {k} (f :: k -> Type) (a :: k). (Typeable a, Typeable (f a)) => f a -> Some f |
Instances
FromJSON (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods parseJSON :: Value -> Parser (Some Era) parseJSONList :: Value -> Parser [Some Era] omittedField :: Maybe (Some Era) | |
ToJSON (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
Bounded (Some Era) Source # | |
Enum (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras Methods succ :: Some Era -> Some Era Source # pred :: Some Era -> Some Era Source # toEnum :: Int -> Some Era Source # fromEnum :: Some Era -> Int Source # enumFrom :: Some Era -> [Some Era] Source # enumFromThen :: Some Era -> Some Era -> [Some Era] Source # enumFromTo :: Some Era -> Some Era -> [Some Era] Source # enumFromThenTo :: Some Era -> Some Era -> Some Era -> [Some Era] Source # | |
Show (Some Era) Source # | |
Eq (Some Era) Source # | |
Ord (Some Era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
Pretty (Some Era) Source # | |
type family LedgerEra era = (r :: Type) | r -> era where ... Source #
Users typically interact with the latest features on the mainnet or experiment with features from the upcoming era. Therefore, protocol versions are limited to the current mainnet era and the next (upcoming) era.
newtype DeprecatedEra era Source #
Constructors
DeprecatedEra (ShelleyBasedEra era) |
Instances
Show (DeprecatedEra era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras | |
Pretty (DeprecatedEra era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Eras |
eraToSbe :: Era era -> ShelleyBasedEra era Source #
Deprecated: Use convert
instead.
How to deprecate an era:
- Add the DEPRECATED pragma to the era type tag and constructor at the same time:
{-# DEPRECATED BabbageEra "BabbageEra no longer supported, use ConwayEra" #-} data BabbageEra
- Update the Haddock documentation for the constructor of the deprecated era, mentioning the deprecation.
data Era era where {-# DEPRECATED BabbageEra "BabbageEra no longer supported, use ConwayEra" #-} BabbageEra :: Era BabbageEra -- | The era currently active on Cardano's mainnet. ConwayEra :: Era ConwayEra
- Add a new
IsEra
instance and update the deprecated era instance to produce a compile-time error:
instance TypeError ('Text "IsEra BabbageEra: Deprecated. Update to ConwayEra") => IsEra BabbageEra where useEra = error "unreachable" instance IsEra ConwayEra where useEra = ConwayEra
eraToBabbageEraOnwards :: Era era -> BabbageEraOnwards era Source #
Deprecated: Use convert
instead.
sbeToEra :: MonadError (DeprecatedEra era) m => ShelleyBasedEra era -> m (Era era) Source #
Witness related
data AnyWitness era where Source #
Here we consider three types of witnesses in Cardano: * key witnesses * simple script witnesses * Plutus script witnesses
Note that AnyKeyWitnessPlaceholder
does not contain the actual key witness. This is because
key witnesses are provided in the signing stage of the transaction. However we need this constuctor
to index the witnessable things correctly when plutus scripts are being used within the transaction.
AnyWitness is solely used to contruct the transaction body.
Constructors
AnyKeyWitnessPlaceholder :: forall era. AnyWitness era | |
AnySimpleScriptWitness :: forall era. SimpleScriptOrReferenceInput era -> AnyWitness era | |
AnyPlutusScriptWitness :: forall (lang :: Language) (purpose :: PlutusScriptPurpose) era. PlutusScriptWitness lang purpose era -> AnyWitness era |
data PlutusScriptWitness (lang :: Language) (purpose :: PlutusScriptPurpose) era where Source #
This is a Plutus script witness. It possesses: 1. The plutus script or reference input 2. The script redeemer 3. The execution units 4. Potentially a script datum. See the PlutusScriptDatum type family for more details.
Note that Plutus script witnesses do not exist on their own. They must witness something
and a redeemer pointer must be constucted to point to the thing being witnessed.
See IndexedPlutusScriptWitness
for more details.
Constructors
PlutusScriptWitness :: forall (lang :: Language) era (purpose :: PlutusScriptPurpose). SLanguage lang -> PlutusScriptOrReferenceInput lang era -> PlutusScriptDatum lang purpose -> ScriptRedeemer -> ExecutionUnits -> PlutusScriptWitness lang purpose era |
Instances
Show (PlutusScriptWitness lang purpose era) Source # | |
data TxScriptWitnessRequirements era Source #
This type collects all the requirements for script witnesses in a transaction.
Instances
Monoid (TxScriptWitnessRequirements AlonzoEra) Source # | |
Defined in Cardano.Api.Internal.Experimental.Witness.TxScriptWitnessRequirements Methods mempty :: TxScriptWitnessRequirements AlonzoEra Source # mappend :: TxScriptWitnessRequirements AlonzoEra -> TxScriptWitnessRequirements AlonzoEra -> TxScriptWitnessRequirements AlonzoEra Source # mconcat :: [TxScriptWitnessRequirements AlonzoEra] -> TxScriptWitnessRequirements AlonzoEra Source # | |
Monoid (TxScriptWitnessRequirements BabbageEra) Source # | |
Defined in Cardano.Api.Internal.Experimental.Witness.TxScriptWitnessRequirements Methods mempty :: TxScriptWitnessRequirements BabbageEra Source # mappend :: TxScriptWitnessRequirements BabbageEra -> TxScriptWitnessRequirements BabbageEra -> TxScriptWitnessRequirements BabbageEra Source # mconcat :: [TxScriptWitnessRequirements BabbageEra] -> TxScriptWitnessRequirements BabbageEra Source # | |
Monoid (TxScriptWitnessRequirements ConwayEra) Source # | |
Defined in Cardano.Api.Internal.Experimental.Witness.TxScriptWitnessRequirements Methods mempty :: TxScriptWitnessRequirements ConwayEra Source # mappend :: TxScriptWitnessRequirements ConwayEra -> TxScriptWitnessRequirements ConwayEra -> TxScriptWitnessRequirements ConwayEra Source # mconcat :: [TxScriptWitnessRequirements ConwayEra] -> TxScriptWitnessRequirements ConwayEra Source # | |
Semigroup (TxScriptWitnessRequirements AlonzoEra) Source # | |
Defined in Cardano.Api.Internal.Experimental.Witness.TxScriptWitnessRequirements Methods (<>) :: TxScriptWitnessRequirements AlonzoEra -> TxScriptWitnessRequirements AlonzoEra -> TxScriptWitnessRequirements AlonzoEra Source # sconcat :: NonEmpty (TxScriptWitnessRequirements AlonzoEra) -> TxScriptWitnessRequirements AlonzoEra Source # stimes :: Integral b => b -> TxScriptWitnessRequirements AlonzoEra -> TxScriptWitnessRequirements AlonzoEra Source # | |
Semigroup (TxScriptWitnessRequirements BabbageEra) Source # | |
Defined in Cardano.Api.Internal.Experimental.Witness.TxScriptWitnessRequirements Methods (<>) :: TxScriptWitnessRequirements BabbageEra -> TxScriptWitnessRequirements BabbageEra -> TxScriptWitnessRequirements BabbageEra Source # sconcat :: NonEmpty (TxScriptWitnessRequirements BabbageEra) -> TxScriptWitnessRequirements BabbageEra Source # stimes :: Integral b => b -> TxScriptWitnessRequirements BabbageEra -> TxScriptWitnessRequirements BabbageEra Source # | |
Semigroup (TxScriptWitnessRequirements ConwayEra) Source # | |
Defined in Cardano.Api.Internal.Experimental.Witness.TxScriptWitnessRequirements Methods (<>) :: TxScriptWitnessRequirements ConwayEra -> TxScriptWitnessRequirements ConwayEra -> TxScriptWitnessRequirements ConwayEra Source # sconcat :: NonEmpty (TxScriptWitnessRequirements ConwayEra) -> TxScriptWitnessRequirements ConwayEra Source # stimes :: Integral b => b -> TxScriptWitnessRequirements ConwayEra -> TxScriptWitnessRequirements ConwayEra Source # |
data Witnessable (thing :: WitnessableItem) era where Source #
These are all of the "things" a plutus script can witness. We include the relevant
type class constraint to avoid boilerplate when creating the PlutusPurpose
in
the GetPlutusScriptPurpose
instances.
Constructors
WitTxIn :: forall era. AlonzoEraScript era => TxIn -> Witnessable 'TxInItem era | |
WitTxCert :: forall era. (EraTxCert era, AlonzoEraScript era) => TxCert era -> StakeCredential -> Witnessable 'CertItem era | |
WitMint :: forall era. AlonzoEraScript era => PolicyId -> PolicyAssets -> Witnessable 'MintItem era | |
WitWithdrawal :: forall era. AlonzoEraScript era => StakeAddress -> Coin -> Witnessable 'WithdrawalItem era | |
WitVote :: forall era. ConwayEraScript era => Voter -> Witnessable 'VoterItem era | |
WitProposal :: forall era. (ConwayEraScript era, EraPParams era) => ProposalProcedure era -> Witnessable 'ProposalItem era |
Instances
Show (Witnessable thing era) Source # | |
Eq (Witnessable thing era) Source # | |
Defined in Cardano.Api.Internal.Experimental.Plutus.IndexedPlutusScriptWitness Methods (==) :: Witnessable thing era -> Witnessable thing era -> Bool Source # (/=) :: Witnessable thing era -> Witnessable thing era -> Bool Source # |
data WitnessableItem Source #
Constructors
TxInItem | |
CertItem | |
MintItem | |
WithdrawalItem | |
VoterItem | |
ProposalItem |
Simple script related
data SimpleScript era where Source #
A simple script in a particular era. We leverage ledger's Cardano.Api.Experimental.ErasraScript type class methods to work with the script.
Constructors
SimpleScript :: forall era. EraScript era => NativeScript era -> SimpleScript era |
Instances
Show (SimpleScript era) Source # | |
data SimpleScriptOrReferenceInput era Source #
Constructors
SScript (SimpleScript era) | |
SReferenceScript TxIn |
Instances
Plutus related
data PlutusScriptInEra (lang :: Language) era where Source #
A Plutus script in a particular era.
Why PlutusRunnable? Mainly for deserialization benefits.
The deserialization of this type looks at the
major protocol version and the script language to determine if
indeed the script is runnable. This is a dramatic improvement over the old api
which essentially read a ByteString
and hoped for the best.
Any failures due to malformed/invalid scripts were caught upon transaction
submission or running the script when attempting to predict the necessary execution units.
Where do we get the major protocol version from?
In order to access the major protocol version we pass in an era
type parameter which
can be translated to the major protocol version.
Where do we get the script language from?
The serialized version of PlutusRunnable
encodes the script language.
See `DecCBOR (PlutusRunnable l)` in cardano-ledger for more details.
Constructors
PlutusScriptInEra :: forall (lang :: Language) era. PlutusRunnable lang -> PlutusScriptInEra lang era |
Instances
Show (PlutusScriptInEra lang era) Source # | |
data PlutusScriptOrReferenceInput (lang :: Language) era Source #
You can provide the plutus script directly in the transaction or a reference input that points to the script in the UTxO. Using a reference script saves space in your transaction.
Constructors
PScript (PlutusScriptInEra lang era) | |
PReferenceScript TxIn |
Instances
Show (PlutusScriptOrReferenceInput lang era) Source # | |
data IndexedPlutusScriptWitness (witnessable :: WitnessableItem) (lang :: Language) (purpose :: PlutusScriptPurpose) era where Source #
A Plutus script witness along the thing it is witnessing and the index of that thing. E.g transaction input, certificate, withdrawal, minting policy, etc. A Plutus script witness only makes sense in the context of what it is witnessing and the index of the thing it is witnessing.
Constructors
IndexedPlutusScriptWitness :: forall era (witnessable :: WitnessableItem) (lang :: Language) (purpose :: PlutusScriptPurpose). AlonzoEraScript era => Witnessable witnessable era -> PlutusPurpose AsIx era -> PlutusScriptWitness lang purpose era -> IndexedPlutusScriptWitness witnessable lang purpose era |
Instances
Show (IndexedPlutusScriptWitness witnessable lang purpose era) Source # | |
data PlutusScriptPurpose Source #
Every Plutus script has a purpose that indicates what that script is witnessing.
Constructors
SpendingScript | Witnesses a transaction input |
MintingScript | Witnesses a minting policy |
WithdrawingScript | Witnesses a withdrawal |
CertifyingScript | Witnesses a certificate |
ProposingScript | Witnesses a proposal |
VotingScript | Witnesses a vote |
data PlutusScriptDatum (lang :: Language) (purpose :: PlutusScriptPurpose) where Source #
Constructors
SpendingScriptDatum :: forall (lang :: Language). PlutusScriptDatumF lang 'SpendingScript -> PlutusScriptDatum lang 'SpendingScript | |
InlineDatum :: forall (lang :: Language) (purpose :: PlutusScriptPurpose). PlutusScriptDatum lang purpose | |
NoScriptDatum :: forall (lang :: Language) (purpose :: PlutusScriptPurpose). PlutusScriptDatum lang purpose |
Instances
Show (PlutusScriptDatum lang purpose) Source # | |
data NoScriptDatum Source #
Constructors
NoScriptDatumAllowed |
Instances
Internal
getAnyWitnessRedeemerPointerMap :: forall era (witnessable :: WitnessableItem). AlonzoEraOnwards era -> [(Witnessable witnessable (ShelleyLedgerEra era), AnyWitness (ShelleyLedgerEra era))] -> Redeemers (ShelleyLedgerEra era) Source #
The transaction's redeemer pointer map allows the ledger to connect a redeemer and execution unit pairing to the relevant script. The ledger basically reconstructs the indicies (redeemer pointers) of this map can then look up the relevant execution units/redeemer pairing. NB: the redeemer pointer has been renamed to 'PlutusPurpose AsIndex' in the ledger.
toPlutusScriptPurpose :: forall (thing :: WitnessableItem). GetPlutusScriptPurpose era => Word32 -> Witnessable thing era -> PlutusPurpose AsIx era Source #
Legacy
legacyWitnessConversion :: forall era (witnessable :: WitnessableItem) ctx. AlonzoEraOnwards era -> [(Witnessable witnessable (ShelleyLedgerEra era), BuildTxWith BuildTx (Witness ctx era))] -> Either DecoderError [(Witnessable witnessable (ShelleyLedgerEra era), AnyWitness (ShelleyLedgerEra era))] Source #
When it comes to using plutus scripts we need to provide the following to the tx:
- The redeemer pointer map
- The set of plutus languages in use
- The set of plutus scripts in use (present in the t)
- The datum map
toPlutusSLanguage :: PlutusScriptVersion lang -> SLanguage (ToLedgerPlutusLanguage lang) Source #