BlockchainTransactionSign (for Bitcoin Cash)
BlockchainTransactionSign[obj,key]
使用指定私钥对比特币现金区块链交易进行数字签名.
BlockchainTransactionSign[obj,{key1,key2,…}]
使用全部指定私钥 keyi 对交易进行数字签名.
BlockchainTransactionSign[obj,{assoc1,assoc2,…}]
对支付到脚本哈希 (P2SH) 交易进行数字签名,其中 associ 包含 P2SH 所需数据.
更多信息
- 使用指定的私钥对比特币现金区块链交易进行数字签名。
- 在 BlockchainTransactionSign[obj,…] 中,obj 是一个 BlockchainTransaction 对象.
- 对于 BlockchainTransactionSign,其密钥必须是一个 PrivateKey 对象或表示私钥的十六进制字符串.
- BlockchainTransactionSign 返回一个区块链交易对象,该对象的属性 True 的值为 "Signed",并带有附加属性 "RawTransaction".
- 对于一个比特币现金 BlockchainTransaction 对象,BlockchainTransactionSign 将使用每个输入所提供的属性 "SignatureHash" 的值来确定合适的数字签名方法.
- 可按任意顺序提供多个私人密钥。
- 如果交易的输入属于 P2SH 地址,则列表中的关联必须包含以下元素:
-
"Data" 执行脚本时使用的元素列表 "Script" 有效的比特币脚本 - "Data" 可以包含 PrivateKey 对象、十六进制字符串或依据脚本的比特币脚本操作码. PrivateKey 对象将用于签署相应的输入. "Script" 是一个由操作码和十六进制字符串组成的有效比特币脚本.
- 如果交易输入与多重签名脚本有关,则列表中的关联必须包含以下元素:
-
"PrivateKeys" 用于签名的 PrivateKey 对象列表 "PublicKeys" 脚本中使用的所有 PublicKey 对象列表 "RequiredKeys" 所需最少的私钥数量
范例
打开所有单元 关闭所有单元基本范例 (1)
创建一个比特币现金付款到公钥哈希的 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)
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)
创建一个比特币现金支付到公钥哈希 (Pay-to-Public-Key-Hash) 的 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 语言. 2024. "BlockchainTransactionSign." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-BitcoinCash.html.
APA
Wolfram 语言. (2024). BlockchainTransactionSign. Wolfram 语言与系统参考资料中心. 追溯自 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: 25-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: 25-August-2026]}