Firma di una tx

Aspetti di sicurezza su seed, mnemonic, bip39, chiavi private, paperwallet

Moderator: alex2sats

Post Reply
guillaume
Posts: 2
Joined: 10 Mar 2021, 07:50

Firma di una tx

Post by guillaume »

Riporto consigli ottenuti riguardo la procedura di firma di una transazione. In questo caso ad esempio p2pkh.

Per una P2PKH, con SIGHASH_ALL:
  • Ottenere una transaction data con scriptSig vuoto.
  • Utilizzare lo scriptPubKey della UTXO di riferimento come placeholder dello scriptSig.
  • Appendere SIGHASH 01000000 (SIGHASH_ALL) alla transaction data.
    1. Indica quali parti della transazione sono state firmate, di default è SIGHASH_ALL.
  • Fare il doppio SHA256 della transaction data.
  • Firmare la transaction data con la chiave privata.
  • Appendere 01 (se si usa SIGHASH_ALL) alla firma.
  • Inserire la firma e la chiave pubblica nella transaction data.
  • Togliere 01000000 dalla transaction data. (In Coda)
  • Inviare la transazione
https://github.com/bitcoin/bitcoin/blob ... gn.cpp#L98

per fare un esempio nella tx:

0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2

ho il seguente input

Code: Select all

"vin": [
    {
      "txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18",
      "vout": 0,
      "scriptSig": {
        "asm": "3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813[ALL] 0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",
        "hex": "483045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e381301410484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf"
      },
      "sequence": 4294967295
    }
  ],
Qui hai la firma e la chiave pubblica compressa. [ALL] è proprio SIGHASH_ALL. La firma iniza con 3044/3045, e la chiave pubblica 03/02

Stiamo usando chiavi pubbliche non compresse, per questo la tua inizia con 04. Cosa deprecata.
Post Reply