BlockchainTransactionSubmit (卡尔达诺)
BlockchainTransactionSubmit[obj]
将 BlockchainTransaction 对象 obj 中指定的交易提交到卡尔达诺区块链.
更多信息
- BlockchainTransactionSubmit[obj] 将交易提交到卡尔达诺节点以包含在未来的区块中.
- BlockchainTransactionSubmit 会返回一个带有添加的属性 "TransactionID" 的 BlockchainTransaction 对象.
- BlockchainTransactionData 可以应用于 BlockchainTransactionSubmit 的结果,以确定提交的交易是否已添加到比特币区块链中.
- BlockchainTransactionSubmit 可将交易提交到 Cardano mainnet(默认)和 testnet "preprod",该网络是一个新网络,用来进行测试. 可在 BlockchainTransaction 对象中指定这些网络.
范例
打开所有单元 关闭所有单元基本范例 (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应用 (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铸造(Mint )令牌 (1)
创建卡尔达诺区块链交易以铸造 1,000,000 个令牌并将其发送到多个地址:
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"}]//DatasetMint 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]当且仅当兑换者的脚本数据是数据的质因数列表时,该特定脚本才会成功. 对于数据(datum),选择 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支出具有所需签名者的编译的 Plutus 脚本 (1)
Short[Import[File["ExampleData/vestingV1.plutus"]], 3]当且仅当支出交易由与部署数据中包含的公钥哈希关联的私钥签名时,此特定脚本才会成功:
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 and 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使用参考脚本和 collateral 输出创建 Cardano 区块链交易以支出脚本 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 对象对交易进行签名,并将交易提交到 Cardano 区块链:
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相关指南
历史
2021年引入 (13.0)
文本
Wolfram Research (2021),BlockchainTransactionSubmit,Wolfram 语言函数,https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSubmit-Cardano.html.
CMS
Wolfram 语言. 2021. "BlockchainTransactionSubmit." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSubmit-Cardano.html.
APA
Wolfram 语言. (2021). BlockchainTransactionSubmit. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSubmit-Cardano.html 年
BibTeX
@misc{reference.wolfram_2026_blockchaintransactionsubmit, author="Wolfram Research", title="{BlockchainTransactionSubmit}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSubmit-Cardano.html}", note=[Accessed: 07-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransactionsubmit, organization={Wolfram Research}, title={BlockchainTransactionSubmit}, year={2021}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSubmit-Cardano.html}, note=[Accessed: 07-August-2026]}