python : erreur de diffusion pour testnet de transaction bitcoin brute


J’essaye de créer une transaction brute et de l’envoyer au testnet. J’utilise des clés testnet et voici la sortie lisible simplifiée de mon script:

clé privée décodée: efd0171bc0e1a973c75d97cdf38ecccfb2e70227a23cfcdadfed8d9dd1f198c6dc

testnet private ky = d0171bc0e1a973c75d97cdf38ecccfb2e70227a23cfcdadfed8d9dd1f198c6dc

python : erreur de diffusion pour testnet de transaction bitcoin brute

Clé publique du récepteur: a4842eed5a2c6fd7b71a238632f268d5831dacc0

out1Script: 76a914a4842eed5a2c6fd7b71a238632f268d5831dacc088ac
out1 longueur du script en octets = 25

Ma clé publique: 2431e05399f655c52f2e7ab6227837c94d450312
out2Script: 76a9142431e05399f655c52f2e7ab6227837c94d45031288ac
out2 longueur du script en octets = 25

Message à signer: f1c7146e665f9b59a6cce31526d85abb2d76859ba13219e9f8cf8e0d51051e45

mon pub k sans 04 partie ajouté: be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881
pub k len: 128 d’une longueur de 64 octets

signatureeeee: 30450221008eaa588a4037a1cd87115853ad28fc215b0ba2cfa7b1327675563bbd971939e302204d245c9092f0c28f3f31ad1bcccb4aef5c7fe718d2a20c39a94358c8b8b
longueur signature: 142

vérifier signatureeeee avec clé de pub sans ’04’ ajouté qui est dérivée directement de la clé privée: True

pub wif ky: 2431e05399f655c52f2e7ab6227837c94d450312
pub ky de pr ky: be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881

sigscript: 4830450221008eaa588a4037a1cd87115853ad28fc215b0ba2cfa7b1327675563bbd971939e302204d245c9092f0c28f3f31ad1bcccb4aef5c7fe718d2a20c39a94358eb8b61845c014104be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881
sigscript lennn: 278
pubky len dans sigscript: 65

Formatage de la transaction réelle:

version ——————- 01000000
transaction utilisée ———- 01
transaction sur Hex —— 245d84ae31c473495d2ba9b3a57b44196d634acf8a8d689960550345422a01fd
indice de sortie de transaction —– 00000000
taille du script de signature ——- 8b
sigScript —————– 4830450221008eaa588a4037a1cd87115853ad28fc215b0ba2cfa7b1327675563bbd971939e302204d245c9092f0c28f3f31ad1bcccb4aef5c7fe718d2a20c39a94358eb8b61845c014104be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881

—– formatage sigscript —-

taille sig —- 48

signature — 30450221008eaa588a4037a1cd87115853ad28fc215b0ba2cfa7b1327675563bbd971939e302204d245c9092f0c28f3f31ad1bcccb4aef5c7fe7fe718d2a20c39a94358eb8b618d2a20c39a94358eb8b618

comment ce script s’applique —– 01

pub ky len — 41

clé de pub– 04be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881

cette clé de pub mesure 65 octets dueto ’04’ ajouté
— fin du formatage sigscript —-

séquence —————— ffffffff
non. hors trxn ———– 02
valeur out1 —————- 00c4090000000000
out1 script len ———– 19
out1 Script ————— 76a914a4842eed5a2c6fd7b71a238632f268d5831dacc088ac
valeur out2 —————- c0cf6a0000000000
out2 script len ———– 19
script out2 ————— 76a9142431e05399f655c52f2e7ab6227837c94d45031288ac
temps de verrouillage —————– 00000000

Transaction de chaîne hexadécimale:

0100000001245d84ae31c473495d2ba9b3a57b44196d634acf8a8d689960550345422a01fd000000008b4830450221008eaa588a4037a1cd87115853ad28fc215b0ba2cfa7b1327675563bbd971939e302204d245c9092f0c28f3f31ad1bcccb4aef5c7fe718d2a20c39a94358eb8b61845c014104be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881ffffffff0200c40900000000001976a914a4842eed5a2c6fd7b71a238632f268d5831dacc088acc0cf6a00000000001976a9142431e05399f655c52f2e7ab6227837c94d45031288ac00000000

J’utilise une transaction en chaîne hexadécimale pour diffuser en utilisant https://live.blockcypher.com/btc-testnet/pushtx/
qui montre cette erreur:

Erreur lors de la validation de la transaction: erreur lors de l’exécution du script pour l’entrée 0 faisant référence à fd012a424503556099688d8acf4a636d19447ba5b3a92b5d4973c431ae845d24 à 0: le script n’a PAS été vérifié avec succès.

L’indice 0 de cette transaction est:

OP_DUP OP_HASH160 2431e05399f655c52f2e7ab6227837c94d450312 OP_EQUALVERIFY OP_CHECKSIG

essayé de diffuser en utilisant: https://testnet.blockexplorer.com/tx/send
qui montre cette erreur:

16: obligatoire-script-verify-flag-failed (Script évalué sans erreur mais terminé avec un élément de pile supérieur faux / vide). Le code: -26

Lorsque je décode la transaction en utilisant: https://live.blockcypher.com/btc-testnet/decodetx/
ça montre:

{
« adresses »: [
« mipLNRZc9oo2fKFzhfwJVNy1t29VsqHRvS »,
« mvWqTmhjEyMkymTm4VMFWLPQhzGwo6RPGM »
],
« block_height »: -1,
« block_index »: -1,
« confirmations »: 0,
« double_spend »: faux,
« frais »: 6499,
« hash »: « 28aa9b738ec668c62280c7d7cb19c1b907ec10427050902609a54264774c77ca »,
« contributions »: [
{
« addresses »: [
« mipLNRZc9oo2fKFzhfwJVNy1t29VsqHRvS »
],
« âge »: 1489541,
« output_index »: 0,
« valeur_sortie »: 7646499,
« prev_hash »: « fd012a424503556099688d8acf4a636d19447ba5b3a92b5d4973c431ae845d24 »,
« Script »: « 4830450221008eaa588a4037a1cd87115853ad28fc215b0ba2cfa7b1327675563bbd971939e302204d245c9092f0c28f3f31ad1bcccb4aef5c7fe718d2a20c39a94358eb8b61845c014104be13acda02dc89ebd1ab87030750b694563c7dac7ebc53b541178e6d04cda33215d712406ff8b705607312d5fea471e9855dbcb963efb63a54e7efeb36382881 »,
« script_type »: « pay-to-pubkey-hash »,
« séquence »: 4294967295
}
],
« les sorties »: [
{
« addresses »: [
« mvWqTmhjEyMkymTm4VMFWLPQhzGwo6RPGM »
],
« script »: « 76a914a4842eed5a2c6fd7b71a238632f268d5831dacc088ac »,
« script_type »: « pay-to-pubkey-hash »,
« valeur »: 640000
},
{
« adresses »: [
« mipLNRZc9oo2fKFzhfwJVNy1t29VsqHRvS »
],
« script »: « 76a9142431e05399f655c52f2e7ab6227837c94d45031288ac »,
« script_type »: « pay-to-pubkey-hash »,
« valeur »: 7000000
}
],
« préférence »: « faible »,
« reçu »: « 2019-05-02T00: 31: 23.148760954Z »,
« relayed_by »: « 54.162.99.128 »,
« taille »: 258,
« total »: 7640000,
« ver »: 1,
« vin_sz »: 1,
« vout_sz »: 2
}

Jusqu’à présent, ce que j’ai trouvé, c’est qu’il y a une sorte de confusion dans la partie sigscript parce que l’adresse à laquelle les pièces sont envoyées est: 2431e05399f655c52f2e7ab6227837c94d450312 qui est  » 04  » ajouté à la clé de pub et appliqué sha256 à cette nouvelle clé, puis ripemd160, mais la signature ne peut que être vérifié avec la pubkey sans la partie 04.

Alors maintenant, je ne sais pas trop comment procéder. Si quelqu’un a besoin du code pour regarder, je suis heureux de le fournir.