A TXID (Transaction ID) is basically an identification number for a bitcoin transaction.
Bạn đang xem: TxidExamples:
A TXID is always 32 bytes (64 characters) and hexadecimal.
Creating a TXID
You get a TXID by hashing transaction data through SHA256 twice.
Searching for TXIDs in the blockchain.If you’ve just hashed some transaction data and want to search for a TXID in the blockchain, you have to search for it in reverse byte order.
txid (original): 169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4txid (searching): f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16Why?Because welcome to Bitcoin.
Due to historical accident, the tx and block hashes that bitcoin core uses are byte-reversed. I’m not entirely sure why. May be something like using openssl bignum to store hashes or something like that, then printing them as a number. – Wladimir van der Laan (Bitcoin Core developer)
In other words, this was a slight oversight in the early development of Bitcoin that has now become a standard.
Where are TXIDs used?
1. Searching the blockchain.
If you’ve just made a transaction, you can use the TXID to find it in the blockchain. For example:
bitcoin-cli getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098
2. Spending outputs.
You use a TXID when you want to use an existing output as an input in a new transaction.
Because after all, a TXID is a unique identifier1 for a transaction.
Why hash twice? Why not once?
Things often get hashed twice in bitcoin for super-extra security.
SHA-256(SHA-256(x)) was proposed by Ferguson and Schneier in their excellent book “Practical Cryptography” (later updated by Ferguson, Schneier, and Kohno and renamed “Cryptography Engineering”) as a way to make SHA-256 invulnerable to “length-extension” attack. They called it “SHA-256d”. – https://crypto.stackexchange.com/questions/779/hashing-or-encrypting-twice-to-increase-security/884#884
Hash functions like SHA256 are great for creating identification numbers, because they will take in any string of data and always spit out a short yet unique result.
Coinbase transactions having the same TXID.
There has been a situation where two “different” coinbase transactions had the same TXID.
These coinbase transactions used the same address when claiming the block reward from two different blocks. This meant that their transaction data was the same, and so the TXIDs were the same also. Here are the transactions and the blocks they were included in:e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb468d5d27987d2a3dfc724e359870c6644b40e497bdc0589a033220fe15429d88599The Fix.
Initially, BIP 30 introduced a rule that prevented blocks from containing a TXID that already exists. Later, BIP 34 required coinbase transactions to include the height of the block the were mining in to their transaction data, so that coinbase transactions could be different.Links