| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Cardano.Ledger.Alonzo.Plutus.Context
Contents
Synopsis
- data LedgerTxInfo era where
- LedgerTxInfo ∷ ∀ era (level ∷ TxLevel). {..} → LedgerTxInfo era
- class (PlutusLanguage l, EraPlutusContext era, EraTxLevel era, Eq (PlutusTxInfo l), Show (PlutusTxInfo l)) ⇒ EraPlutusTxInfo (l ∷ Language) era where
- toPlutusTxCert ∷ proxy l → ProtVer → TxCert era → Either (ContextError era) (PlutusTxCert l)
- toPlutusScriptPurpose ∷ proxy l → ProtVer → PlutusPurpose AsIxItem era → Either (ContextError era) (PlutusScriptPurpose l)
- toPlutusTxInfo ∷ proxy l → LedgerTxInfo era → PlutusTxInfoResult l era
- toPlutusArgs ∷ proxy l → ProtVer → PlutusTxInfo l → PlutusPurpose AsIxItem era → Maybe (Data era) → Data era → Either (ContextError era) (PlutusArgs l)
- toPlutusTxInInfo ∷ proxy l → UTxO era → TxIn → Either (ContextError era) (PlutusTxInInfo era l)
- newtype PlutusTxInfoResult (l ∷ Language) era = PlutusTxInfoResult {
- unPlutusTxInfoResult ∷ Either (ContextError era) (PlutusPurpose AsPurpose era → Either (ContextError era) (PlutusTxInfo l))
- mkPlutusTxInfoFromResult ∷ ∀ era (l ∷ Language). PlutusPurpose AsPurpose era → PlutusTxInfoResult l era → Either (ContextError era) (PlutusTxInfo l)
- toPlutusTxInfoForPurpose ∷ ∀ (l ∷ Language) era proxy. EraPlutusTxInfo l era ⇒ proxy l → LedgerTxInfo era → PlutusPurpose AsPurpose era → Either (ContextError era) (PlutusTxInfo l)
- class (AlonzoEraScript era, Eq (ContextError era), Show (ContextError era), NFData (ContextError era), EncCBOR (ContextError era), DecCBOR (ContextError era), ToJSON (ContextError era)) ⇒ EraPlutusContext era where
- type ContextError era = (r ∷ Type) | r → era
- data TxInfoResult era
- mkSupportedLanguage ∷ Language → Maybe (SupportedLanguage era)
- mkTxInfoResult ∷ LedgerTxInfo era → TxInfoResult era
- lookupTxInfoResult ∷ ∀ (l ∷ Language). EraPlutusTxInfo l era ⇒ SLanguage l → TxInfoResult era → PlutusTxInfoResult l era
- mkPlutusWithContext ∷ PlutusScript era → ScriptHash → PlutusPurpose AsIxItem era → LedgerTxInfo era → TxInfoResult era → (Data era, ExUnits) → CostModel → Either (ContextError era) PlutusWithContext
- toPlutusWithContext ∷ ∀ (l ∷ Language) era. (EraPlutusTxInfo l era, AlonzoEraUTxO era) ⇒ Either (Plutus l) (PlutusRunnable l) → ScriptHash → PlutusPurpose AsIxItem era → LedgerTxInfo era → TxInfoResult era → (Data era, ExUnits) → CostModel → Either (ContextError era) PlutusWithContext
- lookupTxInfoResultImpossible ∷ ∀ (l ∷ Language) era. (HasCallStack, EraPlutusTxInfo l era) ⇒ SLanguage l → PlutusTxInfoResult l era
- data SupportedLanguage era where
- SupportedLanguage ∷ ∀ (l ∷ Language) era. EraPlutusTxInfo l era ⇒ SLanguage l → SupportedLanguage era
- mkSupportedLanguageM ∷ (EraPlutusContext era, MonadFail m) ⇒ Language → m (SupportedLanguage era)
- supportedLanguages ∷ (HasCallStack, EraPlutusContext era) ⇒ NonEmpty (SupportedLanguage era)
- mkSupportedPlutusScript ∷ ∀ (l ∷ Language) era. (HasCallStack, EraPlutusTxInfo l era) ⇒ Plutus l → PlutusScript era
- mkSupportedBinaryPlutusScript ∷ (HasCallStack, AlonzoEraScript era) ⇒ SupportedLanguage era → PlutusBinary → PlutusScript era
- type family PlutusTxInfo (l ∷ Language) where ...
- type family PlutusTxCert (l ∷ Language) where ...
- type family PlutusScriptPurpose (l ∷ Language) where ...
- type family PlutusScriptContext (l ∷ Language) = (r ∷ Type) | r → l where ...
- type family PlutusTxInInfo era (l ∷ Language) where ...
Documentation
data LedgerTxInfo era where Source #
All information that is necessary from the ledger to construct Plutus' TxInfo.
Constructors
| LedgerTxInfo | |
Fields
| |
class (PlutusLanguage l, EraPlutusContext era, EraTxLevel era, Eq (PlutusTxInfo l), Show (PlutusTxInfo l)) ⇒ EraPlutusTxInfo (l ∷ Language) era where Source #
Methods
toPlutusTxCert ∷ proxy l → ProtVer → TxCert era → Either (ContextError era) (PlutusTxCert l) Source #
toPlutusScriptPurpose ∷ proxy l → ProtVer → PlutusPurpose AsIxItem era → Either (ContextError era) (PlutusScriptPurpose l) Source #
toPlutusTxInfo ∷ proxy l → LedgerTxInfo era → PlutusTxInfoResult l era Source #
toPlutusArgs ∷ proxy l → ProtVer → PlutusTxInfo l → PlutusPurpose AsIxItem era → Maybe (Data era) → Data era → Either (ContextError era) (PlutusArgs l) Source #
toPlutusTxInInfo ∷ proxy l → UTxO era → TxIn → Either (ContextError era) (PlutusTxInInfo era l) Source #
Instances
| EraPlutusTxInfo 'PlutusV1 AlonzoEra Source # | |
Defined in Cardano.Ledger.Alonzo.Plutus.TxInfo Methods toPlutusTxCert ∷ proxy 'PlutusV1 → ProtVer → TxCert AlonzoEra → Either (ContextError AlonzoEra) (PlutusTxCert 'PlutusV1) Source # toPlutusScriptPurpose ∷ proxy 'PlutusV1 → ProtVer → PlutusPurpose AsIxItem AlonzoEra → Either (ContextError AlonzoEra) (PlutusScriptPurpose 'PlutusV1) Source # toPlutusTxInfo ∷ proxy 'PlutusV1 → LedgerTxInfo AlonzoEra → PlutusTxInfoResult 'PlutusV1 AlonzoEra Source # toPlutusArgs ∷ proxy 'PlutusV1 → ProtVer → PlutusTxInfo 'PlutusV1 → PlutusPurpose AsIxItem AlonzoEra → Maybe (Data AlonzoEra) → Data AlonzoEra → Either (ContextError AlonzoEra) (PlutusArgs 'PlutusV1) Source # toPlutusTxInInfo ∷ proxy 'PlutusV1 → UTxO AlonzoEra → TxIn → Either (ContextError AlonzoEra) (PlutusTxInInfo AlonzoEra 'PlutusV1) Source # | |
newtype PlutusTxInfoResult (l ∷ Language) era Source #
This is the helper type that captures translation of Tx to PlutusTxInfo.
It is important to note that TxInfo is always the same per Plutus version for each Tx. This
invariant allows us to avoid duplicate computation by memoizing all possible PlutusTxInfos per
transaction. Starting with Dijkstra era there is a slight complication introduced to this
invariant where top level transaction has a different PlutusTxInfo for Guarding purpose, when
compared to all other purposes. That is the reason why result is somewhat strange, namely a
function from PlutusPurpose to PlutusTxInfo. It is also done this way, instead of adding
ScriptPurpose as an argument to toPlutusTxInfo to preserve capability of memoization, hence
nested Either
Constructors
| PlutusTxInfoResult | |
Fields
| |
mkPlutusTxInfoFromResult ∷ ∀ era (l ∷ Language). PlutusPurpose AsPurpose era → PlutusTxInfoResult l era → Either (ContextError era) (PlutusTxInfo l) Source #
Given the prepared PlutusTxInfoResult and the purpose this function allows constructing the PlutusTxInfo, while memoizing the computation from PlutusTxInfoResult for its subsequent uses.
toPlutusTxInfoForPurpose ∷ ∀ (l ∷ Language) era proxy. EraPlutusTxInfo l era ⇒ proxy l → LedgerTxInfo era → PlutusPurpose AsPurpose era → Either (ContextError era) (PlutusTxInfo l) Source #
This is what toPlutusTxInfo would be without the intermediate PlutusTxInfoResult.
Note - Using this function totally drops any memoization of TxInfo, as such use it only for
testing or tooling that doesn't care about performance.
class (AlonzoEraScript era, Eq (ContextError era), Show (ContextError era), NFData (ContextError era), EncCBOR (ContextError era), DecCBOR (ContextError era), ToJSON (ContextError era)) ⇒ EraPlutusContext era where Source #
Associated Types
type ContextError era = (r ∷ Type) | r → era Source #
data TxInfoResult era Source #
This data type family is used to memoize the results of toPlutusTxInfo, so the outcome can
be shared between execution of different scripts with the same language version.
Methods
mkSupportedLanguage ∷ Language → Maybe (SupportedLanguage era) Source #
mkTxInfoResult ∷ LedgerTxInfo era → TxInfoResult era Source #
Construct PlutusTxInfo for all supported languages in this era.
lookupTxInfoResult ∷ ∀ (l ∷ Language). EraPlutusTxInfo l era ⇒ SLanguage l → TxInfoResult era → PlutusTxInfoResult l era Source #
TxInfo for the same language can be shared between executions of every script of the same
version in a single transaction.
Note - The EraPlutusTxInfo is here only to enforce this function is not called with an
unsupported plutus language version.
mkPlutusWithContext ∷ PlutusScript era → ScriptHash → PlutusPurpose AsIxItem era → LedgerTxInfo era → TxInfoResult era → (Data era, ExUnits) → CostModel → Either (ContextError era) PlutusWithContext Source #
Instances
| EraPlutusContext AlonzoEra Source # | |||||||||
Defined in Cardano.Ledger.Alonzo.Plutus.TxInfo Associated Types
Methods mkSupportedLanguage ∷ Language → Maybe (SupportedLanguage AlonzoEra) Source # mkTxInfoResult ∷ LedgerTxInfo AlonzoEra → TxInfoResult AlonzoEra Source # lookupTxInfoResult ∷ ∀ (l ∷ Language). EraPlutusTxInfo l AlonzoEra ⇒ SLanguage l → TxInfoResult AlonzoEra → PlutusTxInfoResult l AlonzoEra Source # mkPlutusWithContext ∷ PlutusScript AlonzoEra → ScriptHash → PlutusPurpose AsIxItem AlonzoEra → LedgerTxInfo AlonzoEra → TxInfoResult AlonzoEra → (Data AlonzoEra, ExUnits) → CostModel → Either (ContextError AlonzoEra) PlutusWithContext Source # | |||||||||
toPlutusWithContext ∷ ∀ (l ∷ Language) era. (EraPlutusTxInfo l era, AlonzoEraUTxO era) ⇒ Either (Plutus l) (PlutusRunnable l) → ScriptHash → PlutusPurpose AsIxItem era → LedgerTxInfo era → TxInfoResult era → (Data era, ExUnits) → CostModel → Either (ContextError era) PlutusWithContext Source #
lookupTxInfoResultImpossible ∷ ∀ (l ∷ Language) era. (HasCallStack, EraPlutusTxInfo l era) ⇒ SLanguage l → PlutusTxInfoResult l era Source #
Helper function to use when implementing lookupTxInfoResult for plutus languages that are not
supported by the era.
data SupportedLanguage era where Source #
Constructors
| SupportedLanguage ∷ ∀ (l ∷ Language) era. EraPlutusTxInfo l era ⇒ SLanguage l → SupportedLanguage era |
Instances
mkSupportedLanguageM ∷ (EraPlutusContext era, MonadFail m) ⇒ Language → m (SupportedLanguage era) Source #
supportedLanguages ∷ (HasCallStack, EraPlutusContext era) ⇒ NonEmpty (SupportedLanguage era) Source #
mkSupportedPlutusScript ∷ ∀ (l ∷ Language) era. (HasCallStack, EraPlutusTxInfo l era) ⇒ Plutus l → PlutusScript era Source #
This is just like mkPlutusScript, except it is guaranteed to be total through the enforcement
of support by the type system and EraPlutusTxInfo type class instances for supported plutus
versions.
mkSupportedBinaryPlutusScript ∷ (HasCallStack, AlonzoEraScript era) ⇒ SupportedLanguage era → PlutusBinary → PlutusScript era Source #
This is just like mkBinaryPlutusScript, except it is guaranteed to be total through the enforcement
of support by the type system and EraPlutusTxInfo type class instances (via calling `mkSupportedPlutusScript) for supported plutus
versions.
Language dependent translation
type family PlutusTxInfo (l ∷ Language) where ... Source #
Equations
| PlutusTxInfo 'PlutusV1 = TxInfo | |
| PlutusTxInfo 'PlutusV2 = TxInfo | |
| PlutusTxInfo 'PlutusV3 = TxInfo | |
| PlutusTxInfo 'PlutusV4 = TxInfo |
type family PlutusTxCert (l ∷ Language) where ... Source #
Equations
| PlutusTxCert 'PlutusV1 = DCert | |
| PlutusTxCert 'PlutusV2 = DCert | |
| PlutusTxCert 'PlutusV3 = TxCert | |
| PlutusTxCert 'PlutusV4 = TxCert |
type family PlutusScriptPurpose (l ∷ Language) where ... Source #
type family PlutusScriptContext (l ∷ Language) = (r ∷ Type) | r → l where ... Source #
type family PlutusTxInInfo era (l ∷ Language) where ... Source #
Equations
| PlutusTxInInfo AlonzoEra 'PlutusV1 = Maybe TxInInfo | |
| PlutusTxInInfo _1 'PlutusV1 = TxInInfo | |
| PlutusTxInInfo _1 'PlutusV2 = TxInInfo | |
| PlutusTxInInfo _1 'PlutusV3 = TxInInfo | |
| PlutusTxInInfo _1 'PlutusV4 = TxInInfo |