BlockchainTransaction (for Cardano)
BlockchainTransaction[assoc]
represents a Cardano blockchain transaction built from the components in the association assoc.
Details
- Gives a symbolic representation of a Cardano blockchain transaction; it does not submit the transaction, and the transaction is not signed.
- BlockchainTransaction[…][prop] gives the value of the property prop for the transaction.
- The following elements must be given:
-
"Inputs" list of inputs, given as associations "Outputs" list of outputs, given as associations - The following additional elements can also be given:
-
"Fee" transaction fee "TimeToLive" upper-bound slot number for the transaction to be valid "Mint" list of tokens to be minted "Scripts" policy scripts "Metadata" metadata of tokens to be minted "CollateralInputs" list of collateral inputs to spend scripts "RequiredSigners" list of required signers to spend scripts "CollateralOutputs" a collateral output to return assets in case collateral inputs are used - Each association in the "Inputs" list must have the following entries:
-
"TransactionID" hash of a previous transaction "Index" index within the previous transaction output - The following additional entries for "Inputs" can be given when spending a script:
-
"Datum" the script data corresponding to the (unhashed) datum of the previous transaction output "Redeemer" an association that specifies the input's redeemer (tag, redeemer script data, memory and steps) "Script" the script of the previous transaction output "ReferenceScript" a reference input that holds a script "ReferenceDatum" a reference input that holds an inline datum - The value for "Redeemer" within an association in the "Inputs" list must have the following entries:
-
"Tag" the redeemer's tag ("Spend") "Data" the redeemer's script data - The following additional entries for "Redeemer" can also be given:
-
"Memory" the script execution's CPU memory budget, expressed as an integer, or Automatic "Steps" the script execution's steps budget, expressed as an integer, or Automatic - When the entry "Memory" or "Steps" is not specified, its default value is Automatic.
- The value for "Datum" and the value for "Data" within "Redeemer" must use Cardano's detailed JSON schema. Script data can be a rule-based representation of Cardano's detailed JSON schema or a script data file.
- The value for "Script" within an association in the "Inputs" list can be a script JSON file or an association with entries "Type" and "ByteCode". The supported values for "Type" are "PlutusScriptV1" and "PlutusScriptV2". The value for "ByteCode" must be a hex string corresponding to the CBOR representation of the script.
- The value for "ReferenceScript" and "ReferenceDatum" within an association in the "Inputs" list must be an association with "TransactionID" and "Index" fields.
- Each association in the "Outputs" list must have the following entries:
-
"Address" the output's address "Amount" amount in lovelace, or Automatic - The value for "Address" can be a string, a Plutus script JSON file or a Plutus script represented as an association with entries "Type" and "ByteCode".
- When the value for "Address" is a Plutus script, the script address will be calculated automatically.
- The value for "Amount" can be either a Quantity or Automatic.
- When the value for "Amount" is Automatic, the value for "Fee" must be Automatic. There can only be one association in the "Outputs" list with "Amount"->Automatic.
- The following additional entries can also be given:
-
"Tokens" list of input tokens "Datum" an association specifying the output datum - The value for "Tokens" can be either a list of input tokens or Automatic.
- The "Datum" association within an association in the "Outputs" list must have the following entries:
-
"Data" the datum's script data "Mode" the datum's inserting mode ("Hash" or "Inline") - The value for "Data" within an association in the "Outputs" list must be a file containing script data or an association that corresponds to importing script data as "RawJSON".
- Each association in the "Tokens" list must have the following entries:
-
"AssetName" asset name as a hex string "PolicyID" policy ID "Quantity" amount of tokens - The value for "Fee" can be either Automatic or Quantity.
- When the value for "Fee" is Automatic, only one of the associations in the "Outputs" list can have "Amount"->Automatic. In this case, the minimum required fee will be calculated and, if needed, any leftover cryptocurrency will be sent to the aforementioned output.
- Each association in the "Mint" list must have the following entries:
-
"AssetName" asset name given as a hex string "PolicyID" policy ID "Quantity" amount of tokens to be minted (burned if quantity is a negative number) - Each association in "CollateralInputs" list must have the following entries:
-
"TransactionID" hash of a previous transaction "Index" index within the previous transaction output - Associations in the "CollateralInputs" list must not point to an output with a script address. As well, the list can be at most of length 3.
- The values in the "RequiredSigners" list can be a PublicKey, a PrivateKey, an address or a public key hash.
- When "CollateralOutputs" is specified, "CollateralInputs" must also be specified. The "CollateralOutputs" entry dictates how many assets (lovelace and/or tokens) will be sent from "CollateralInputs" to the specified "Address" in case the transaction fails script validation after transaction submission.
- The value for "CollateralOutputs" can be either an association or a list of a single association with the following entries:
-
"Address" the collateral output's address "Amount" amount in lovelace, or Automatic "Tokens" list of input tokens, or Automatic - When fields in "CollateralOutputs" are set to Automatic, the minimum collateral is assumed and any remaining assets in "CollateralInputs" are sent to the specified "Address". When either "Amount" or "Tokens" is not specified, Automatic is assumed.
- BlockchainTransaction can represent transactions for Cardano mainnet and testnet "preprod", which is a network for testing purposes. To specify these networks, use the "BlockchainBase" value inside the required association or the BlockchainBase option.
Examples
open allclose allBasic Examples (3)
Scope (13)
Default Values (2)
Minimum Required Fee (1)
Minting and Burning Tokens (2)
Metadata (1)
Deploy Plutus Scripts (1)
Spend Plutus Scripts (1)
Spend Plutus scripts using the "Redeemer", "Datum" and "Script" elements in the "Inputs" list, and specifying collateral inputs in "CollateralInputs":
Spend Plutus scripts that have required signers by specifying them with a PrivateKey object, a PublicKey object, an address or a public key hash within the "RequiredSigners" list:
Once the transaction is signed, the transaction is fully serialized:
Deploy Plutus Scripts with Inline Datum (1)
Deploy a Plutus Reference Script (1)
Spend Plutus Script Using a Reference Script (1)
Spend Plutus Script Using ReferenceDatum (1)
Options (2)
Applications (11)
Transfer Cryptocurrency (1)
Create a Cardano blockchain transaction to transfer ada cryptocurrency:
Sign the transaction with a PrivateKey object:
Mint Tokens (1)
Create a Cardano blockchain transaction to mint 1,000,000 tokens and send them to multiple addresses:
Alternatively, a single output is allowed to have "Amount" set to Automatic to have any remaining tokens sent to that address:
Sign the transaction with PrivateKey objects:
Submit the transaction to the Cardano blockchain to mint the tokens:
Mint NFT (1)
Generate an image to mint it as an NFT:
Upload the image to IPFS and save its CID:
Prepare the NFT metadata following the CIP 25 standard:
Create the Cardano blockchain transaction to mint the NFT:
Sign the transaction with PrivateKey objects:
Submit the transaction to the Cardano blockchain to mint the NFT:
Transfer Tokens (1)
Create a Cardano blockchain transaction to transfer tokens:
Sign the transaction with a PrivateKey object:
Burn Tokens (1)
Create a Cardano blockchain transaction to burn tokens:
Sign the transaction with a PrivateKey object:
Deploy Compiled Plutus Script (1)
Obtain a compiled Plutus script:
This particular script succeeds if, and only if, the redeemer's script data is a list of prime factors of the datum. For the datum, choose 221 as an arbitrary semi-prime. Script data must conform to Cardano's detailed JSON schema:
Deploy Plutus scripts with a datum hash by specifying within the "Outputs" list an "Address" pointing to a script file and a "Datum" with "Data" pointing to a script data file and using the "Hash" mode:
Sign the transaction with a PrivateKey object:
Spend Compiled Plutus Script (1)
Spend a Plutus script using the "Redeemer", "Datum" and "Script" elements in the "Inputs" list and specifying collateral inputs in "CollateralInputs":
Notice that execution units were calculated automatically:
Sign the transaction with a PrivateKey object:
Spend Compiled Plutus Script with Required Signers (1)
Obtain a compiled Plutus script:
This particular script succeeds if, and only if, the spending transaction is signed by the private key associated with the public key hash included in the deployed datum:
Deploy a Plutus script with a datum hash by specifying within the "Outputs" list an "Address" pointing to a script file and a "Datum" with "Data" pointing to a script data file and using the "Hash" mode:
Sign the transaction with a PrivateKey object:
Submit the transaction to the Cardano blockchain:
Spend Plutus scripts that have required signers by specifying them with a PrivateKey object, a PublicKey object, an address or a public key hash within the "RequiredSigners" list:
When automatic execution units are requested and the script requires signers, calculation of required signers is delayed until the transaction is signed. Sign the transaction using a PrivateKey object:
The automatic execution units have now been calculated:
Deploy and Spend Plutus Script V2 with a ReferenceScript and CollateralOutputs (3)
Deploy Reference Script (1)
Obtain a compiled Plutus V2 script:
Create a Cardano blockchain transaction to deploy a reference script:
Sign the transaction with a PrivateKey object:
Submit the transaction to the Cardano blockchain to deploy reference script:
Deploy Plutus Script UTXO with Inline Datum (1)
Create a Cardano blockchain transaction to deploy a script UTXO:
Sign the transaction with a PrivateKey object:
Submit the transaction to the Cardano blockchain to deploy the script UTXO:
Spend Plutus Script (1)
The following transaction that holds tokens will be used as collateral:
Create a Cardano blockchain transaction to spend a script UTXO using reference script and collateral outputs:
Sign the transaction with a PrivateKey object and submit the transaction to the Cardano blockchain:
Properties & Relations (1)
An element of the "UTXOList" property of BlockchainAddressData can be used as an input in a Cardano blockchain transaction:
Text
Wolfram Research (2021), BlockchainTransaction, Wolfram Language function, https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html.
CMS
Wolfram Language. 2021. "BlockchainTransaction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html.
APA
Wolfram Language. (2021). BlockchainTransaction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html