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" 的值可以是 Quantity 或 Automatic.
- 当 "Amount" 的值为 Automatic 时,"Fee" 的值必须为 Automatic. "Outputs" 列表中只能有一个 "Amount"->Automatic 的关联.
- 还可以给出以下附加条目:
-
"Tokens" 输入令牌列表 "Datum" 指定输出数据的关联 - "Tokens" 的值可以是输入标记的列表,也可以是 Automatic.
- "Outputs" 列表中关联内的 "Datum" 关联必须具有以下条目:
-
"Data" 数据的脚本数据 "Mode" 数据的插入模式(“哈希”或“内联”) - "Outputs" 列表中关联内的 "Data" 值必须是包含脚本数据的文件或对应于将脚本数据导入为 "RawJSON" 的关联.
- "Tokens" 列表中的每个关联都必须具有以下条目:
-
"AssetName" 以十六进制字符串表示的资产名称 "PolicyID" 策略 ID "Quantity" 令牌数量 - "Fee" 的值可以是 Automatic 或 Quantity.
- 当 "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)
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "3cdc4c717fe0afc9719773d98bcb8bb973812609ae0a2a830bb92d92f0db54d8",
"Index" -> 0, "Amount" -> Quantity[10000000000, "CardanoLovelace"]|>
},
"Outputs" -> {
<|"Address" ->
"addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" ->
"addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd",
"Amount" -> Quantity[9998800000, "CardanoLovelace"]|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]创建一个卡尔达诺交易对象来传输 ada 加密货币,使用最低必需费用:
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "3cdc4c717fe0afc9719773d98bcb8bb973812609ae0a2a830bb92d92f0db54d8", "Index" -> 0, "Amount" -> Quantity[10000000000, "CardanoLovelace"]|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "aaa608a331c50a87dfcfbba05e39474a58e3b5cce0def886ae78f5bf745b90d6", "Index" -> 1, "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 990000|>}|>, <|"TransactionID" -> "7d532de7a92ddb43384349c18b9120f918915ca427f256a4e88e774de26c190c", "Index" -> 1, "Amount" -> Quantity[520648365, "CardanoLovelace"], "Tokens" -> {}|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 110000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 880000|>}
|>, <|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]范围 (13)
默认值 (2)
BlockchainTransaction[<|
"TimeToLive" -> 10000000,
"Inputs" -> {
<|"TransactionID" -> "3cdc4c717fe0afc9719773d98bcb8bb973812609ae0a2a830bb92d92f0db54d8", "Index" -> 0, "Amount" -> Quantity[10000000000, "CardanoLovelace"]|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]%["Fee"]如果未使用 "TimeToLive" 元素指定,则交易将不包括生存时间 (TTL) 插槽数:
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "3cdc4c717fe0afc9719773d98bcb8bb973812609ae0a2a830bb92d92f0db54d8",
"Index" -> 0, "Amount" -> Quantity[10000000000, "CardanoLovelace"]|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "Amount" -> Quantity[9998800000, "CardanoLovelace"]|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]%["TimeToLive"]最低必需费用 (1)
要计算交易的最低必需费用,需要使用输出的 "Amount" 字段用于指定找零地址:
tx = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "3cdc4c717fe0afc9719773d98bcb8bb973812609ae0a2a830bb92d92f0db54d8", "Index" -> 0, "Amount" -> Quantity[10000000000, "CardanoLovelace"]|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]Total[tx["Inputs"][[All, "Amount"]]] == Total[tx["Outputs"][[All, "Amount"]]] + tx["Fee"]铸造和销毁令牌 (2)
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "52083f70cdfdf352e819a8f60f9c0a18325d5b636aff5bcfb7e51a1725c6a529", "Index" -> 1|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1000000|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 10000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 990000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]通过在 "Mint" 字段使用的关联的 "Quantity" 元素中使用负整数来销毁令牌:
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "2cb5254f4cc09224917e0519cd41e1eb5a737ca4b0b4cf51b5ae8e15a73aa009",
"Index" -> 1, "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 880000|>}|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> -880000|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]元数据 (1)
nftMetadata =
<|"721" -> <|
"version" -> "1.0", "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2" -> <|"736f6d6e6f6c656e6365" -> <|
"name" -> "Somnolence", "image" -> "ipfs://QmX7swLgnf5gHQzmFfsTjPgRGR33qoA9whrdskBcvpVHeP", "mediaType" -> "image/png", "description" -> "Somnolence Test NFT",
"files" -> {
<|"name" -> "736f6d6e6f6c656e6365", "src" -> "ipfs://QmX7swLgnf5gHQzmFfsTjPgRGR33qoA9whrdskBcvpVHeP", "mediaType" -> "image/png"|>
}
|>
|>
|>|>;ExportString[nftMetadata, "JSON"]BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "aaa608a331c50a87dfcfbba05e39474a58e3b5cce0def886ae78f5bf745b90d6", "Index" -> 2|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
},
"Metadata" -> nftMetadata
|>, BlockchainBase -> {"Cardano", "Testnet"}]部署 Plutus 脚本 (1)
在 "Outputs" 列表中指定指向脚本文件的 "Address" 和 "Datum",其中 "Data" 为脚本数据,"Mode" 设为 "Hash":
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "fbbef2bdcc75fde897cd21ea44da8f6cf3af70a58d32955d15b6e24939ff18d3", "Index" -> 0|>
},
"Outputs" -> {
<|"Address" -> File["ExampleData/primeFactorV1.plutus"], "Amount" -> Quantity[10000000, "CardanoLovelace"], "Datum" -> <|"Data" -> <|"int" -> 221|>, "Mode" -> "Hash"|>|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]花费 Plutus 脚本 (1)
使用 "Inputs" 列表中的 "Redeemer"、"Datum" 和 "Script" 元素以及在 "CollateralInputs" 中指定抵押输入来花费 Plutus 脚本:
BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "9906dd0d953ffefa58c6ffa6bb2e56d6e64c801ca627c39e22184cd9ce0f12cc",
"Index" -> 0, "Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"list" -> {<|"int" -> 17|>, <|"int" -> 13|>}|>|>, "Datum" -> <|"int" -> 221|>,
"Script" -> File["ExampleData/primeFactorV1.plutus"]|>
},
"CollateralInputs" -> {
<|"TransactionID" -> "9906dd0d953ffefa58c6ffa6bb2e56d6e64c801ca627c39e22184cd9ce0f12cc",
"Index" -> 1|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]通过在 "RequiredSigners" 列表中使用 PrivateKey 对象、PublicKey 对象、地址或公钥哈希来指定必需签名者,以花费具有必需签名者的 Plutus 脚本:
txSpend = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "6660af2b1740c709f11092c47e04e79216b552b4148a360cfc2d8d5bc4cc5dd8",
"Index" -> 0,
"Datum" -> <|"fields" -> {<|"bytes" -> "4f52a7239d298eb64f7be6fe994f7cd80e77b6e2e55edf71e6b2a72b"|>}, "constructor" -> 0|>, "Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"fields" -> {}, "constructor" -> 0|>|>,
"Script" -> File["ExampleData/vestingV1.plutus"]|>
},
"CollateralInputs" -> {
<|"TransactionID" -> "6660af2b1740c709f11092c47e04e79216b552b4148a360cfc2d8d5bc4cc5dd8",
"Index" -> 1|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Automatic|>
},
"RequiredSigners" -> {PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]}
|>, BlockchainBase -> {"Cardano", "Testnet"}]txSpendSigned = BlockchainTransactionSign[txSpend, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]使用内联数据部署 Plutus 脚本 (1)
在 "Outputs" 列表中指定指向脚本文件的 "Address" 和 "Datum",其中 "Data" 为脚本数据,"Mode" 设为 "Inline",即可使用内联数据部署 Plutus 脚本:
BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "47d78143ab38587b52b93f46522aa49bb58b301cc327974edb33ac4710cb1e95", "Index" -> 1|>},
"Outputs" -> {
<|"Address" -> File["ExampleData/primeFactorV2.plutus"], "Amount" -> Quantity[15000000, "CardanoLovelace"],
"Datum" -> <|"Data" -> <|"int" -> 221|>, "Mode" -> "Inline"|>|>,
<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>}
|>, BlockchainBase -> {"Cardano", "Testnet"}]部署 Plutus 参考脚本 (1)
BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "843085e289f2d30e8c9a13950aa219502b306b4eeff85da627b2f3048f95ff11", "Index" -> 1|>},
"Outputs" -> {
<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Quantity[11000000, "CardanoLovelace"], "ReferenceScript" -> File["ExampleData/primeFactorV2.plutus"]|>,
<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用参考脚本支出 Plutus 脚本 (1)
BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "0cf711f192c47cefd566673b98851683a88f5b92c0ceffc0f8ae1e141b136b52", "Index" -> 0, "Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"list" -> {<|"int" -> 17|>, <|"int" -> 13|>}|>|>,
"ReferenceScript" -> <|"TransactionID" -> "cc02df46708470ba5d1c00b2c74d59bf9365230d8c7f698b414f428770ea3ecf", "Index" -> 0|>
|>},
"CollateralInputs" -> {<|"TransactionID" -> "dbc66ef52a19ff713bcfef0a56201def8eb19a9998e1ed4e5ea5c527947000f3", "Index" -> 0|>},
"Outputs" -> {<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 ReferenceDatum 支出 Plutus 脚本 (1)
使用带有内联数据的参考输入创建 Cardano 区块链交易:
BlockchainTransaction[<|
"Inputs" -> {<|
"TransactionID" -> "661fcb1e81066bbbafeec8cac1ffe2fbab8751ccdbad8050620f1d5006178ba5", "Index" -> 0, "Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"list" -> {<|"int" -> 13|>, <|"int" -> 17|>}|>|>,
"ReferenceDatum" -> <|"TransactionID" -> "575724806a10cfb7f12ae25a32b4c8756bc4074b0b34101de056a52df2bec36c", "Index" -> 0|>,
"ReferenceScript" -> <|"TransactionID" -> "1042ad1b803b479075410b9df656abe3f8562e74dccaef7ed80372a15db16a43", "Index" -> 0|>
|>},
"CollateralInputs" -> {<|"TransactionID" -> "bc77a62a327a2cdef6f520139d94854caccd6dcbe930444e3455118629c2e40e", "Index" -> 0|>},
"Outputs" -> {<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 CollateralOutputs 支出 Plutus 脚本 (1)
BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "842ae8f67d9117a6d562e06f1fd2b9248c4a154d49919fdfa262e18a73d20fc6", "Index" -> 0,
"Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"list" -> {<|"int" -> 61|>, <|"int" -> 97|>}|>|>,
"ReferenceScript" -> <|"TransactionID" -> "cc02df46708470ba5d1c00b2c74d59bf9365230d8c7f698b414f428770ea3ecf", "Index" -> 0|>
|>},
"CollateralInputs" -> {<|"TransactionID" -> "622f5ec916a194c406b124763a7a82d700cfafd937f3fb493eaf405339e6e5c4", "Index" -> 0|>},
"CollateralOutputs" -> {<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic, "Tokens" -> Automatic|>},
"Outputs" -> {<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>}
|>, BlockchainBase -> {"Cardano", "Testnet"}]选项 (2)
BlockchainBase (2)
主网 (1)
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "2a1b899406e0d5626984354b64254cbabf68a0205165d7a1d21f36bbee987f2f",
"Index" -> 1, "Amount" -> Quantity[3150000, "CardanoLovelace"]|>
},
"Outputs" -> {
<|"Address" -> "addr1qx2ztpag748fqntd0r4udazc4nw2jlu9caaus3rdlwyjjxycuzf3qmptedc34lxzs3jhpz7d2fzxqmfwmgvz2m9x6jsssft2hx", "Amount" -> Automatic|>
}
|>, BlockchainBase -> "Cardano"]测试网 (1)
BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "fbbef2bdcc75fde897cd21ea44da8f6cf3af70a58d32955d15b6e24939ff18d3", "Index" -> 0|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]应用 (11)
转移加密货币 (1)
tx = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "fbbef2bdcc75fde897cd21ea44da8f6cf3af70a58d32955d15b6e24939ff18d3", "Index" -> 0|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
txSigned = BlockchainTransactionSign[tx, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]txSubmitted = BlockchainTransactionSubmit[txSigned]BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset铸造令牌 (1)
txMint1 = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "52083f70cdfdf352e819a8f60f9c0a18325d5b636aff5bcfb7e51a1725c6a529", "Index" -> 1|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1000000|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 10000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 990000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]或者,允许单个输出将 "Amount" 设置为 Automatic,以便将任何剩余令牌发送到该地址:
txMint2 = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "52083f70cdfdf352e819a8f60f9c0a18325d5b636aff5bcfb7e51a1725c6a529", "Index" -> 1|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1000000|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 10000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> Automatic
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]txMint1["RawTransaction"] == txMint2["RawTransaction"]使用 PrivateKey 对象签署交易:
signedTX = BlockchainTransactionSign[txMint2, {PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]], PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["vnDTCvF1M1dpTUQbpgJFYsD9K8WofIKTi3P1vaeoOVw="],
"PublicByteArray" -> ByteArray["B/a3Az+3UZYN+UFWR0hZ+axnSTBdMMv0g8o/8xoJSWs="],
"PublicCurvePoint" ->
{13842668232556184559548318005004325513416029538334711005203417129689039515212,
48526517476431189075020784670340877228184510548669649384007169677815765792263}]]}]txSubmitted = BlockchainTransactionSubmit[signedTX]BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset铸造非同质代币(NFT) (1)
nftImage = ImageCompose[ArrayPlot[CellularAutomaton[<|"Dimension" -> 2, "OuterTotalisticCode" -> 594|>, {{Table[1, 7]}, 0}, {{{150}}}], ColorFunction -> "RustTones"], Rasterize[ Text[Style["somnolence", Pink, 24, Background -> None], Background -> None], Background -> Black]]ExternalStorageUpload[Export[FileNameJoin[{$TemporaryDirectory, "nftImage.png"}], nftImage], ExternalStorageBase -> "IPFS"]nftCID = %["CID"]nftMetadata = <|
"721" -> <|
"version" -> "1.0",
"f793495e58b8a9439e1c2ea072f80082a6c4e380ed24bb87478b200f" -> <|
"736f6d6e6f6c656e6365" -> <|
"name" -> "Somnolence",
"image" -> "ipfs://" <> nftCID,
"mediaType" -> "image/png",
"description" -> "Somnolence Test NFT",
"files" -> {
<|
"name" -> "736f6d6e6f6c656e6365",
"src" -> "ipfs://" <> nftCID,
"mediaType" -> "image/png"
|>
}
|>
|>
|>|>;tx = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "aaa608a331c50a87dfcfbba05e39474a58e3b5cce0def886ae78f5bf745b90d6", "Index" -> 2|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 1|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
},
"Metadata" -> nftMetadata
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
nftTXSigned = BlockchainTransactionSign[tx, {PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]], PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["vnDTCvF1M1dpTUQbpgJFYsD9K8WofIKTi3P1vaeoOVw="],
"PublicByteArray" -> ByteArray["B/a3Az+3UZYN+UFWR0hZ+axnSTBdMMv0g8o/8xoJSWs="],
"PublicCurvePoint" ->
{13842668232556184559548318005004325513416029538334711005203417129689039515212,
48526517476431189075020784670340877228184510548669649384007169677815765792263}]]}]nftTXSubmitted = BlockchainTransactionSubmit[nftTXSigned]BlockchainTransactionData[nftTXSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset转移令牌 (1)
tx = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "aaa608a331c50a87dfcfbba05e39474a58e3b5cce0def886ae78f5bf745b90d6", "Index" -> 1, "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 990000|>}|>, <|"TransactionID" -> "7d532de7a92ddb43384349c18b9120f918915ca427f256a4e88e774de26c190c", "Index" -> 1, "Amount" -> Quantity[520648365, "CardanoLovelace"], "Tokens" -> {}|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vq6nyx7m0vher4u5mlyezcss6pn3w0hvx9m76sn3uyz03xq7wm3aj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 110000|>}
|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 880000|>}
|>, <|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
txSigned = BlockchainTransactionSign[tx, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]txSubmitted = BlockchainTransactionSubmit[txSigned]BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset销毁令牌 (1)
tx = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "2cb5254f4cc09224917e0519cd41e1eb5a737ca4b0b4cf51b5ae8e15a73aa009",
"Index" -> 1, "Amount" -> Quantity[1500000, "CardanoLovelace"], "Tokens" -> {<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> 880000|>}|>
},
"Mint" -> {
<|"AssetName" -> "736f6d6e6f6c656e6365", "PolicyID" -> "0b6c95869314d1de35460f61e861fa64873b627a4fbf386520f064b2", "Quantity" -> -880000|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Automatic|>
},
"Scripts" -> {
<|"type" -> "sig", "keyHash" -> "37def1f6d17b09d6440917fb4a4241c634a49592eb2ae8f8be80ffd3"|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
txSigned = BlockchainTransactionSign[tx, {PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]], PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["vnDTCvF1M1dpTUQbpgJFYsD9K8WofIKTi3P1vaeoOVw="],
"PublicByteArray" -> ByteArray["B/a3Az+3UZYN+UFWR0hZ+axnSTBdMMv0g8o/8xoJSWs="],
"PublicCurvePoint" ->
{13842668232556184559548318005004325513416029538334711005203417129689039515212,
48526517476431189075020784670340877228184510548669649384007169677815765792263}]]}]txSubmitted = BlockchainTransactionSubmit[txSigned]BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset部署已编译的 Plutus 脚本 (1)
Short[Import[File["ExampleData/primeFactorV1.plutus"]], 3]当且仅当赎回者的脚本数据是数据的质因数列表时,该特定脚本才会成功. 对于数据,选择 221 作为任意半素数. 脚本数据必须符合卡尔达诺详细的 JSON 模式:
<|"int" -> 221|>通过在 "Outputs" 列表中指定指向脚本文件的 "Address" 和 "Datum",其中 "Data" 指向脚本数据文件并使用 "Hash" 模式,使用数据哈希部署 Plutus 脚本:
tx = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "2cb5254f4cc09224917e0519cd41e1eb5a737ca4b0b4cf51b5ae8e15a73aa009",
"Index" -> 2|>
},
"Outputs" -> {
<|"Address" -> File["ExampleData/primeFactorV1.plutus"],
"Amount" -> Quantity[3000000, "CardanoLovelace"], "Datum" -> <|"Data" -> <|"int" -> 221|>, "Mode" -> "Hash"|>|>, <|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Quantity[1000000, "CardanoLovelace"]|>, <|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
txSigned = BlockchainTransactionSign[tx, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]txSubmitted = BlockchainTransactionSubmit[txSigned]BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset花费编译的 Plutus 脚本 (1)
使用 "Inputs" 列表中的 "Redeemer"、"Datum" 和 "Script" 元素并在 "CollateralInputs" 中指定抵押输入,以花费 Plutus 脚本:
txSpend = BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "9906dd0d953ffefa58c6ffa6bb2e56d6e64c801ca627c39e22184cd9ce0f12cc",
"Index" -> 0, "Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"list" -> {<|"int" -> 17|>, <|"int" -> 13|>}|>|>, "Datum" -> <|"int" -> 221|>,
"Script" -> File["ExampleData/primeFactorV1.plutus"]|>
},
"CollateralInputs" -> {
<|"TransactionID" -> "9906dd0d953ffefa58c6ffa6bb2e56d6e64c801ca627c39e22184cd9ce0f12cc",
"Index" -> 1|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]txSpend["Inputs"][[1, "Redeemer"]]使用 PrivateKey 对象签署交易:
txSpendSigned = BlockchainTransactionSign[txSpend, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]txSpendSubmitted = BlockchainTransactionSubmit[txSpendSigned]BlockchainTransactionData[txSpendSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset花费具有必需签名者的已编译的 (1)
Short[Import[File["ExampleData/vestingV1.plutus"]], 3]当且仅当用于签署花费交易的私钥与部署的数据( datum)中包含的公钥哈希相关联时,此特定脚本才能成功执行:
privateKey = PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]];publicKeyHash = Hash[privateKey["PublicByteArray"], {"BLAKE2b", 28 * 8}, "HexString"]datum = <|"fields" -> {<|"bytes" -> publicKeyHash|>}, "constructor" -> 0|>通过在 "Outputs" 列表中指定指向脚本文件的 "Address" 和 "Datum",其中 "Data" 指向脚本数据文件并使用 "Hash" 模式,使用数据哈希部署 Plutus 脚本:
tx = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "9906dd0d953ffefa58c6ffa6bb2e56d6e64c801ca627c39e22184cd9ce0f12cc",
"Index" -> 2|>
},
"Outputs" -> {
<|"Address" -> File["ExampleData/vestingV1.plutus"], "Amount" -> Quantity[10000000, "CardanoLovelace"], "Datum" -> <|"Data" -> datum, "Mode" -> "Hash"|>|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
txSigned = BlockchainTransactionSign[tx, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]txSubmitted = BlockchainTransactionSubmit[txSigned]通过在 "RequiredSigners" 列表中使用 PrivateKey 对象、PublicKey 对象、地址或公钥哈希来指定必需签名者,以花费具有必需签名者的 Plutus 脚本:
txSpend = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "6660af2b1740c709f11092c47e04e79216b552b4148a360cfc2d8d5bc4cc5dd8",
"Index" -> 0,
"Datum" -> datum, "Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"fields" -> {}, "constructor" -> 0|>|>,
"Script" -> File["ExampleData/vestingV1.plutus"]|>
},
"CollateralInputs" -> {
<|"TransactionID" -> "6660af2b1740c709f11092c47e04e79216b552b4148a360cfc2d8d5bc4cc5dd8",
"Index" -> 1|>
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj",
"Amount" -> Automatic|>
},
"RequiredSigners" -> {privateKey}
|>, BlockchainBase -> {"Cardano", "Testnet"}]当请求自动执行单元并且脚本需要签名者时,所需签名者的计算将被延迟,直到交易被签名. 使用 PrivateKey 对象对交易进行签名:
txSpendSigned = BlockchainTransactionSign[txSpend, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["ZS+tz1R5qEH1cjUb1CYjrM/D3NcKwi1Bq81uKLV5mfo="],
"PublicByteArray" -> ByteArray["cQgZRHEeKfwkcRlED1ne/gRioPUlscol+90Y2qfqT4c="],
"PublicCurvePoint" ->
{54789448609012894423837732655416846236491149459823016987951522245567818687067,
3307390392124908807609817216896188012777357359263186559572045863632433121393}]]]txSpendSigned["Inputs"][[1, "Redeemer"]]txSpendSubmitted = BlockchainTransactionSubmit[txSpendSigned]BlockchainTransactionData[txSpendSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset使用 ReferenceScript 和 CollateralOutputs 部署和支出 Plutus 脚本 V2 (3)
部署参考脚本 (1)
Short[Import[File["ExampleData/primeFactorV2.plutus"]], 3]refFactor = BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "843085e289f2d30e8c9a13950aa219502b306b4eeff85da627b2f3048f95ff11", "Index" -> 1|>},
"Outputs" -> {
<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Quantity[11000000, "CardanoLovelace"], "ReferenceScript" -> File["ExampleData/primeFactorV2.plutus"]|>,
<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
refFactorSigned = BlockchainTransactionSign[refFactor, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["wjwlzavMCRbjTv0j/pPI4P1teSBGOkb/e9T9ou8B81g="],
"PublicByteArray" -> ByteArray["iUeghMqo1xlEucilNXKoldOrea/eyzFjx7MpBR2Vrok="],
"PublicCurvePoint" ->
{51732678281632644363349572710915894747281321558746030662008323822302304479697,
4379276169108678283621031508536050249012641784112399045680160333106218289033}]]]refFactorSubmitted = BlockchainTransactionSubmit[refFactorSigned]BlockchainTransactionData[refFactorSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset使用内联数据部署 Plutus 脚本 UTXO (1)
tx = BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> "16618b9652217f33b5f836dfefbb682b775fb7d10065f6c72972b9f018ef141d", "Index" -> 1|>},
"Outputs" -> {
<|"Address" -> File["ExampleData/primeFactorV2.plutus"], "Amount" -> Quantity[15000000, "CardanoLovelace"], "Datum" -> <|"Data" -> <|"int" -> 5917|>, "Mode" -> "Inline"|>|>,
<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]使用 PrivateKey 对象签署交易:
txSigned = BlockchainTransactionSign[tx, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["wjwlzavMCRbjTv0j/pPI4P1teSBGOkb/e9T9ou8B81g="],
"PublicByteArray" -> ByteArray["iUeghMqo1xlEucilNXKoldOrea/eyzFjx7MpBR2Vrok="],
"PublicCurvePoint" ->
{51732678281632644363349572710915894747281321558746030662008323822302304479697,
4379276169108678283621031508536050249012641784112399045680160333106218289033}]]]txSubmitted = BlockchainTransactionSubmit[txSigned]BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset支出 Plutus 脚本 (1)
collSubmitted["TransactionID"] = "622f5ec916a194c406b124763a7a82d700cfafd937f3fb493eaf405339e6e5c4";BlockchainTransactionData[collSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset创建卡达诺区块链交易,使用参考脚本和抵押输出支出脚本 UTXO:
txSpend = BlockchainTransaction[<|
"Inputs" -> {<|"TransactionID" -> txSubmitted["TransactionID"], "Index" -> 0,
"Redeemer" -> <|"Tag" -> "Spend", "Data" -> <|"list" -> {<|"int" -> 61|>, <|"int" -> 97|>}|>|>,
"ReferenceScript" -> <|"TransactionID" -> refFactorSubmitted["TransactionID"], "Index" -> 0|>
|>},
"CollateralInputs" -> {<|"TransactionID" -> collSubmitted["TransactionID"], "Index" -> 0|>},
"CollateralOutputs" -> {<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic, "Tokens" -> Automatic|>},
"Outputs" -> {<|"Address" -> "addr_test1vry7pc7qne7sjh58csx8knjx54gl7tucggja2jwlvf344wsyp9n97", "Amount" -> Automatic|>}
|>, BlockchainBase -> {"Cardano", "Testnet"}]用 PrivateKey 对象签署交易,并将交易提交至卡尔达诺区块链:
txSpendSigned = BlockchainTransactionSign[txSpend, PrivateKey[Association["Type" -> "EdwardsCurve", "CurveName" -> "ed25519",
"PrivateByteArray" -> ByteArray["wjwlzavMCRbjTv0j/pPI4P1teSBGOkb/e9T9ou8B81g="],
"PublicByteArray" -> ByteArray["iUeghMqo1xlEucilNXKoldOrea/eyzFjx7MpBR2Vrok="],
"PublicCurvePoint" ->
{51732678281632644363349572710915894747281321558746030662008323822302304479697,
4379276169108678283621031508536050249012641784112399045680160333106218289033}]]];
txSpendSubmitted = BlockchainTransactionSubmit[txSpendSigned]BlockchainTransactionData[txSpendSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//Dataset属性和关系 (1)
BlockchainAddressData 的 "UTXOList" 属性的一个元素可以用作卡尔达诺区块链交易的输入:
utxoList = BlockchainAddressData["addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "UTXOList", BlockchainBase -> {"Cardano", "Testnet"}];input = utxoList[[1]]BlockchainTransaction[<|
"Inputs" -> {
input
},
"Outputs" -> {
<|"Address" -> "addr_test1vp849fern55cadj000n0ax200nvquaakutj4ahm3u6e2w2cyfnzpj", "Amount" -> Quantity[1000000, "CardanoLovelace"]|>,
<|"Address" -> "addr_test1vpyz5dxamauqdp60rgccfk47wkjsfyjnysqhhf04lpm063q8jq6nd", "Amount" -> Automatic|>
}
|>, BlockchainBase -> {"Cardano", "Testnet"}]相关指南
历史
2021年引入 (13.0)
文本
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_2026_blockchaintransaction, author="Wolfram Research", title="{BlockchainTransaction}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransaction, organization={Wolfram Research}, title={BlockchainTransaction}, year={2021}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransaction-Cardano.html}, note=[Accessed: 16-September-2026]}