testnet : Création d'une transaction Bitcoin signée en Java


Décodage rapide du tx  :

inversé=00000000.:: hex-poussoir 47 (décimal 71) octets en tant que données 30 :: étiquette de type indiquant SEQUENCE, commencer sigscript 44 :: longueur de R + S 02 :: étiquette de type indiquant INTEGER 20 :: ce est SIG R 51646B77924F6BB7 : C411C5AA890110AB : 55DB8812B8998FE2 : 4C8BDCE39795EBD6 02 ::: ceci est SIG S 0BC4DE18FD5524AD : 8B946EE57604424E : 2B943EF2A14FC719 : 9A7853DDA0743CBE 01 :: cette fin à la signature ECDSA (structure ASN1-DER) minimum et les contraintes de taille maximale – ok scriptsig commence toujours par 0x30 – ok la longueur 136 caractères est inférieure à la longueur réelle du sig (140 caractères) – ok (hex 0x44, décimal 68, 136 caractères) longueur de la coordonnée R (64) >= 0 – ok longueur de la coordonnée S (64) >= 0 – ok La valeur S est dans les limites du scriptsig – ok Assurez-vous que la longueur R & S couvre toute la signature – ok La valeur S doit être inférieure à N/2 – ok strictement vérifier la signature codée DER – ok 41 :: hex poussée 41 (décimal 65) octets sous forme de données 04 :: 4EE2515AEDABA5F8 : 7700BBE0138F7457 : BAA58E89A5315382 3AB29632E6C3C804 : ECAAB59136565123 : 39792479A1B898B7 : E5DC31F075FF8660 * Ceci termine la clé publique, correspondant Bitcoin adresse est  :, hex=01.:::: D5C3C9C25E35B382 667FC6E6 88 :::

La transaction est donc correcte et la signature est correctement assemblée. Il suit également les règles de « vérification de signature stricte ». Le tx essaie de passer de à. J’ai donc vérifié la signature par rapport au double hachage du tx (voir le fameux parcours de la transaction de pizza  : comment fonctionne l’algorithme de vérification ECDSA pendant la transaction ?)  :

testnet : Création d'une transaction Bitcoin signée en Java

txt est  :

txt  :

et double hachage (les valeurs binaires, d’où une première conversion  ! )

sed ‘s/]\{2\}/\\x&/.hex openssl dgst -binary -sha256 ssha256.hex openssl dgst -binary -sha256 dsha256.hex vidage hexadécimal -C dsha256.hex

Donc le dsha256 est sous forme lisible :

J’utilise openssl pour vérifier le fichier hexadécimal à double hachage (dsha256.hex), avec la signature et une clé « pem » (besoin de convertir pubkey de hex en pem), j’obtiens toujours une erreur  :

openssl pkeyutl -verify -pubin -inkey pubkey.hex -in dsha256.hex

alors qu’en parcourant l’exemple de la pizza, il renvoie une « Signature vérifiée avec succès ».