BlockchainTransaction (for Cardano)
BlockchainTransaction[assoc]
連想 assoc の成分から構築されたカルダノ(Cardano)ブロックチェーントランザクションを表す.
詳細
- カルダノブロックチェーントランザクションの記号表現を与える.トランザクションは送信せず,トランザクションに署名もしない.
- BlockchainTransaction[…][prop]はトランザクションの特性 prop の値を与える.
- 次の要素を与えなくてはならない.
-
"Inputs" 連想として与えられる入力のリスト "Outputs" 連想として与えられる出力のリスト - 次の追加的な要素も与えることができる.
-
"Fee" トランザクション料金 "TimeToLive" トランザクションが有効となるための上限スロット番号 "Mint" ミントするトークンのリスト "Scripts" ポリシーのスクリプト "Metadata" ミントするトークンのメタデータ "CollateralInputs" スクリプトを使用するための担保入力リスト "RequiredSigners" スクリプトを使用するために必要な署名者リスト "CollateralOutputs" 担保入力が使われた場合にアセットを返すための担保出力 - "Inputs"リストの中の各連想には次の項目が含まれなければならない.
-
"TransactionID" 前のトランザクションのハッシュ "Index" 前のトランザクションの出力内のインデックス - スクリプトを送る際は,"Inputs"についての次の追加的な項目を含めることができる.
-
"Datum" 前回のトランスアクション出力の(ハッシュされていない)データムに対応するスクリプトデータ "Redeemer" 入力のRedeemer(タグ,Redeemerのスクリプトデータ,メモリおよびステップ)を指定する連想 "Script" 前回のトランザクション出力のスクリプト "ReferenceScript" スクリプトを保持する参照入力 "ReferenceDatum" インラインデータムを保持する参照入力 - "Inputs"リスト内の連想中の"Redeemer"の値には次の項目が含まれなければならない.
-
"Tag" Redeemerのタグ ("Spend") "Data" Redeemerのスクリプトデータ - "Redeemer"についての次の追加的な項目も含めることができる.
-
"Memory" 整数またはAutomaticで表されたスクリプト実行のCPUメモリの予算 "Steps" 整数またはAutomaticで表されたスクリプト実行のステップの予算 - 項目の"Memory"または"Steps"が指定されていない場合は,デフォルト値のAutomaticが使われる.
- "Redeemer"中の"Datum"および"Data"の値には,カルダノの詳細なJSONスキーマを使わなければならない.スクリプトデータは,ルールに基づいたカルダノの詳細なJSONスキーマ表現またはスクリプトデータファイルでよい.
- "Inputs"リスト内の連想中の"Script"の値は,スクリプトJSONファイルまたは項目"Type"と"ByteCode"を含む連想でよい."Type"のサポートされる値は"PlutusScriptV1"と"PlutusScriptV2"である."ByteCode"の値は,スクリプトのCBOR表現に対応する16進数列でなければならない.
- "Inputs"リストの連想内の"ReferenceScript"と"ReferenceDatum"の値は,"TransactionID"と"Index"のフィールドがある連想でなければならない.
- "Outputs"リストの中の各連想には次の項目が含まれなければならない.
-
"Address" 出力のアドレス "Amount" 金額(単位:ラブレス)またはAutomatic - "Address"の値は,文字列,PlutusスクリプトJSONファイル,あるいは項目"Type"と"ByteCode"を含む連想として表現されるPlutusスクリプトでよい.
- "Address"の値がPlutusスクリプトのときは,スクリプト住所が自動的に計算される.
- "Amount"の値は,QuantityまたはAutomaticでよい.
- "Amount"の値がAutomaticのとき,"Fee"の値はAutomaticでなければならない."Amount"->Automaticのときに"Outputs"リストに存在できる連想は1つだけである.
- 次の追加的な項目も与えることができる.
-
"Tokens" 入力トークンのリスト "Datum" 出力データムを指定する連想 - "Tokens"の値は,入力トークンのリストまたはAutomaticでよい.
- "Outputs" リスト中の連想内の"Datum"連想には,以下の項目がなければならない.
-
"Data" データムのスクリプトデータ "Mode" データムの挿入モード ("Hash"または"Inline") - "Outputs"リスト内の連想中の"Data"の値は,スクリプトデータを含むファイルまたはスクリプトデータを"RawJSON"としてインポートすることに対応する連想でなければならない.
- "Tokens"リストの中の各連想には次の項目が含まれなければならない.
-
"AssetName" 16進数列として与えられるアセット名 "PolicyID" ポリシーID "Quantity" トークン量 - "Fee"の値はAutomaticまたはQuantityでよい.
- "Fee"の値がAutomaticのときは,"Outputs"リスト内の連想の一つだけが"Amount"->Automaticであってよい.その場合は,必要な最低手数料が自動的に計算され,もし必要ならば,残った任意の暗号通貨が前述の出力に送信される.
- "Mint"リストの中の各連想には次の項目が含まれなければならない.
-
"AssetName" 16進数列として与えられるアセット名 "PolicyID" ポリシーID "Quantity" ミントするトークン量(数量が負の数の場合はバーンされる) - "CollateralInputs"リスト内の各連想は以下の項目を含んでいなければならない.
-
"TransactionID" 前のトランザクションのハッシュ "Index" 前のトランザクションの出力のインデックス - "CollateralInputs"リスト内の連想は,スクリプトアドレスを持つ出力を指してはならない.また,リストの長さは最高でも3でなければならない.
- "RequiredSigners"リスト内の値は,PublicKey,PrivateKey,アドレス,または公開鍵のハッシュでよい.
- "CollateralOutputs"を指定した場合は"CollateralInputs"も指定しなければならない."CollateralOutputs"項目は,トランザクションの送信後にトランザクションのスクリプト認証が失敗した場合に,いくつのアセット(ラブレスおよび/またはトークン)を"CollateralInputs"から指定の"Address"に送信するかを指示する.
- "CollateralOutputs"の値は連想または次の項目がある単一の連想のリストでよい.
-
"Address" 担保出力のアドレス "Amount" ラブレスの量またはAutomatic "Tokens" 入力トークンのリストまたはAutomatic - "CollateralOutputs"のフィールドがAutomaticに設定されている場合は,最小数の担保が想定され,"CollateralInputs"内の残りのアセットは指定の"Address"に送られる."Amount"または"Tokens"のどちらかが指定されていない場合はAutomaticであると想定される.
- BlockchainTransactionは,カルダノメインネットおよびテスト目的のネットワークであるテストネット「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"}]エイダ暗号通貨を送信するためのカルダノトランザクションオブジェクトを,必要最低限の手数料で作成する:
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)
トランザクション料金は,"Fee"要素を使って指定されていなければ自動的に計算される:
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)
"Mint"要素と"Scripts"要素を使ってトークンをミントする:
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"|>
}
|>
|>
|>|>;メタデータのトランザクションはJSONファイルと互換でなければならない:
ExportString[nftMetadata, "JSON"]"Metadata"要素を使ってトランザクションのメタデータを含ませる:
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)
データムハッシュがあるPlutusスクリプトを配備する際は,"Outputs"リスト内でスクリプトファイルを指す"Address"と"Data"をスクリプトデータとして含む"Datum"を指定して"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"}]必要な署名者を有するPlutusスクリプトを,署名者を"RequiredSigners"リスト内のPrivateKeyオブジェクト,PublicKeyオブジェクト,アドレスまたは公開鍵ハッシュで指定して使う:
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"と"Data"をスクリプトデータとして持つ"Datum"を指定し"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"}]参照データムを使ってPlutusスクリプトを使う (1)
インラインデータムがある参照入力を使ってカルダノブロックチェーントランザクションを作成する:
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]"TransactionID"を使ってトランザクションを確認する:
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]"TransactionID"を使ってトランザクションを確認する:
BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//DatasetNFTをミントする (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"
|>
}
|>
|>
|>|>;NFTをミントするためのカルダノブロックチェーンのトランザクションを作成する:
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}]]}]トランザクションをカルダノブロックヘーンに送信してNFTをミントする:
nftTXSubmitted = BlockchainTransactionSubmit[nftTXSigned]"TransactionID"を使ってトランザクションを確認する:
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]"TransactionID"を使ってトランザクションを確認する:
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]"TransactionID"を使ってトランザクションを確認する:
BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//DatasetコンパイルされたPlutusスクリプトを配備する (1)
Short[Import[File["ExampleData/primeFactorV1.plutus"]], 3]この特別なスクリプトは,Redeemerのスクリプトデータがデータムの素因数のリストであるときかつそのときに限って成功する.データムについては,任意の反素数として221を選ぶ.スクリプトデータはカルダノの詳細JSONスキーマに準拠していなければならない:
<|"int" -> 221|>"Outputs"リスト内でスクリプトファイルを指す"Address"とスクリプトデータファイルを指す"Data"がある"Datum"を指定し,"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]"TransactionID"を使ってトランザクションを確認する:
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]"TransactionID"を使ってトランザクションを確認する:
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"とスクリプトデータファイルを指す"Data"を持つ"Datum"を指定し,"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]必要とされる署名者を持つPlutusスクリプトを,署名者を"RequiredSigners"リスト内のPrivateKeyオブジェクト,PublicKeyオブジェクト,アドレスまたは公開鍵ハッシュで指定する音で使う:
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]"TransactionID"を使ってトランザクションを確認する:
BlockchainTransactionData[txSpendSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//DatasetReferenceScriptとCollateralOutputsがあるPlutusスクリプトV12を配備して使用する (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]"TransactionID"を使ってトランザクションを確認する:
BlockchainTransactionData[refFactorSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//DatasetインラインデータムがあるPlutusスクリプトUTXOを配備する (1)
カルダノブロックチェーントランザクションを作成してスクリプトUTXOを配備する:
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}]]]トランザクションをカルダノブロックチェーンに送信してスクリプトUTXOを配備する:
txSubmitted = BlockchainTransactionSubmit[txSigned]"TransactionID"を使ってトランザクションを確認する:
BlockchainTransactionData[txSubmitted["TransactionID"], BlockchainBase -> {"Cardano", "Testnet"}]//DatasetSpend 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]"TransactionID"を使ってトランザクションを確認する:
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 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
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: 18-August-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: 18-August-2026]}