BlockchainTransactionSign (for Bitcoin)
BlockchainTransactionSign[obj,key]
用指定的私钥对比特币区块链交易进行数字签名.
BlockchainTransactionSign[obj,{key1,key2,…}]
用所有的密钥 keyi 对交易进行签名.
BlockchainTransactionSign[obj,{assoc1,assoc2,…}]
对交易进行数字签名,其中 associ 包含 Pay-to-Script-Hash 数据.
更多信息
- 用指定的私钥对比特币区块链交易进行数字签名.
- 在 BlockchainTransactionSign[obj,…] 中,obj 是一个 BlockchainTransaction 对象.
- BlockchainTransactionSign 的密钥必须是 PrivateKey 对象或表示私钥的十六进制字符串.
- BlockchainTransactionSign 返回一个区块链交易对象,其属性 "Signed" 的值为 True,并同时具有附加属性 "RawTransaction".
- 对于比特币 BlockchainTransaction 对象,BlockchainTransactionSign 将使用每个输入提供的属性 "SignatureHash" 的值来确定适当的数字签名方法.
- 可以按任何顺序给出多个私钥.
- 如果交易的输入属于 Pay-to-Script-Hash 地址,则列表中的关联必须具有以下元素:
-
"Data" 脚本执行期间使用的元素列表 "Script" 有效的比特币脚本 - "Data" 根据脚本可能包含 PrivateKey 对象、十六进制字符串或比特币脚本操作码. PrivateKey 对象将用于签署相应的输入. "Script" 是由操作码和十六进制字符串组成的有效比特币脚本.
- 如果交易的输入与多重签名脚本相关,则列表中的关联必须具有以下元素:
-
"PrivateKeys" 用于签名的 PrivateKey 对象列表 "PublicKeys" 用于脚本的所有 PublicKey 对象的列表 "RequiredKeys" 所需私钥的最小数量
范例
打开所有单元 关闭所有单元基本范例 (1)
创建比特币 Pay-to-Public-Key-Hash 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"}|>]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"}]Pay-to-Script-Hash 输入 (1)
使用属于 Pay-to-Script-Hash 地址的输入签署比特币交易:
btcTX = BlockchainTransaction[
<|"Inputs" -> {<|"TransactionID" -> "ebe6fecb0663d134b29fde8544a586662d4d1f9cfd81c9ddb85c144700b5c552", "Index" -> 1|>},
"Outputs" -> {<|"Amount" -> Quantity[0.011728, "Bitcoins"], "Address" -> "2N7uzVaZx4RzYxRd5VYJFMQnv1ERaWCwb5L"|>}
|>,
BlockchainBase -> {"Bitcoin", "Testnet"}
]该关联必须包含运行创建 Pay-to-Script-Hash 地址时使用的 "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)
创建一个比特币 Pay-to-Public-Key-Hash 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"}|>]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 语言. 2019. "BlockchainTransactionSign." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Bitcoin.html.
APA
Wolfram 语言. (2019). BlockchainTransactionSign. Wolfram 语言与系统参考资料中心. 追溯自 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: 04-September-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: 04-September-2026]}