BlockchainTransaction (卡尔达诺)

BlockchainTransaction[assoc]

表示从关联 assoc 中的组件构建的卡尔达诺区块链交易.

更多信息

  • 给出卡尔达诺区块链交易的符号表示;其不提交交易,且交易未签名.
  • BlockchainTransaction[][prop] 给出交易的属性 prop 的值.
  • 必须给出以下元素:
  • "Inputs"输入列表,以关联形式给出
    "Outputs"输出列表,以关联形式给出
  • 还可以给出以下附加元素:
  • "Fee"交易费用
    "TimeToLive"交易有效的上限插槽数
    "Mint"要铸造的令牌列表
    "Scripts"策略脚本
    "Metadata"要铸造的令牌的元数据
    "CollateralInputs"支出脚本的抵押输入列表
    "RequiredSigners"支出脚本所需签名者列表
    "CollateralOutputs"在使用抵押输入的情况下,用于返还资产的抵押输出
  • "Inputs" 列表中的每个关联都必须具有以下条目:
  • "TransactionID"上一笔交易的哈希
    "Index"上一笔交易输出中的索引
  • 支出脚本时,可为 "Inputs" 添加以下条目:
  • "Datum"与上一个交易输出的(未被哈希)数据相对应的脚本数据t
    "Redeemer"指定输入赎回器的关联关系(标签、赎回器脚本数据、内存和步骤)
    "Script"上一个交易输出的脚本
    "ReferenceScript"保存脚本的参考输入
    "ReferenceDatum"保存内联数据的参考输入
  • "Inputs" 列表中关联内的 "Redeemer" 值必须具有以下条目:
  • "Tag"赎回者的签名(花费
    "Data"赎回者脚本数据
  • 还可以提供以下有关 "Redeemer" 的补充条目:
  • "Memory"脚本执行的 CPU 内存预算,以整数表示,或 Automatic
    "Steps"脚本执行的步骤预算,以整数表示,或 Automatic
  • 当未指定 "Memory""Steps" 条目时,其默认值为 Automatic.
  • "Datum" 的值和 "Redeemer""Data" 的值必须使用卡尔达诺的详细 JSON 架构. 脚本数据可以是卡尔达诺详细 JSON 架构的基于规则的表示或脚本数据文件.
  • "Inputs" 列表中关联中的 "Script" 值可以是脚本 JSON 文件,也可以是带有 "Type""ByteCode" 条目的关联关系. "Type" 的支持值为 "PlutusScriptV1" 和 "PlutusScriptV2". "ByteCode" 的值必须是与脚本的 CBOR 表示法相对应的十六进制字符串.
  • "Inputs" 列表里的关联关系中 "ReferenceScript""ReferenceDatum" 的值必须是带有 "TransactionID""Index" 字段的关联.
  • "Outputs" 列表中的每个关联都必须具有以下条目:
  • "Address"输出地址
    "Amount"用 lovelace 计量的数量,或 Automatic
  • "Address" 的值可以是字符串、Plutus 脚本 JSON 文件或表示为与条目 "Type""ByteCode" 关联的 Plutus 脚本.
  • "Address" 的值为Plutus 脚本时,将自动计算脚本地址.
  • "Amount" 的值可以是 QuantityAutomatic.
  • "Amount" 的值为 Automatic 时,"Fee" 的值必须为 Automatic. "Outputs" 列表中只能有一个 "Amount"->Automatic 的关联.
  • 还可以给出以下附加条目:
  • "Tokens"输入令牌列表
    "Datum"指定输出数据的关联
  • "Tokens" 的值可以是输入标记的列表,也可以是 Automatic.
  • "Outputs" 列表中关联内的 "Datum" 关联必须具有以下条目:
  • "Data"数据的脚本数据
    "Mode"数据的插入模式(哈希内联
  • "Outputs" 列表中关联内的 "Data" 值必须是包含脚本数据的文件或对应于将脚本数据导入为 "RawJSON" 的关联.
  • "Tokens" 列表中的每个关联都必须具有以下条目:
  • "AssetName"以十六进制字符串表示的资产名称
    "PolicyID"策略 ID
    "Quantity"令牌数量
  • "Fee" 的值可以是 AutomaticQuantity.
  • "Fee" 的值为 Automatic 时,"Outputs" 列表中只有一个关联可以具有 "Amount"->Automatic. 在这种情况下,将计算所需的最低费用,并且如果需要,任何剩余的加密货币将被发送到上述输出.
  • "Mint" 列表中的每个关联都必须具有以下条目:
  • "AssetName"以十六进制字符串表示的资产名称
    "PolicyID"策略 ID
    "Quantity"要铸造的令牌数量(如果数量为负数,则销毁)
  • "CollateralInputs" 列表中的每个关联必须具有以下条目:
  • "TransactionID"前一笔交易的哈希值
    "Index"前一笔交易输出中的索引
  • "CollateralInputs" 列表中的关联不得指向具有脚本地址的输出. 同样,列表的长度最多为 3.
  • "RequiredSigners" 列表中的值可以是公钥、私钥、地址或公钥哈希.
  • 指定 "CollateralOutputs" 时,还必须指定 "CollateralInputs". 如果交易提交后脚本验证失败,"CollateralOutputs" 条目将决定从 "CollateralInputs" 向指定的 "Address" 发送多少资产(lovelace 和/或令牌).
  • "CollateralOutputs" 的值可以是一个关联,也可以是包含以下条目的单个关联列表:
  • "Address"抵押输出的地址
    "Amount"以 lovelace 为单位的数量,或 Automatic
    "Tokens"输入令牌列表,或 Automatic
  • "CollateralOutputs" 中的字段设置为 Automatic 时,将假定最低抵押品,并将 "CollateralInputs" 中的任何剩余资产发送到指定的 "Address". 如果未指定 "Amount""Tokens",则假定为 Automatic.
  • BlockchainTransaction 可以代表 Cardano 主网和测试网 "preprod" 的交易,用于测试目的的网络. 要指定这些网络,请使用所需关联中的 "BlockchainBase" 值或 BlockchainBase 选项.

范例

打开所有单元关闭所有单元

基本范例  (3)

创建一个卡尔达诺交易对象来转移 ada 加密货币:

创建一个卡尔达诺交易对象来传输 ada 加密货币,使用最低必需费用:

创建一个卡尔达诺交易对象来转移 ada 和令牌:

范围  (13)

默认值  (2)

如果未使用 "Fee" 元素指定,则将自动计算交易费用:

如果未使用 "TimeToLive" 元素指定,则交易将不包括生存时间 (TTL) 插槽数:

最低必需费用  (1)

要计算交易的最低必需费用,需要使用输出的 "Amount" 字段用于指定找零地址:

铸造和销毁令牌  (2)

使用 "Mint""Scripts" 元素铸造令牌:

通过在 "Mint" 字段使用的关联的 "Quantity" 元素中使用负整数来销毁令牌:

元数据  (1)

创建交易的元数据:

元数据的结构应该与 JSON 文件兼容:

使用 "Metadata" 元素包含交易元数据:

部署 Plutus 脚本  (1)

"Outputs" 列表中指定指向脚本文件的 "Address""Datum",其中 "Data" 为脚本数据,"Mode" 设为 "Hash":

花费 Plutus 脚本  (1)

使用 "Inputs" 列表中的 "Redeemer""Datum""Script" 元素以及在 "CollateralInputs" 中指定抵押输入来花费 Plutus 脚本:

通过在 "RequiredSigners" 列表中使用 PrivateKey 对象、PublicKey 对象、地址或公钥哈希来指定必需签名者,以花费具有必需签名者的 Plutus 脚本:

一旦交易被签名,交易就会被完全序列化:

使用内联数据部署 Plutus 脚本  (1)

"Outputs" 列表中指定指向脚本文件的 "Address""Datum",其中 "Data" 为脚本数据,"Mode" 设为 "Inline",即可使用内联数据部署 Plutus 脚本:

部署 Plutus 参考脚本  (1)

创建 Cardano 区块链交易,部署参考脚本:

使用参考脚本支出 Plutus 脚本  (1)

使用参考脚本创建 Cardano 区块链交易:

使用 ReferenceDatum 支出 Plutus 脚本  (1)

使用带有内联数据的参考输入创建 Cardano 区块链交易:

使用 CollateralOutputs 支出 Plutus 脚本  (1)

使用抵押输出创建 Cardano 区块链交易:

选项  (2)

BlockchainBase  (2)

主网  (1)

创建主网交易:

测试网  (1)

创建测试网交易:

应用  (11)

转移加密货币  (1)

创建卡尔达诺区块链交易以转移 ada 加密货币:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

使用 "TransactionID" 验证交易:

铸造令牌  (1)

创建卡尔达诺区块链交易以转移令牌:

或者,允许单个输出将 "Amount" 设置为 Automatic,以便将任何剩余令牌发送到该地址:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

使用 "TransactionID" 验证交易:

铸造非同质代币(NFT)  (1)

生成图像将其铸造为 NFT:

将图像上传到 IPFS 并保存其 CID:

按照 CIP 25 标准准备 NFT 元数据:

创建卡尔达诺区块链交易以铸造 NFT:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链以铸造 NFT:

使用 "TransactionID" 验证交易:

转移令牌  (1)

创建卡尔达诺区块链交易以销毁令牌:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

使用 "TransactionID" 验证交易:

销毁令牌  (1)

创建卡尔达诺区块链交易来销毁令牌:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

使用其 "TransactionID" 验证交易:

部署已编译的 Plutus 脚本  (1)

获取已编译的 Plutus 脚本:

当且仅当赎回者的脚本数据是数据的质因数列表时,该特定脚本才会成功. 对于数据,选择 221 作为任意半素数. 脚本数据必须符合卡尔达诺详细的 JSON 模式:

通过在 "Outputs" 列表中指定指向脚本文件的 "Address""Datum",其中 "Data" 指向脚本数据文件并使用 "Hash" 模式,使用数据哈希部署 Plutus 脚本:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

使用 "TransactionID" 验证交易:

花费编译的 Plutus 脚本  (1)

使用 "Inputs" 列表中的 "Redeemer""Datum""Script" 元素并在 "CollateralInputs" 中指定抵押输入,以花费 Plutus 脚本:

注意,执行单位是自动计算的:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

使用 "TransactionID" 验证交易:

花费具有必需签名者的已编译的  (1)

获取已编译的 Plutus 脚本:

当且仅当用于签署花费交易的私钥与部署的数据( datum)中包含的公钥哈希相关联时,此特定脚本才能成功执行:

通过在 "Outputs" 列表中指定指向脚本文件的 "Address""Datum",其中 "Data" 指向脚本数据文件并使用 "Hash" 模式,使用数据哈希部署 Plutus 脚本:

使用 PrivateKey 对象签署交易:

将交易提交到卡尔达诺区块链:

通过在 "RequiredSigners" 列表中使用 PrivateKey 对象、PublicKey 对象、地址或公钥哈希来指定必需签名者,以花费具有必需签名者的 Plutus 脚本:

当请求自动执行单元并且脚本需要签名者时,所需签名者的计算将被延迟,直到交易被签名. 使用 PrivateKey 对象对交易进行签名:

现在已经计算出自动执行单元:

将交易提交到卡尔达诺区块链:

使用 "TransactionID" 验证交易:

使用 ReferenceScript 和 CollateralOutputs 部署和支出 Plutus 脚本 V2  (3)

部署参考脚本  (1)

获取已编译的 Plutus V2 脚本:

创建 Cardano 区块链交易,部署参考脚本:

使用 PrivateKey 对象签署交易:

向 Cardano 区块链提交交易,以部署参考脚本:

使用 "TransactionID" 验证交易:

使用内联数据部署 Plutus 脚本 UTXO  (1)

创建卡达诺区块链交易,部署脚本 UTXO:

使用 PrivateKey 对象签署交易:

向 Cardano 区块链提交交易,以部署脚本 UTXO:

使用其 "TransactionID" 验证交易:

支出 Plutus 脚本  (1)

持有令牌的下一笔交易将被用作抵押:

创建卡达诺区块链交易,使用参考脚本和抵押输出支出脚本 UTXO:

PrivateKey 对象签署交易,并将交易提交至卡尔达诺区块链:

使用其 "TransactionID" 验证交易:

属性和关系  (1)

BlockchainAddressData"UTXOList" 属性的一个元素可以用作卡尔达诺区块链交易的输入:

Wolfram Research (2021),BlockchainTransaction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html.

文本

Wolfram Research (2021),BlockchainTransaction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html.

CMS

Wolfram 语言. 2021. "BlockchainTransaction." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html.

APA

Wolfram 语言. (2021). BlockchainTransaction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html 年

BibTeX

@misc{reference.wolfram_2024_blockchaintransaction, author="Wolfram Research", title="{BlockchainTransaction}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_blockchaintransaction, organization={Wolfram Research}, title={BlockchainTransaction}, year={2021}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html}, note=[Accessed: 22-November-2024 ]}