블록체인/비트코인 / / 2023. 4. 7. 22:53

TXID (트랜잭션 ID)


 글은 비트코인의 작동 원리를 이해하기 쉽게 설명해 놓은 해외 사이트 Learn me a bitcoin 내에 있는 TXID 페이지를 번역한 글입니다읽은 것을 개인적으로 이해하기 쉽게 정리하여 작성한 글이다 보니어색한 부분이 있을 수도 있습니다원문을 읽고자 하시는 분은 위의 링크를 참조해 주세요😀


 

TXID ?

  • 트랜잭션 데이터의 해시 값입니다.

TXID(트랜잭션 ID)는 비트코인 트랜잭션 식별을 위한 숫자입니다. (ID 역할)
TXID는 항상 32 Bytes입니다. (16진수 값으로 64글자)

 

Example

 

TXID는 어떻게 만들어지나요?

  • 트랜잭션 데이터를 SHA256🔑 해시 함수를 2번 실행하여 얻을 수 있습니다.

0100000001c997a5e56e104102fa209c6a852dd90660a20b2d9c352423edce25857fcd3704000000004847304402204e45e16932b8af514961a1d3a1a25fdf3f4f7732e9d624c6c61548ab5fb8cd410220181522ec8eca07de4860a4acdd12909d831cc56cbbac4622082221a8768d1d0901ffffffff0200ca9a3b00000000434104ae1a62fe09c5f51b13905f07f06b99a2f7159b2225f374cd378d71302fa28414e7aab37397f554a7df5f142c21c1b7303b8a0626f1baded5c72a704f7e6cd84cac00286bee0000000043410411db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5cb2e0eaddfb84ccf9744464f82e160bfa9b8b64f9d4c03f999b8643f656b412a3ac00000000

= 169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4

블록체인에서 해당 트랜잭션을 찾기를 원한다면, Byte order를 Little endian으로 변경해야 합니다! (Swap Endian Link)

Little endian으로 스왑 하면 아래와 같이 결과가 나옵니다.


= f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16

해당 TXID를 Blockchain Explorer에서 검색해보면(Click), 해당 트랜잭션 정보가 잘 나오는 것을 확인할 수 있습니다. 😁

 

블록체인에서의 TXID 검색

만약 당신이 어떤 트랜잭션 데이터를 해시하고, 블록체인에서 해당 TXID를 검색하고 싶다면, 당신은 그것을 역순의 바이트(Reverse byte order)로 검색해야 합니다.

 

  • TXID (원래 값):
    169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4
  • TXID (검색할 때):
    f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16

 

Why?

왜냐하면, 비트코인이기 때문입니다. (Because welcome to Bitcoin.) 😁

"과거의 사고로 인해, 비트코인 코어에서 사용하는 트랜잭션 및 블록 해시는 바이트 반전(byte-reversed)되어 사용됩니다. 왜 그런지 정확히 모르겠지만, openssl bignum을 사용하여 해시를 저장하고 숫자로 출력하는 것과 관련이 있을 수 있습니다." - 블라디미르 반 더 라안(블록체인 기술인 비트코인 코어의 개발자) -


다시 말해, 이것은 비트코인 초기 개발 단계에서의 작은 실수였지만, 현재는 표준이 된 것입니다. 😁

 

TXID는 어디서 사용되나요?

1. 블록체인 검색

  • 만약 당신이 방금 트랜잭션을 생성한다면, 당신은 블록체인에서 TXID를 사용하여 트랜잭션을 찾을 수 있습니다.
bitcoin-cli getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098
  • Bitcoin Core Wallet에서의 TXID 검색

비트코인 지갑에서 TXID를 받았다면, 이 값은 이미 "검색이 가능한" 형식(역 바이트 순서)일 것입니다.

2. output 찾아오기

 

기존 output을 새로운 트랜잭션의 input으로 사용하려는 경우 TXID를 사용할 수 있습니다.
기존 output이 생성된 TXID로 해당 트랜잭션을 찾아온 뒤, VOUT로 사용하려는 output을 찾아서 해당 output을 사용합니다.
TXID는 트랜잭션의 고유한 식별자(unique identifier)이기 때문입니다.

 

SHA256🔑 과 같은 해시 함수는 모든 데이터 문자열을 가져와 항상 짧지만 고유한 결과를 내놓기 때문에 식별 번호를 생성하는 데 적합합니다.

 

기타

 

⚠️ 코인베이스 트랜잭션(Coinbase transaction)이 똑같은 TXID를 가졌던 적이 있습니다.

두 개의 "다른" 코인베이스 트랜잭션의 TXID가 동일한 상황이 발생했었습니다.

이러한 코인베이스 트랜잭션은 서로 다른 두 블록에서 신규 블록 보상(Block reward)를 청구할 때, 동일한 주소를 사용했습니다. 이 말은 즉, 그 2개 트랜잭션의 데이터가 같았기 때문에 TXID도 마찬가지로 같았던 것입니다. (SHA256 해시 함수에 넣는 값 자체가 같았기 때문에, 마찬가지로 결과도 동일했던 것이죠)

아래에서 사례를 살펴보겠습니다.


Block 91,722 : 00000000000271a2dc26e7667f8419f2e15416dc6955e5a6c6cdf3f2574dd08e
Block 91,880 : 00000000000743f190a18c5577a3c2d2a1f610ae9601ac046a38084ccb7cd721


Block 91,812: 00000000000af0aed4792b1acee3d966af36cf5def14935db8de83d6f9306f2f
Block 91,842: 00000000000a4d0a398161ffc163c503763b1f4360639393e0e4c8e300e0caec


해결 방법

  • 처음에 BIP 30은 블록이 이미 존재하는 TXID를 포함하지 못하도록 하는 규칙을 도입했습니다. 나중에 BIP 34에서는 코인베이스 트랜잭션이 트랜잭션 데이터에 블록의 높이값을 포함하도록 하여 코인베이스 트랜잭션이 동일하지 않도록 하였습니다.

 

'블록체인 > 비트코인' 카테고리의 다른 글

VOUT  (0) 2023.04.07
코인베이스 트랜잭션(Coinbase transaction)  (0) 2023.04.07
블록 해시(Block hash)  (0) 2023.04.07
넌스 (Nonce)  (0) 2023.04.07
비츠(Bits)  (0) 2023.04.07
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유