4. Transactions

Implementing very basic version of transactions into our blockchain.

시작

  • 간단한 Transaction을 구현해보자.

  • Transaction은 블록에 저장될 기본 거래의 기능을 가지는 데이터이다.

Coinbase

  • Miner로부터만 생성되는 비트코인 tx의 tx타입이다.

  • 새로운 블록의 첫 tx이다.

  • 인풋이 없고 아웃풋만 있다.

  • 아웃풋은 miner가 받는 리워드이다.

아래 코드에서는 coinbase tx가 블록마다 생성되어 있지 않고 블록체인의 첫 블록에서만 존재한다.

1개의 블록체인, 블록마다 1개의 tx만 존재. (앞으로 수정될 것으로 보인다. )

transaction.go

  • tx의 인풋과 아웃풋을 정의하고 tx의 생성과 검증에 대한 함수들을 구현한다.

  • TxInput

    • ID : input으로 사용할 tx의 id

    • Out : 해당 tx에서 output의 index

    • Sig : 소유자의 주소 (코인을 보내는 사람, 인풋의 소유자)

  • TxOutput

    • Value : 코인의 값, 크기

    • PubKey : 받을 사람의 주소

blockchain.go

  • 기존에 Data로 표현되었던 블록 내부의 값을 Transactions로 바꿨다.

  • 사용 가능한 Tx, UTXO 찾는 등의 함수를 추가했다.

나머지 코드는 기존의 코드의 Data부분을 Trasaction으로 바꾼 것뿐이다. github을 참고하자.

예시 설명

Transaction 설명
  • 마지막 블록에 대한 설명

    • Taeha 가 JY에게 50코인을 보내는 것에 대한 설명이다.

    • ID : 1a8dd71… 인 인풋은 바로 아래 블록의 ID : 1a8dd71…로 같은 Transaction의 Out 0, 0번째 인덱스의 아웃풋을 의미.

    • ID : 710d7bd… 인 인풋은 두칸 아래 블록의 ID : 710d7bd…로 같은 Transaction의 Out 1, 1번째 인덱스의 아웃풋을 의미.

    • 이 2개의 아웃풋을 사용해서 JY에게 보낼 50 UTXO와 Taeha에게 거슬러줄 20 UTXO를 생성한다는 의미이다.

Last updated

Was this helpful?