Ich habe gesehen, dass jemand eine ähnliche Frage gestellt hat: Ist es möglich zu überprüfen, wer die Transaktion in einem Fall mit mehreren Signaturen unterzeichnet hat?
Aber ich bin derzeit nicht in der Lage, das Einlösungsskript zu analysieren/zu lesen. Wenn ich die Blockdozer-API verwende, um die Details der Transaktion abzurufen, erhalte ich „hex“ und „asm“.
Wie muss ich das "Hex" analysieren, um festzustellen, wer die Transaktion signiert hat? Unten finden Sie die Transaktions-ID (es ist eine Bitcoin Cash-Transaktion, aber ich glaube, der Multisig-Teil wäre ähnlich): 3a91cd0a55270972d12a42156a24c6a318c39fedce942f2ff28114d63fda5aad
Jede Hilfe wird sehr geschätzt.
blockdozer.com/api/tx/3a91cd0a55270972d12a42156a24c6a318c39fedce942f2ff28114d63fda5aad
Wie muss ich das "Hex" analysieren, um festzustellen, wer die Transaktion signiert hat?
In diesem Beispiel ist die Transaktion vollständig signiert, aber es gibt mehr als m (m-von-n), sodass unklar ist, wer die Transaktion signiert hat. Da die Signatur mit dem privaten Schlüssel des Benutzers erfolgt, besteht die einzige Möglichkeit darin, jede Signatur tatsächlich kryptografisch mit jedem öffentlichen Schlüssel zu validieren, um zu sehen, welche gültig sind. Um das Hex zu parsen, um diese Werte zu erhalten, gibt es viele Tools, aber siehe unten für eine Möglichkeit, dies zu tun:
0100000001d6ccc50f26df8e894e3411653ab1bfeb2d73c8ddfb956349a3153be852f0997d00000000fd390200483045022100d5d6f8171274750b2ce900cbb6e8110f3b3414607b474bd11f30162b5ebd195b02206ce99cf0296bb3690f278bc0938a7616ee9012d5459cee31b4056a71bd81a60441473044022066597d1177e98e98766551dc92c7f130143af8db83733a5bc02d8fc279c6864b022043144ca986c393d1fb6a7d892444f84235f2c4cf16c0f26681b9d19e21b7f19b414830450221009dd0bb808279283b40b75f75cc2bbd951251ba78cf48676e8009e3a348cde38102202b048321711d84054eec2d4c8e0722d17d1704a9ada1505de6f3a59dff445936414730440220387be39b92918716d3c7f3020a09d145ac12eb0ad5759ea530bd49bf6a8d3ef4022005e949c872c2ad5711b6477cef727c1edd5ef6cad199aea3ec8ff20b0771c33d414d130154210209097c648cfadb3e99bffb0c6f988533635b672c92f20b16453a4bd03ebbe7a82102335c9fbf1276ab297a79acf90a4b2ea6a1c2d73e6e2df94bd4582290e26902d121024c9653527997e36331d831d2229e33b236551033a745c4cf564c3e4db1e3646721026f991aecffecc9c7eaa7f5744bd0fdfc6e88a326601ad015e560c444cba4d0d82102c28b534269e084995c03518a9f10b0d3f38aaf4d91a58b46b19921a9a931d4ee2102e65ad6cc07306e61ad58f5ce670a85b47c8a26e8cb06f5ab9701e42c4da00b11210315df242f0fdead385ea2a5bd4ffdee43404c4c90345c44b11a17363e3d4e6f4421036504a01757aca5130cf6a4e7636295955ce283a44bdf9ce3b6bd3a5523e19ced58aefeffffff01aab40100000000001976a914689b5342b6875ba1df76710dda796f51926ac46c88ac38030800
bitcoin-cli
$ bitcoin-cli decoderawtransaction <raw-tx-above>
{
"txid": "3a91cd0a55270972d12a42156a24c6a318c39fedce942f2ff28114d63fda5aad",
"hash": "3a91cd0a55270972d12a42156a24c6a318c39fedce942f2ff28114d63fda5aad",
"version": 1,
"size": 656,
"vsize": 656,
"weight": 2624,
"locktime": 525112,
"vin": [
{
"txid": "7d99f052e83b15a3496395fbddc8732debbfb13a6511344e898edf260fc5ccd6",
"vout": 0,
"scriptSig": {
"asm": "0 3045022100d5d6f8171274750b2ce900cbb6e8110f3b3414607b474bd11f30162b5ebd195b02206ce99cf0296bb3690f278bc0938a7616ee9012d5459cee31b4056a71bd81a60441 3044022066597d1177e98e98766551dc92c7f130143af8db83733a5bc02d8fc279c6864b022043144ca986c393d1fb6a7d892444f84235f2c4cf16c0f26681b9d19e21b7f19b41 30450221009dd0bb808279283b40b75f75cc2bbd951251ba78cf48676e8009e3a348cde38102202b048321711d84054eec2d4c8e0722d17d1704a9ada1505de6f3a59dff44593641 30440220387be39b92918716d3c7f3020a09d145ac12eb0ad5759ea530bd49bf6a8d3ef4022005e949c872c2ad5711b6477cef727c1edd5ef6cad199aea3ec8ff20b0771c33d41 54210209097c648cfadb3e99bffb0c6f988533635b672c92f20b16453a4bd03ebbe7a82102335c9fbf1276ab297a79acf90a4b2ea6a1c2d73e6e2df94bd4582290e26902d121024c9653527997e36331d831d2229e33b236551033a745c4cf564c3e4db1e3646721026f991aecffecc9c7eaa7f5744bd0fdfc6e88a326601ad015e560c444cba4d0d82102c28b534269e084995c03518a9f10b0d3f38aaf4d91a58b46b19921a9a931d4ee2102e65ad6cc07306e61ad58f5ce670a85b47c8a26e8cb06f5ab9701e42c4da00b11210315df242f0fdead385ea2a5bd4ffdee43404c4c90345c44b11a17363e3d4e6f4421036504a01757aca5130cf6a4e7636295955ce283a44bdf9ce3b6bd3a5523e19ced58ae",
"hex": "00483045022100d5d6f8171274750b2ce900cbb6e8110f3b3414607b474bd11f30162b5ebd195b02206ce99cf0296bb3690f278bc0938a7616ee9012d5459cee31b4056a71bd81a60441473044022066597d1177e98e98766551dc92c7f130143af8db83733a5bc02d8fc279c6864b022043144ca986c393d1fb6a7d892444f84235f2c4cf16c0f26681b9d19e21b7f19b414830450221009dd0bb808279283b40b75f75cc2bbd951251ba78cf48676e8009e3a348cde38102202b048321711d84054eec2d4c8e0722d17d1704a9ada1505de6f3a59dff445936414730440220387be39b92918716d3c7f3020a09d145ac12eb0ad5759ea530bd49bf6a8d3ef4022005e949c872c2ad5711b6477cef727c1edd5ef6cad199aea3ec8ff20b0771c33d414d130154210209097c648cfadb3e99bffb0c6f988533635b672c92f20b16453a4bd03ebbe7a82102335c9fbf1276ab297a79acf90a4b2ea6a1c2d73e6e2df94bd4582290e26902d121024c9653527997e36331d831d2229e33b236551033a745c4cf564c3e4db1e3646721026f991aecffecc9c7eaa7f5744bd0fdfc6e88a326601ad015e560c444cba4d0d82102c28b534269e084995c03518a9f10b0d3f38aaf4d91a58b46b19921a9a931d4ee2102e65ad6cc07306e61ad58f5ce670a85b47c8a26e8cb06f5ab9701e42c4da00b11210315df242f0fdead385ea2a5bd4ffdee43404c4c90345c44b11a17363e3d4e6f4421036504a01757aca5130cf6a4e7636295955ce283a44bdf9ce3b6bd3a5523e19ced58ae"
},
"sequence": 4294967294
}
],
"vout": [
{
"value": 0.00111786,
"n": 0,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 689b5342b6875ba1df76710dda796f51926ac46c OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914689b5342b6875ba1df76710dda796f51926ac46c88ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"mq44eC2t6nt6KbmWGsM1RxjmhvP7ZWVVLq"
]
}
}
]
}
Das scriptSig
Feld der ersten Eingabe enthält die Signaturen und die redeemScript
. Sie können sehen, dass nach dem führenden 4 Signaturen 0
und dann die redeemScript
.
redeemScript
redeemScript
Sie können die zum Beispiel mit einer Bibliothek parsen , die ich geschrieben habe, um Skripte in lesbares ASM zu parsen:
$ npm i --save bscript-parser
$ node
> const bs = require('bscript-parser')
undefined
> bs.parseRawScript('54210209097c648cfadb3e99bffb0c6f988533635b672c92f20b16453a4bd03ebbe7a82102335c9fbf1276ab297a79acf90a4b2ea6a1c2d73e6e2df94bd4582290e26902d121024c9653527997e36331d831d2229e33b236551033a745c4cf564c3e4db1e3646721026f991aecffecc9c7eaa7f5744bd0fdfc6e88a326601ad015e560c444cba4d0d82102c28b534269e084995c03518a9f10b0d3f38aaf4d91a58b46b19921a9a931d4ee2102e65ad6cc07306e61ad58f5ce670a85b47c8a26e8cb06f5ab9701e42c4da00b11210315df242f0fdead385ea2a5bd4ffdee43404c4c90345c44b11a17363e3d4e6f4421036504a01757aca5130cf6a4e7636295955ce283a44bdf9ce3b6bd3a5523e19ced58ae', 'hex')
'OP_4 PUSHDATA(33)[0209097c648cfadb3e99bffb0c6f988533635b672c92f20b16453a4bd03ebbe7a8] PUSHDATA(33)[02335c9fbf1276ab297a79acf90a4b2ea6a1c2d73e6e2df94bd4582290e26902d1] PUSHDATA(33)[024c9653527997e36331d831d2229e33b236551033a745c4cf564c3e4db1e36467] PUSHDATA(33)[026f991aecffecc9c7eaa7f5744bd0fdfc6e88a326601ad015e560c444cba4d0d8] PUSHDATA(33)[02c28b534269e084995c03518a9f10b0d3f38aaf4d91a58b46b19921a9a931d4ee] PUSHDATA(33)[02e65ad6cc07306e61ad58f5ce670a85b47c8a26e8cb06f5ab9701e42c4da00b11] PUSHDATA(33)[0315df242f0fdead385ea2a5bd4ffdee43404c4c90345c44b11a17363e3d4e6f44] PUSHDATA(33)[036504a01757aca5130cf6a4e7636295955ce283a44bdf9ce3b6bd3a5523e19ced] OP_8 OP_CHECKMULTISIG'
Das Einlösungsskript ist ein 4-aus-8-Multisig.