BlockchainTransactionSign (for Litecoin)
BlockchainTransactionSign[obj,key]
使用指定的密钥对莱特币区块链交易进行数字签名.
BlockchainTransactionSign[obj,{key1,key2,…}]
使用所有密钥 keyi 对交易进行签名.
BlockchainTransactionSign[obj,{assoc1,assoc2,…}]
对支付到脚本哈希 (P2SH) 交易进行数字签名,其中 associ 包含 P2SH 所需数据.
更多信息
- 使用指定密钥对莱特币区块链交易进行数字签名.
- 在 BlockchainTransactionSign[obj,…]中,obj 必须是 BlockchainTransaction 对象.
- BlockchainTransactionSign 的密钥必须是 PrivateKey 对象或表示密钥的十六进制字符串.
- BlockchainTransactionSign 返回一个区块链交易对象,其 "Signed" 属性值为 True,并新增了 "RawTransaction" 属性.
- 对于莱特币 BlockchainTransaction 对象, BlockchainTransactionSign 将使用每个输入中所提供的 "SignatureHash" 属性值,以确定适用的数字签名方式.
- 可以提供多个密钥,顺序不限.
- 如果交易的输入属于 P2SH 地址,则列表中的关联必须包含以下元素:
-
"Data" 脚本执行过程中所使用的元素列表 "Script" 有效的比特币脚本 - "Data" 可包含 PrivateKey 对象、十六进制字符串或比特币脚本操作码,具体取决于脚本内容. PrivateKey 对象将用于对相应输入进行签名. "Script" 是一个由操作码和十六进制字符串组成的有效比特币脚本.
- 如果交易的某个输入与多重签名脚本相关,则列表中的关联必须包含以下元素:
-
"PrivateKeys" 用于签名的 PrivateKey 对象列表 "PublicKeys" 脚本中使用的所有 PublicKey 对象列表 "RequiredKeys" 所需的最少密钥数量
范例
打开所有单元 关闭所有单元基本范例 (1)
创建一个莱特币支付到公钥哈希的 BlockchainTransaction:
ltcTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "5f38f453a3a36b540fd11480f9e07ae02ed14206e4a21ff351898b16b1615a79", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0001, "Litecoins"], "Address" -> "munDTMqa9V9Uhi3P21FpkY8UfYzvQqpmoQ"|>,
<|"Amount" -> Quantity[0.09977, "Litecoins"], "Address" -> "n2oz9uoyx2i5uj9wwPkj1sXN6dm8efe7n9"|>}|>, BlockchainBase -> {"Litecoin", "Testnet"}]ltcTXSigned = BlockchainTransactionSign[ltcTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{48067351049682456848332087651486245083783305555783485878336439165336160262912,
86265118836901232199742833912280553529588413604147325207 ... 2189122391110402380266844823627587263308329834036977,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A2pFKBWbemeSGJyOJDDf0PAYeiCFpELJhS6mPqd8f1sA"],
"PrivateByteArray" -> ByteArray["0fZvlotEk+koVRcqSixTrj5axlqRQV1AcEBeNPVUvvE="]]]]范围 (3)
多个密钥签署 (1)
ltcTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "7f4acc2b5c12686130a7db5005b974afe4341385ae33a871a14fc971195c987f", "Index" -> 0|>,
<|"TransactionID" -> "7f4acc2b5c12686130a7db5005b974afe4341385ae33a871a14fc971195c987f", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0007, "Litecoins"], "Address" -> "mj44nSbRW6xw38CLQZ1UcU5FnMH6HvJsXC"|>,
<|"Amount" -> Quantity[0.09877, "Litecoins"], "Address" -> "n2oz9uoyx2i5uj9wwPkj1sXN6dm8efe7n9"|>}|>, BlockchainBase -> {"Litecoin", "Testnet"}]BlockchainTransactionSign[ltcTX, {PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{48067351049682456848332087651486245083783305555783485878336439165336160262912,
86265118836901232199742833912280553529588413604147325207 ... 2189122391110402380266844823627587263308329834036977,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A2pFKBWbemeSGJyOJDDf0PAYeiCFpELJhS6mPqd8f1sA"],
"PrivateByteArray" -> ByteArray["0fZvlotEk+koVRcqSixTrj5axlqRQV1AcEBeNPVUvvE="]]], PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{47178765345982865428220261762530315538767837988546531648297311940713283339268,
11450581132328705441513858508053920737622496748719403078 ... 8509894808869238925932884581427227255455928713105237,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["AmhOPCIIFcR3lB6SiQT+fUfvcTbN3uQK1jH3pDKJQEQE"],
"PrivateByteArray" -> ByteArray["nh1Jg0+b5uimkDwFcNYS/5MZUcRIQVCTomhRGpZCT1U="]]]}]P2SH 输入 (1)
ltcTX = BlockchainTransaction[
<|"Inputs" -> {<|"TransactionID" -> "1b9daf5a7bcafab46a2d9a1fc7061016d972d303520e5b3e3a42987d0cce9a6b", "Index" -> 0|>},
"Outputs" -> {<|"Amount" -> Quantity[0.049956, "Litecoins"], "Address" -> "QjrVNTdSrX5uKwKEguLdf8uNk1txGq8dqL"|>}
|>,
BlockchainBase -> {"Litecoin", "Testnet"}
]该关联必须包含运行创建 P2SH 地址时所使用的 "Script" 所需的 "Data".
ltcTXSigned = BlockchainTransactionSign[ltcTX,
<|"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[ltcTXSigned["Inputs"][[1]]["ScriptString"], {1, 147}]多重签名输入 (1)
ltcTX = BlockchainTransaction[<|"BlockchainBase" -> {"Litecoin", "Testnet"},
"Inputs" -> {
<|"TransactionID" -> "ded9b3f34da247e883e4242af710f5aa7439b2d39f47f7fcb6ba08d9abcf7e73", "Index" -> 0|>
},
"Outputs" -> {
<|"Amount" -> Quantity[0.00004, "Litecoins"], "Address" -> "QbGkcbSC5Y3e6cP87eLGS7EM9csQQujj9U"|>
}|>]该交易必须根据参数 "RequiredKeys",由参与者使用最少数量的私钥进行签名:
BlockchainTransactionSign[ltcTX, <|"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|>]ltcTXPartiallySigned = BlockchainTransactionSign[ltcTX, <|"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[ltcTXPartiallySigned, <|"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|>]应用 (1)
创建一个莱特币支付到公钥哈希 (Pay-to-Public-Key-Hash) 的BlockchainTransaction:
ltcTX = BlockchainTransaction[<|"Inputs" -> {<|"TransactionID" -> "5f38f453a3a36b540fd11480f9e07ae02ed14206e4a21ff351898b16b1615a79", "Index" -> 1|>}, "Outputs" -> {<|"Amount" -> Quantity[0.0001, "Litecoins"], "Address" -> "munDTMqa9V9Uhi3P21FpkY8UfYzvQqpmoQ"|>,
<|"Amount" -> Quantity[0.09977, "Litecoins"], "Address" -> "n2oz9uoyx2i5uj9wwPkj1sXN6dm8efe7n9"|>}|>, BlockchainBase -> {"Litecoin", "Testnet"}]ltcTXSigned = BlockchainTransactionSign[ltcTX, PrivateKey[Association["Type" -> "EllipticCurve", "CurveName" -> "secp256k1",
"PublicCurvePoint" ->
{48067351049682456848332087651486245083783305555783485878336439165336160262912,
86265118836901232199742833912280553529588413604147325207 ... 2189122391110402380266844823627587263308329834036977,
"Compressed" -> True, "PublicByteArray" ->
ByteArray["A2pFKBWbemeSGJyOJDDf0PAYeiCFpELJhS6mPqd8f1sA"],
"PrivateByteArray" -> ByteArray["0fZvlotEk+koVRcqSixTrj5axlqRQV1AcEBeNPVUvvE="]]]]BlockchainTransactionSubmit[ltcTXSigned]可能存在的问题 (1)
不正确的私人秘钥 (1)
如果提供了无效的密钥,将返回 $Failed:
tx = BlockchainTransaction[Association["BlockchainBase" -> {"Litecoin", "Testnet"}, "Signed" -> False,
"Fee" -> Quantity[2000, "Litoshis"], "Version" -> 1, "LockTime" -> 0,
"Inputs" -> {Association["TransactionID" ->
"5f38f453a3a36b540fd114 ... "0100000001795a61b1168b8951f31fa2e40642d12ee07ae0f98014d10f546ba3a353f4385f01\
00000000ffffffff0210270000000000001976a9149c74a7dc51225f0c97eadefbd014d621833d5ce388aca83c980000000\
0001976a914e99343dfc254ae4b17701104467d9c7caf904b2d88ac00000000"]];BlockchainTransactionSign[tx, "AAAAAA"]相关指南
历史
2024年引入 (14.0)
文本
Wolfram Research (2024),BlockchainTransactionSign,Wolfram 语言函数,https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Litecoin.html.
CMS
Wolfram 语言. 2024. "BlockchainTransactionSign." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Litecoin.html.
APA
Wolfram 语言. (2024). BlockchainTransactionSign. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Litecoin.html 年
BibTeX
@misc{reference.wolfram_2026_blockchaintransactionsign, author="Wolfram Research", title="{BlockchainTransactionSign}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Litecoin.html}", note=[Accessed: 26-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_blockchaintransactionsign, organization={Wolfram Research}, title={BlockchainTransactionSign}, year={2024}, url={https://reference.wolfram.com/language/ref/blockchain/BlockchainTransactionSign-Litecoin.html}, note=[Accessed: 26-August-2026]}