BlockchainTransactionSign (for Bitcoin)
BlockchainTransactionSign[obj,key]
指定された秘密鍵を使ってビットコインブロックチェーンのトランザクションにデジタル署名する.
BlockchainTransactionSign[obj,{key1,key2,…}]
すべての鍵 keyiを使ってトランザクションにデジタル署名する.
BlockchainTransactionSign[obj,{assoc1,assoc2,…}]
associがP2PKHデータを含んでいるトランザクションにデジタル署名する.
詳細
- 指定された秘密鍵を使ってビットコインブロックチェーンのトランザクションにデジタル署名する.
- 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を作成する:
btcTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "147500b3fae74462fbfa05af73dfb82d2cdfd110afd7a6887cc68bbe41b04366", "Index" -> 0|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0002, "Bitcoins"], "Address" -> "mgPhDaCzXcm4gmkxfz9sZKvpabmNGdLj52"|>, <|"Amount" -> Quantity[0.0047, "Bitcoins"], "Address" -> "mkHGstoUaDWzGxag29MEnp8WJPpfA45omK"|>}, "BlockchainBase" -> {"Bitcoin", "Testnet"}|>]WIF符号化した秘密鍵を使ってトランザクションオブジェクトに署名する:
BlockchainTransactionSign[btcTX, "cVN2fsWXoxMkPGx5EL7X6grykQ3VSDfHPUg3CJhD8AC9pJ5y8Nhi"]スコープ (3)
複数の鍵署名 (1)
btcTX = BlockchainTransaction[<|"BlockchainBase" -> {"Bitcoin", "Testnet"},
"Inputs" -> {
<|"TransactionID" -> "a6736e807fa84219b6b41e250faf6393a76f055feeba95014458a583463143e4", "Index" -> 1|>,
<|"TransactionID" -> "a6736e807fa84219b6b41e250faf6393a76f055feeba95014458a583463143e4", "Index" -> 0|>
}, "Outputs" -> {
<|"Amount" -> 0.0023, "Address" -> "mkHGstoUaDWzGxag29MEnp8WJPpfA45omK"|>,
<|"Amount" -> 0.0015, "Address" -> "mgPhDaCzXcm4gmkxfz9sZKvpabmNGdLj52"|>
}|>]BlockchainTransactionSign[btcTX, {"cVN2fsWXoxMkPGx5EL7X6grykQ3VSDfHPUg3CJhD8AC9pJ5y8Nhi", "cSdsGz3xhvFZAXW9U3cpMKCnGW5DV3Frfp921wnFk5nvWttByMT1"}]P2SH入力 (1)
P2SHアドレスに属する入力でビットコインのトランザクションに署名する:
btcTX = BlockchainTransaction[
<|"Inputs" -> {<|"TransactionID" -> "ebe6fecb0663d134b29fde8544a586662d4d1f9cfd81c9ddb85c144700b5c552", "Index" -> 1|>},
"Outputs" -> {<|"Amount" -> Quantity[0.011728, "Bitcoins"], "Address" -> "2N7uzVaZx4RzYxRd5VYJFMQnv1ERaWCwb5L"|>}
|>,
BlockchainBase -> {"Bitcoin", "Testnet"}
]連想は,P2SHアドレスの作成時に使われた"Script"を実行するために必要な"Data" を含んでいなければならない:
btcTXSigned = BlockchainTransactionSign[btcTX,
<|"Data" -> {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{66761639592919821477469190919815924180094699857628922323270431008999548151984,
67073481882215646202832337781986508967035346830822431863 ... 2242835004181077759496032839736411347399045052265541,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["ApOZv7oUkd489VkyiijZ23genB2qeosXkgaZayZyaGiw"],
"PrivateByteArray" -> ByteArray["YIcIjOXOjhSRNn+98RprkTeQ4gQUP0oaQ60YHrQydEU="]]], PublicKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1", "Compressed" -> True,
"PublicByteArray" -> ByteArray["ApOZv7oUkd489VkyiijZ23genB2qeosXkgaZayZyaGiw"],
"PublicCurvePoint" ->
{66761639592919821477469190919815924180094699857628922323270431008999548151984,
67073481882215646202832337781986508967035346830822431863975597637481339178216}]]["PublicHexString"]}, "Script" -> "OP_DUP OP_HASH160 4088a7838506b091bad63790dee787816afced90 OP_EQUALVERIFY OP_CHECKSIG"|>]"Data"内のPrivateKeyオブジェクトは,最終的なトランザクションオブジェクトに出現する署名の作成時に使われたものである:
StringTake[btcTXSigned["Inputs"][[1]]["ScriptString"], {1, 147}]多重署名入力 (1)
多重署名スクリプトに関連する入力でビットコインのトランザクションに署名する:
btcTX = BlockchainTransaction[
<|
"Inputs" -> {<|"TransactionID" -> "b532b504e7f64b08667d0ae4c9549183f63f34c8d8f0c2101bb626eba6deea76", "Index" -> 0|>},
"Outputs" -> {<|"Amount" -> Quantity[0.011478, "Bitcoins"], "Address" -> "mv4rnyY3Su5gjcDNzbMLKBQkBicCtHUtFB"|>}
|>,
BlockchainBase -> {"Bitcoin", "Testnet"}
]トランザクションは,"RequiredKeys"パラメータによる参加者からの最小数の秘密鍵で署名されなければならない:
BlockchainTransactionSign[btcTX, <|"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" ->
{47969838552476767063979266372986347156581982326487605026895634402235021504145,
10623982938609259419765249479510667708806796240907261934 ... 8193694796817683764704513421743219617859388309399741,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A2oN92oQNAuhAQWLabDZHbQ8kuwIEtlRPlY5sRPfB66R"],
"PrivateByteArray" -> ByteArray["wLEXDRbAZIK6RyIkfQrIk8eR/bZv0duN1qLJ3xM+aL0="]]]}, "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|>]あるいは,各参加者がトランザクションオブジェクトに順に署名してもよい:
btcTXPartiallySigned = BlockchainTransactionSign[btcTX, <|"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|>]BlockchainTransactionSign[btcTXPartiallySigned, <|"PrivateKeys" -> {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{47969838552476767063979266372986347156581982326487605026895634402235021504145,
10623982938609259419765249479510667708806796240907261934 ... 8193694796817683764704513421743219617859388309399741,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A2oN92oQNAuhAQWLabDZHbQ8kuwIEtlRPlY5sRPfB66R"],
"PrivateByteArray" -> ByteArray["wLEXDRbAZIK6RyIkfQrIk8eR/bZv0duN1qLJ3xM+aL0="]]]}, "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を作る:
btcTX = BlockchainTransaction[<|
"Inputs" -> {
<|"TransactionID" -> "79bd95a5c087cfc33904020b3cd31b11b97be7751c8a1ca57c5313d4ac848830", "Index" -> 0|>},
"Outputs" -> {
<|"Amount" -> Quantity[0.005, "Bitcoins"], "Address" -> "mgPhDaCzXcm4gmkxfz9sZKvpabmNGdLj52"|>,
<|"Amount" -> Quantity[0.044, "Bitcoins"], "Address" -> "mkHGstoUaDWzGxag29MEnp8WJPpfA45omK"|>},
"BlockchainBase" -> {"Bitcoin", "Testnet"}|>]WIF符号化した秘密鍵でトランザクションオブジェクトに署名する:
btcTXSigned = BlockchainTransactionSign[btcTX, "cVN2fsWXoxMkPGx5EL7X6grykQ3VSDfHPUg3CJhD8AC9pJ5y8Nhi"]BlockchainTransaction[Association["BlockchainBase" -> {"Bitcoin", "TestNet"}, "Signed" -> True,
"Fee" -> Quantity[100000, "Satoshis"], "Version" -> 1, "LockTime" -> 0,
"Inputs" -> {Association["TransactionID" ->
"79bd95a5c087cfc3390402 ... ce0ca6a4eae418320121031125ed79e73fdb2863548a14331e349a52ca04de\
1088d40fe70aadc9b0f95d6effffffff0220a10700000000001976a9140998a0d156e58de41e6e4b7e9322325cbee634778\
8ac80234300000000001976a914344251713cc7a3e12d2bc7e2b913756c5de98ada88ac00000000"]]["Inputs"]署名したトランザクションをビットコインブロックチェーンに送信する:
BlockchainTransactionSubmit[btcTXSigned]考えられる問題 (1)
不正な秘密鍵 (1)
無効な秘密鍵を与えると$Failed出力が返される:
tx = BlockchainTransaction[Association["BlockchainBase" -> {"Bitcoin", "TestNet"}, "Signed" -> False,
"Fee" -> Quantity[10000, "Satoshis"], "Version" -> 1, "LockTime" -> 0,
"Inputs" -> {Association["TransactionID" ->
"147500b3fae74462fbfa05 ... "01000000016643b041be8bc67c88a6d7af10d1df2c2db8df73af05fafb6244e7fab300751400\
00000000ffffffff02204e0000000000001976a9140998a0d156e58de41e6e4b7e9322325cbee6347788acf02b070000000\
0001976a914344251713cc7a3e12d2bc7e2b913756c5de98ada88ac00000000"]];BlockchainTransactionSign[tx, "AAAAAA"]関連するガイド
履歴
2019 で導入 (12.0)
テキスト
Wolfram Research (2019), BlockchainTransactionSign, Wolfram言語関数, https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Bitcoin.html.
CMS
Wolfram Language. 2019. "BlockchainTransactionSign." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Bitcoin.html.
APA
Wolfram Language. (2019). BlockchainTransactionSign. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Bitcoin.html
BibTeX
@misc{reference.wolfram_2026_blockchaintransactionsign, author="Wolfram Research", title="{BlockchainTransactionSign}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Bitcoin.html}", note=[Accessed: 18-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransactionsign, organization={Wolfram Research}, title={BlockchainTransactionSign}, year={2019}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Bitcoin.html}, note=[Accessed: 18-August-2026]}