Majority of the logic of smart contracts has to do with making assertions about certain properties of the
It contains a lot of useful information such as:
- When is the transaction?
- What will the inputs of the transactions be?
- What will the outputs of the transaction?
All of these things are contained in the ScriptContext object passed into the contract as the last argument. This section covers the most interesting parts of the Script Context - if you want to learn more check out the full documentation at the module description
ScriptContext is defined as:
@dataclass() class ScriptContext(PlutusData): """ Auxiliary information about the transaction and reason for invocation of the called script. """ tx_info: TxInfo purpose: ScriptPurpose
The most important field in the
ScriptContext is the
tx_info field which is of type
@dataclass() class TxInfo(PlutusData): """ A complex agglomeration of everything that could be of interest to the executed script, regarding the transaction that invoked the script """ # The input UTXOs of the transaction. inputs: List[TxInInfo] # The reference UTXOs of the transaction. reference_inputs: List[TxInInfo] # The output UTXOs created by the transaction. outputs: List[TxOut] # Transaction fee to be payed for the transaction. fee: Value # The value minted in the transaction. mint: Value dcert: List[DCert] wdrl: Dict[StakingCredential, int] valid_range: POSIXTimeRange # The signatures for the transaction. signatories: List[PubKeyHash] redeemers: Dict[ScriptPurpose, Redeemer] data: Dict[DatumHash, Datum] # The ID of the transaction. id: TxId
This type contains data about a UTXO being used as a transaction input.
@dataclass() class TxInInfo(PlutusData): """ The plutus representation of an transaction output, that is consumed by the transaction. """ out_ref: TxOutRef resolved: TxOut
This type contains data about a UTXO.
@dataclass() class TxOut(PlutusData): """ The plutus representation of an transaction output, consisting of - address: address owning this output - value: tokens associated with this output - datum: datum associated with this output - reference_script: reference script associated with this output """ address: Address value: Value datum: OutputDatum reference_script: Union[NoScriptHash, SomeScriptHash]