BlockchainTransactionSign (for Bitcoin Cash)
BlockchainTransactionSign[obj,key]
指定された秘密鍵を使ってビットコインキャッシュブロックチェーンのトランザクションにデジタル署名する.
BlockchainTransactionSign[obj,{key1,key2,…}]
すべての鍵 keyiを使ってトランザクションにデジタル署名する.
BlockchainTransactionSign[obj,{assoc1,assoc2,…}]
associがP2SHデータを含んでいるトランザクションにデジタル署名する.
詳細
- 指定された秘密鍵を使ってビットコインキャッシュブロックチェーンのトランザクションにデジタル署名する.
- BlockchainTransactionSign[obj,…]の obj はBlockchainTransactionオブジェクトである.
- BlockchainTransactionSign用の鍵は,PrivateKeyオブジェクトあるいは秘密鍵を表す16進数列でなければならない.
- BlockchainTransactionSignは,特性"Signed"の値がTrueで追加特性"RawTransaction"があるブロックチェーントランザクションオブジェクトを返す.
- BlockchainTransactionSignは,ビットコインキャッシュBlockchainTransactionオブジェクトについては,各入力の特性"SignatureHash"の値を使って適切なデジタル署名法を決定する.
- 複数の秘密鍵は任意の順序で与えることができる.
- トランザクションの入力がP2SHアドレスに属しているなら,リスト中の連想には次の要素がなければならない.
-
"Data" スクリプトの実行時に使われた要素のリスト "Script" 有効なビットコインスクリプト - "Data"は,スクリプトに応じて,PrivateKeyオブジェクト,16進文字列,あるいはビットコインスクリプトオペコードを含んでいることがある.対応する入力の署名にはPrivateKeyオブジェクトが使われる."Script"は,オペコードと16進文字列からなる有効なビットコインスクリプトである.
- トランザクションの入力が多重署名のスクリプトに関連しているなら,リスト中の連想には次の要素がなければならない.
-
"PrivateKeys" 署名に使われたPrivateKeyオブジェクトのリスト "PublicKeys" スクリプトに使われた全PublicKeyオブジェクトのリスト "RequiredKeys" 必要な秘密鍵の最小数
例題
すべて開く すべて閉じる例 (1)
ビットコインキャッシュのP2PKH BlockchainTransactionを作成する:
bchTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "4fe6465bbf9ffbd621445e520126aba538d59175a0ba3c6089225e9efbea0a67", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0001, "BitcoinCashUnits"], "Address" -> "bchtest:qp7ykfna6xndcyhr5j9h5xx59xj57tvawvjc0de029"|>,
<|"Amount" -> Quantity[0.008645, "BitcoinCashUnits"], "Address" -> "bchtest:qrm5whh48dvqwlza8kjete78ttsudpz0vs9r7l7arp"|>}|>, BlockchainBase -> {"BitcoinCash", "Testnet"}]bchTXSigned = BlockchainTransactionSign[bchTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{111371065921687716131772167801914439447104389817514716115511942584632775793360,
5267778301581478541603447949046636935512968567582755066 ... 5414116593206554949956685290123019580109420649791178,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["AvY5yhtA3b1LZ7ggaGApsdJ8zZ3qoRT+C2rkoek909rQ"],
"PrivateByteArray" -> ByteArray["aaEBjTDfGHmkprK/VruG4RW28D1SQB2FMuy2e1n8Pso="]]]]スコープ (3)
複数の鍵署名 (1)
ビットコインキャッシュトランザクションに複数の鍵で署名する:
"8397c305ac2ed409e59510a730207c79a6eacd34f82a288ce5c29e4f0602662d"bchTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "8397c305ac2ed409e59510a730207c79a6eacd34f82a288ce5c29e4f0602662d", "Index" -> 0|>,
<|"TransactionID" -> "8397c305ac2ed409e59510a730207c79a6eacd34f82a288ce5c29e4f0602662d", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0001, "BitcoinCashUnits"], "Address" -> "bchtest:qp7ykfna6xndcyhr5j9h5xx59xj57tvawvjc0de029"|>,
<|"Amount" -> Quantity[0.008625, "BitcoinCashUnits"], "Address" -> "bchtest:qrm5whh48dvqwlza8kjete78ttsudpz0vs9r7l7arp"|>}|>, BlockchainBase -> {"BitcoinCash", "Testnet"}]BlockchainTransactionSign[bchTX, {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{111371065921687716131772167801914439447104389817514716115511942584632775793360,
5267778301581478541603447949046636935512968567582755066 ... 5414116593206554949956685290123019580109420649791178,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["AvY5yhtA3b1LZ7ggaGApsdJ8zZ3qoRT+C2rkoek909rQ"],
"PrivateByteArray" -> ByteArray["aaEBjTDfGHmkprK/VruG4RW28D1SQB2FMuy2e1n8Pso="]]], PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{8234482787118344867505825892889275185008686009033586181232791033019027230477,
605446710461106034929294578464389112489979814726635237236 ... 1293826520577434195911060279281062675604571111421095,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["AhI0jVYEYA2MWBXqkbPYhWIah+/6H6X6i04BuOHEeQ8N"],
"PrivateByteArray" -> ByteArray["PajWVqSLZ8mKm7A+sy1QdtB1RnQwagTmUeaak6SR9Kc="]]]}]P2SH入力 (1)
P2SHアドレスに属する入力でビットコインキャッシュトランザクションに署名する:
bchTX = BlockchainTransaction[
<|"Inputs" -> {<|"TransactionID" -> "9e6b0dc24198735b40052a0a6127ab9434fb793291ef888b35683e3619d63ece", "Index" -> 0|>},
"Outputs" -> {<|"Amount" -> Quantity[0.00096, "BitcoinCashUnits"], "Address" -> "bchtest:prlsjfyxdcevxy4kjkfdk0zsfsw67f0ymcv8trldxv"|>}
|>,
BlockchainBase -> {"BitcoinCash", "Testnet"}
]連想は,P2SHアドレスの作成時に使われた"Script"を実行するために必要な"Data"を含んでいなければならない:
bchTXSigned = BlockchainTransactionSign[bchTX,
<|"Data" -> {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{41026172810365163450497325772640560266676837485610030502171167272793127408984,
11446335397538667251023888576238318911484417846681655063 ... 8060763095477992527580179805485188076543244867668915,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["Alqz/a1GEjJ1kb/pZvelK1a1hp09wqc/evWksnJiflVY"],
"PrivateByteArray" -> ByteArray["5FxO++GrxKZkpRnW5lKUO5sMZoaHzQu+u0rcGyfbC7M="]]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["Alqz/a1GEjJ1kb/pZvelK1a1hp09wqc/evWksnJiflVY"],
"PublicCurvePoint" ->
{41026172810365163450497325772640560266676837485610030502171167272793127408984,
11446335397538667251023888576238318911484417846681655063319601618785846055070}]]["PublicHexString"]}, "Script" -> "OP_DUP OP_HASH160 4088a7838506b091bad63790dee787816afced90 OP_EQUALVERIFY OP_CHECKSIG"|>]"Data"内のPrivateKeyオブジェクトは,最終的なトランザクションオブジェクトに出現するトランザクションの署名の作成時に使われたものである:
StringTake[bchTXSigned["Inputs"][[1]]["ScriptString"], {1, 152}]多重署名入力 (1)
多重署名スクリプトに関連する入力でビットコインのトランザクションに署名する:
bchTX = BlockchainTransaction[<|"BlockchainBase" -> {"BitcoinCash", "Testnet"},
"Inputs" -> {
<|"TransactionID" -> "f075217ca991aa791fa7c3d70f42b94129620907e79726d6900d953c972ca607", "Index" -> 0|>
},
"Outputs" -> {
<|"Amount" -> Quantity[4.*^-6, "BitcoinCashUnits"], "Address" -> "bchtest:pzswddl07p942n9nukjyq3d95dxawxe4ty8lp8znq2"|>
}|>]トランザクションは,"RequiredKeys"パラメータによる参加者からの最小数の秘密鍵で署名されなければならない:
BlockchainTransactionSign[bchTX, <|"PrivateKeys" -> {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{51724874525444673739416721101123148946820313131304153131265018986533336040603,
48268731188414227634929888133357578613956172980857119866 ... 2945683748054256803097024204184959830409291338374588,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A3JbPdNVSP2qOQQGZ8L356XoOXtca+x0yN/eJRFyZsSb"],
"PrivateByteArray" -> ByteArray["SpSctIIABYGROtVVkNEK5YJef7vYlAiFJfTuRCsEXbw="]]], PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{107979500881536671708232537632503185481996798629419440902689565824755056043672,
2637454808094502922642620609608402222690883176095857765 ... 9932546330509479197220801016216185613865467267293385,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["Au66O1At9hyzPrP7jrH8x3+0Eu+iockh1KM1MemGIOaY"],
"PrivateByteArray" -> ByteArray["Kdbwgcvp8l5y34qidpHOP/qLecxBydEn97nfCKKcoMk="]]]}, "PublicKeys" -> {PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["A3JbPdNVSP2qOQQGZ8L356XoOXtca+x0yN/eJRFyZsSb"],
"PublicCurvePoint" ->
{51724874525444673739416721101123148946820313131304153131265018986533336040603,
48268731188414227634929888133357578613956172980857119866702680060264360725427}]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["Au66O1At9hyzPrP7jrH8x3+0Eu+iockh1KM1MemGIOaY"],
"PublicCurvePoint" ->
{107979500881536671708232537632503185481996798629419440902689565824755056043672,
26374548080945029226426206096084022226908831760958577652142947530277320333564}]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["A2oN92oQNAuhAQWLabDZHbQ8kuwIEtlRPlY5sRPfB66R"],
"PublicCurvePoint" ->
{47969838552476767063979266372986347156581982326487605026895634402235021504145,
106239829386092594197652494795106677088067962409072619345894133053834318874239}]]}, "RequiredKeys" -> 2|>]あるいは,各参加者がトランザクションオブジェクトに順に署名してもよい:
bchTXPartiallySigned = BlockchainTransactionSign[bchTX, <|"PrivateKeys" -> {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{107979500881536671708232537632503185481996798629419440902689565824755056043672,
2637454808094502922642620609608402222690883176095857765 ... 9932546330509479197220801016216185613865467267293385,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["Au66O1At9hyzPrP7jrH8x3+0Eu+iockh1KM1MemGIOaY"],
"PrivateByteArray" -> ByteArray["Kdbwgcvp8l5y34qidpHOP/qLecxBydEn97nfCKKcoMk="]]]}, "PublicKeys" -> {PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["A3JbPdNVSP2qOQQGZ8L356XoOXtca+x0yN/eJRFyZsSb"],
"PublicCurvePoint" ->
{51724874525444673739416721101123148946820313131304153131265018986533336040603,
48268731188414227634929888133357578613956172980857119866702680060264360725427}]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["Au66O1At9hyzPrP7jrH8x3+0Eu+iockh1KM1MemGIOaY"],
"PublicCurvePoint" ->
{107979500881536671708232537632503185481996798629419440902689565824755056043672,
26374548080945029226426206096084022226908831760958577652142947530277320333564}]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["A2oN92oQNAuhAQWLabDZHbQ8kuwIEtlRPlY5sRPfB66R"],
"PublicCurvePoint" ->
{47969838552476767063979266372986347156581982326487605026895634402235021504145,
106239829386092594197652494795106677088067962409072619345894133053834318874239}]]}, "RequiredKeys" -> 2|>]BlockchainTransactionSign[bchTXPartiallySigned, <|"PrivateKeys" -> {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{51724874525444673739416721101123148946820313131304153131265018986533336040603,
48268731188414227634929888133357578613956172980857119866 ... 2945683748054256803097024204184959830409291338374588,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A3JbPdNVSP2qOQQGZ8L356XoOXtca+x0yN/eJRFyZsSb"],
"PrivateByteArray" -> ByteArray["SpSctIIABYGROtVVkNEK5YJef7vYlAiFJfTuRCsEXbw="]]]}, "PublicKeys" -> {PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["A3JbPdNVSP2qOQQGZ8L356XoOXtca+x0yN/eJRFyZsSb"],
"PublicCurvePoint" ->
{51724874525444673739416721101123148946820313131304153131265018986533336040603,
48268731188414227634929888133357578613956172980857119866702680060264360725427}]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["Au66O1At9hyzPrP7jrH8x3+0Eu+iockh1KM1MemGIOaY"],
"PublicCurvePoint" ->
{107979500881536671708232537632503185481996798629419440902689565824755056043672,
26374548080945029226426206096084022226908831760958577652142947530277320333564}]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["A2oN92oQNAuhAQWLabDZHbQ8kuwIEtlRPlY5sRPfB66R"],
"PublicCurvePoint" ->
{47969838552476767063979266372986347156581982326487605026895634402235021504145,
106239829386092594197652494795106677088067962409072619345894133053834318874239}]]}, "RequiredKeys" -> 2|>]アプリケーション (1)
ビットコインキャッシュのP2PKH BlockchainTransactionを作る:
BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "4fe6465bbf9ffbd621445e520126aba538d59175a0ba3c6089225e9efbea0a67", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0001, "BitcoinCashUnits"], "Address" -> "bchtest:qp7ykfna6xndcyhr5j9h5xx59xj57tvawvjc0de029"|>,
<|"Amount" -> Quantity[0.008645, "BitcoinCashUnits"], "Address" -> "bchtest:qrm5whh48dvqwlza8kjete78ttsudpz0vs9r7l7arp"|>}|>, BlockchainBase -> {"BitcoinCash", "Testnet"}]bchTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "4fe6465bbf9ffbd621445e520126aba538d59175a0ba3c6089225e9efbea0a67", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0001, "BitcoinCashUnits"], "Address" -> "bchtest:qp7ykfna6xndcyhr5j9h5xx59xj57tvawvjc0de029"|>,
<|"Amount" -> Quantity[0.008645, "BitcoinCashUnits"], "Address" -> "bchtest:qrm5whh48dvqwlza8kjete78ttsudpz0vs9r7l7arp"|>}|>, BlockchainBase -> {"BitcoinCash", "Testnet"}]bchTXSigned = BlockchainTransactionSign[bchTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{111371065921687716131772167801914439447104389817514716115511942584632775793360,
5267778301581478541603447949046636935512968567582755066 ... 5414116593206554949956685290123019580109420649791178,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["AvY5yhtA3b1LZ7ggaGApsdJ8zZ3qoRT+C2rkoek909rQ"],
"PrivateByteArray" -> ByteArray["aaEBjTDfGHmkprK/VruG4RW28D1SQB2FMuy2e1n8Pso="]]]]署名したトランザクションをビットコインキャッシュブロックチェーンに送信する:
BlockchainTransactionSubmit[bchTXSigned]考えられる問題 (1)
不正な秘密鍵 (1)
無効な秘密鍵を与えると$Failed出力が返される:
tx = BlockchainTransaction[Association["BlockchainBase" -> {"BitcoinCash", "Testnet"},
"Signed" -> False, "Fee" -> Quantity[2000, "BitcoinCashSatoshis"], "Version" -> 1,
"LockTime" -> 0, "Inputs" ->
{Association["TransactionID" ->
"4fe6 ... "0100000001670aeafb9e5e2289603cbaa07591d538a5ab2601525e4421d6fb9fbf5b46e64f01\
00000000ffffffff0210270000000000001976a9147c4b267dd1a6dc12e3a48b7a18d429a54f2d9d7388acf4300d0000000\
0001976a914f7475ef53b58077c5d3da595e7c75ae1c6844f6488ac00000000"]];BlockchainTransactionSign[tx, "AAAAAA"]関連するガイド
履歴
2024 で導入 (14.0)
テキスト
Wolfram Research (2024), BlockchainTransactionSign, Wolfram言語関数, https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-BitcoinCash.html.
CMS
Wolfram Language. 2024. "BlockchainTransactionSign." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-BitcoinCash.html.
APA
Wolfram Language. (2024). BlockchainTransactionSign. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-BitcoinCash.html
BibTeX
@misc{reference.wolfram_2026_blockchaintransactionsign, author="Wolfram Research", title="{BlockchainTransactionSign}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-BitcoinCash.html}", note=[Accessed: 13-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransactionsign, organization={Wolfram Research}, title={BlockchainTransactionSign}, year={2024}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-BitcoinCash.html}, note=[Accessed: 13-August-2026]}