BlockchainTransactionSign (for ARK)
BlockchainTransactionSign[obj,key]
指定された秘密鍵を使ってARKブロックチェーントランザクションに署名する.
BlockchainTransactionSign[obj,{key1,key2}]
第1秘密鍵と第2秘密鍵を使ってトランザクションにデジタル署名する.
BlockchainTransactionSign[obj,{assoc1,assoc2,…}]
多重署名アドレスに関連付けられたトランザクションにデジタル署名する.
詳細
- 指定された秘密鍵を使ってARKブロックチェーントランザクションにデジタル署名をする.アドレスに関連付けられた第2公開鍵がある場合は,トランザクションの署名に第2秘密鍵が与えられなければならない.
- 送信者が多重署名アドレスの場合,各参加者の秘密鍵がある連想のリストがトランザクションの署名に際して与えられなければならない. 多重署名アドレスの"MinimumKeys"パラメータに従って最小数のキーが与えられなければならない.
- リスト中の各連想は次の要素を持たなければならない.
-
"PrivateKey" 参加者の秘密鍵 - 次の追加的な要素も与えることができる.
-
"Index" 多重署名のアドレス作成時に使われる,公開鍵のリストに含まれる参加者の(0始まりの)指標 - BlockchainTransactionSign[obj,…]の obj はBlockchainTransactionオブジェクトである.
- BlockchainTransactionSignの鍵は,PrivateKeyオブジェクト,秘密鍵を表す16進数,あるいはWIF形式の秘密鍵でなければならない.
- BlockchainTransactionSignは,特性"Signed"の値がTrueで追加特性"RawTransaction"があるブロックチェーントランザクションオブジェクトを返す.
例題
すべて開く すべて閉じる例 (1)
ARK BlockchainTransactionを作成する:
arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"}, "Recipient" -> "DLesojAmpcA4jQbJDz5JKQ73k1RervJwfi", "Fee" -> 500000,
"Amount" -> 5000000|>]秘密鍵オブジェクトを使ってトランザクションオブジェクトに署名する:
BlockchainTransactionSign[arkTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{112463271242020511913268553850576024704171613983200155594908209540978220622935,
5142141864654632412502491922889459950565538412481466601 ... 7159986346772386468502028015847542708926266702473865,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["Avij9K4sXZJWUqzBwBO73WMI4OylteE3fn58+1CVqmRX"],
"PrivateByteArray" -> ByteArray["1gk4lwSUp5gsf8GNG+fRJSIfQZfOZ2s8owB3DkLWqok="]]]]スコープ (8)
WIF秘密鍵 (1)
WIF秘密鍵を使ってARKトランザクションオブジェクトに署名する:
arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"}, "Recipient" -> "DLesojAmpcA4jQbJDz5JKQ73k1RervJwfi", "Fee" -> 500000,
"Amount" -> 5000000|>]BlockchainTransactionSign[arkTX, "SH1bJ2yZoNqeV1ZQKseKLQsK5owhARLQ5QktTfQmJp4KB22YNvtn"]16進数の秘密鍵 (1)
16進数の秘密鍵を使ってARKトランザクションオブジェクトに署名する:
arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"}, "Recipient" -> "DLesojAmpcA4jQbJDz5JKQ73k1RervJwfi", "Fee" -> 500000,
"Amount" -> 5000000|>]BlockchainTransactionSign[arkTX, "f2066793e6227d474323bf0c1b18f0ffab7429644476e645345ff261bf11b20d"]第2署名のアドレス (1)
BlockchainAddressData["DLesojAmpcA4jQbJDz5JKQ73k1RervJwfi", {"Username", "PublicKey", "SecondPublicKey"}, BlockchainBase -> {"ARK", "Devnet"}]//Columnトランザクションにはリスト中の必要とされる鍵を使って署名しなければならない:
arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"}, "Recipient" -> "DADxmK6VvgFRJ1USzc9RVFUbtjBb1u7fKk", "Fee" -> 500000,
"Amount" -> 5000000|>]BlockchainTransactionSign[arkTX, {"SDbSpS5R3CvS5iYAAKgNcc3PiFDeCSqJBoQz4SjEMxvS31BEpjm6", "SDreXxLSdspsr7a5azJxcnSeMLN4pwn4pWVJuEnPvXi7YB2qSB8n"}]多重署名の作成 (4)
トランザクションの作成 (1)
全関係者が鍵のペアを生成する必要がある.これらの鍵を組み合せて新しい多重署名アドレスを作成する:
keys1 = GenerateAsymmetricKeyPair["ARK"]keys2 = GenerateAsymmetricKeyPair["ARK"]keys3 = GenerateAsymmetricKeyPair["ARK"]口座残高が十分にある送信者は公開鍵を提供しなければならない:
senderPublicKey = BlockchainAddressData["DNeJSpEqKBy3oJ5MXrfuchwWj5a4JXxTQp", "PublicKey", BlockchainBase -> {"ARK", "Devnet"}]arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"},
"Type" -> "MultiSignature",
"MinimumKeys" -> 2,
"PublicKeys" -> {keys1["PublicKey"], keys2["PublicKey"], keys3["PublicKey"]},
"SenderPublicKey" -> senderPublicKey
|>]同時署名 (1)
連続署名 (1)
トランザクションオブジェクトに各参加者が連続的に署名することもできる:
arkTXMS0 = BlockchainTransactionSign[arkTX, {
<|"PrivateKey" -> keys1["PrivateKey"]|>
}]arkTXMS1 = BlockchainTransactionSign[arkTXMS0, {
<|"PrivateKey" -> keys2["PrivateKey"]|>
}]arkTXMS2 = BlockchainTransactionSign[arkTXMS1, {
<|"PrivateKey" -> keys3["PrivateKey"]|>
}]送信者の署名 (1)
トランザクションには送信者の署名も必要である.署名は,トランザクションオブジェクトの作成時に与えられた"SenderPublicKey"フィールドに関連付けられた秘密鍵を使って行う:
arkTXSigned = BlockchainTransactionSign[arkTXMS, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{57462485011872965801710100144286500884992829103026291705481767716456346255904,
93252910380326883084296527707983096725912573509936596202 ... 7594552434738658300043042142820255643943601719303638,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["An8KnSxl8mGALzf1tJ8fzeENub8lLY0vZXic8HOZQYIg"],
"PrivateByteArray" -> ByteArray["A24xoGmWYQ4Wnh+4YsWBXZCmI1EP+5YvkVVyCjb5XdY="]]]]arkTXSigned["MultiSignatureAddress"]送信者としての多重署名アドレス (1)
ARKトランザクションに多重署名アドレスを送信者として署名する.この場合は"SenderPublicKey"が必須となる:
senderPublicKey = BlockchainAddressData["DGVaLpr1BArTmAtimoDh8C5LujPTTF1EFE", "PublicKey", BlockchainBase -> {"ARK", "Devnet"}]arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"},
"Recipient" -> "DGJkJXa9gq38kjSCZnvqNndn7jSWrd2zrT",
"Amount" -> Quantity[520000000, "DARKtoshis"],
"SenderPublicKey" -> senderPublicKey|>]このトランザクションは,多重署名アドレスの"MinimumKeys"パラメータに従って,参加者の最小数の秘密鍵で署名されなければならない:
BlockchainAddressData["DGVaLpr1BArTmAtimoDh8C5LujPTTF1EFE", "MultiSignature", BlockchainBase -> {"ARK", "Devnet"}]["MinimumKeys"]BlockchainTransactionSign[arkTX, {
<|"PrivateKey" -> PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{57143976469766999610290879972632270167816533995122692469610637510833791145289,
10851753758690387871590145496903056174523413855971774365 ... 8995775012947838394065678172356468788225412929600241,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["An5WWDH2xsLdlHqVZXPNykyC/227dNX4udiF0XX//ZVJ"],
"PrivateByteArray" -> ByteArray["WRn7J2df1Dqv0nY7Hm3BOCJglO/a12+WWZWPIrHquvE="]]]|>,
<|"PrivateKey" -> PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{36993751054435703412341007594940267743946195102568099488380666233303262143610,
10423346436196938680821092747767378668456564818288286644 ... 5166889460292483674185938995515423680963638343340623,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A1HJuJl7Ks5J4Sejgc0Q3et28NYIQKwxgjoUcSEu6aR6"],
"PrivateByteArray" -> ByteArray["s01n9oGqdDM+o/dgEN72f0azYlg0p2/U/jzPSb2Fkk8="]]]|>}]各参加者がトランザクションオブジェクトに続けて署名することも可能である:
arkTXMS0 = BlockchainTransactionSign[arkTX, {
<|"PrivateKey" -> PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{57143976469766999610290879972632270167816533995122692469610637510833791145289,
10851753758690387871590145496903056174523413855971774365 ... 8995775012947838394065678172356468788225412929600241,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["An5WWDH2xsLdlHqVZXPNykyC/227dNX4udiF0XX//ZVJ"],
"PrivateByteArray" -> ByteArray["WRn7J2df1Dqv0nY7Hm3BOCJglO/a12+WWZWPIrHquvE="]]]|>
}]arkTXMS1 = BlockchainTransactionSign[arkTXMS0, {
<|"PrivateKey" -> PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{36993751054435703412341007594940267743946195102568099488380666233303262143610,
10423346436196938680821092747767378668456564818288286644 ... 5166889460292483674185938995515423680963638343340623,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A1HJuJl7Ks5J4Sejgc0Q3et28NYIQKwxgjoUcSEu6aR6"],
"PrivateByteArray" -> ByteArray["s01n9oGqdDM+o/dgEN72f0azYlg0p2/U/jzPSb2Fkk8="]]]|>
}]アプリケーション (2)
ARK BlockchainTransactionを作る:
arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"}, "Recipient" -> "DLesojAmpcA4jQbJDz5JKQ73k1RervJwfi", "Fee" -> 500000,
"Amount" -> 5000000|>]秘密鍵オブジェクトを使ってトランザクションオブジェクトに署名する:
arkTXSigned = BlockchainTransactionSign[arkTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{87696465113910176578204891522220454745022058862683894191659089442189614354344,
72502334495718524445709347674468614586757811071611466963 ... 8003037045219516869875358425443035690542436100010227,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["AsHicLXwy33F53No6hMGWy33lkXzIX4FHPfAe4pJsY+o"],
"PrivateByteArray" -> ByteArray["oihE/G/Fmu7Za7kEhAHmpdhhwhHLx+zbr4WQr3ie8PM="]]]]署名したトランザクションをARKブロックチェーンに送信する:
BlockchainTransactionSubmit[arkTXSigned]多重署名のアドレスを使うARK BlockchainTransactionを作る:
senderPublicKey = BlockchainAddressData["DGVaLpr1BArTmAtimoDh8C5LujPTTF1EFE", "PublicKey", BlockchainBase -> {"ARK", "Devnet"}]arkTX = BlockchainTransaction[<|
"BlockchainBase" -> {"ARK", "Devnet"},
"Recipient" -> "DGJkJXa9gq38kjSCZnvqNndn7jSWrd2zrT",
"Amount" -> Quantity[520000000, "DARKtoshis"],
"SenderPublicKey" -> senderPublicKey|>]BlockchainAddressData["DGVaLpr1BArTmAtimoDh8C5LujPTTF1EFE", "MultiSignature", BlockchainBase -> {"ARK", "Devnet"}]["MinimumKeys"]BlockchainTransactionSign[arkTX, {
<|"PrivateKey" -> PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{57143976469766999610290879972632270167816533995122692469610637510833791145289,
10851753758690387871590145496903056174523413855971774365 ... 8995775012947838394065678172356468788225412929600241,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["An5WWDH2xsLdlHqVZXPNykyC/227dNX4udiF0XX//ZVJ"],
"PrivateByteArray" -> ByteArray["WRn7J2df1Dqv0nY7Hm3BOCJglO/a12+WWZWPIrHquvE="]]]|>,
<|"PrivateKey" -> PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{36993751054435703412341007594940267743946195102568099488380666233303262143610,
10423346436196938680821092747767378668456564818288286644 ... 5166889460292483674185938995515423680963638343340623,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A1HJuJl7Ks5J4Sejgc0Q3et28NYIQKwxgjoUcSEu6aR6"],
"PrivateByteArray" -> ByteArray["s01n9oGqdDM+o/dgEN72f0azYlg0p2/U/jzPSb2Fkk8="]]]|>}]署名したトランザクションをARKブロックチェーンに送信する:
BlockchainTransactionSubmit[BlockchainTransaction[Association["BlockchainBase" -> {"ARK", "Devnet"}, "Signed" -> True,
"Type" -> "Transfer", "Fee" -> Quantity[10000000, "DARKtoshis"], "TransactionCount" -> 1,
"Sender" -> "DGVaLpr1BArTmAtimoDh8C5LujPTTF1EFE",
"Recipie ... b9f1ccfe108e6b4740f15ba487e69c64925c7aac16c83390380fb8\
6c88812d6e71773b0dfceb6133e89eef8003391a38753a15665", "02bf84c8b7021195b9efdd0276827b805ae2294a666f\
91932e4176a2cf5f2937a8601853468a35eceaca0f02fb65f811c0b17c2c4b4afb9ac1966bb332e3bdfdd6"}]]]考えられる問題 (1)
不正な秘密鍵 (1)
無効な秘密鍵を与えると$Failed出力が返される:
tx = BlockchainTransaction[Association["BlockchainBase" -> {"ARK", "DevNet"}, "Signed" -> False,
"Type" -> "Transfer", "Fee" -> Quantity[10000000, "DArktoshis"],
"Timestamp" -> DateObject[{2019, 7, 10, 13, 13, 28.115883`8.201526708920333}, "Instant",
"Gregorian", -5.], "Recipient" -> "DB3BoyUAMZqWFnvmneUAerVdsezwrtZkA9",
"Amount" -> Quantity[5000000, "DArktoshis"], "VendorField" -> "",
"MessageHash" -> "d988d478ad9af5d993fa1073a504ad2f902416c8bd585f7f70c3189d173fc50d"]];BlockchainTransactionSign[tx, "AAAAAA"]関連するガイド
履歴
2019 で導入 (12.0)
テキスト
Wolfram Research (2019), BlockchainTransactionSign, Wolfram言語関数, https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-ARK.html.
CMS
Wolfram Language. 2019. "BlockchainTransactionSign." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-ARK.html.
APA
Wolfram Language. (2019). BlockchainTransactionSign. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-ARK.html
BibTeX
@misc{reference.wolfram_2026_blockchaintransactionsign, author="Wolfram Research", title="{BlockchainTransactionSign}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-ARK.html}", note=[Accessed: 15-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransactionsign, organization={Wolfram Research}, title={BlockchainTransactionSign}, year={2019}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-ARK.html}, note=[Accessed: 15-August-2026]}