블록체인 그래서 그게 대체뭔데.. -2편

이진중·2022년 6월 20일
0

본 포스팅은 블록체인 이론과 응용-홍원기 교수의 강의를 보고 만든 포스팅입니다.

블록체인 그래서 그게 대체뭔데.. 1편에서 소개한 암호화폐의 기술적 심화를 다룹니다.


비트코인에서 거래

비트코인에서의 거래를 단순하게 말하면 자신이 가지고 있는 비트코인의 "소유권"을 받는사람에게 이전하는 소유권이전 과정이다.


거래에서는 input과 output이 존재한다.

input은 A(보내는사람)가 소유하고있는(즉. A의 publicKey로 잠겨있는) 비트코인이고, output은 B(받는사람)으로 소유권이 이전된 비트코인이다.

UTXO(Unspent Trasaction Output)

위에 input과 output을 설명할때 비트코인이라는 표현을 썻지만 실제로는 UTXO라는 표현을 쓰는것이 맞다.
사용되지 않은 거래output이라는 뜻이다.

비트코인에서는 잔액이라는 개념이 존재하지 않는다.

헷갈리기 쉬운 개념인데. 비트코인 소프트웨어에 뜨는 잔액은 비트코인 블록들을 조사해서 자신의 공개키로 잠겨있는 UTXO를 모두 더한값이다. publickey에 balance 변수가 존재해서 10BTC이렇게 코딩되어있는게 아니라는 것이다.


데이터구조(TX)

  • input Counter // 인풋의 개수
  • inputs
  • output Counter // 아웃풋의 개수
  • outputs
  • Locktimes // 거래 지연속도

데이터구조(output)

  • Amount
  • Locking-Script // 아웃풋을 사용하기 위한 조건
  • Locking-Script-size

MerkleTree

블록체인은 데이터량이 매우크다. 모든정보를 저장하고있기때문이다. 이 자료구조는 그 많은 정보를 효율적으로 관리하기 위한 것이다.


거래를 하나의 해시값으로 관리하는것이다.

거래 두개의 해시값을 더해서 하나의 해시값을 만들고
또 그렇게생긴 해시값 두개를 더해서 하나의 해시값을 만든다.
이렇게 트리형식으로 해쉬값을 연결하고, 트리의 루트값을 MerkleRoot로 지정하고 블록헤더에 저장한다.

이렇게 저장된 값은 천개의 거래중 한개의 거래가 수정되더라도 해시함수의 기본적인 원리에 따라 완전히 새로운값으로 바뀌게 되므로 수정을 바로 알아챌수 있다.


데이터구조(블록)

  1. Header
  • PrevHash // 이전블록의 해시값, 블록을 체인처럼 연결하는데 매우 중요한역할을 한다.
  • MerkleRoot
  • TimeStamp // 해당블록의 대략적인 생성시간, 1/1/1970(UTC)이후 경과시간을 초로 환산
  • DifficultyTarget // 난이도값
  • Nonce // 목표하는 값보다 작은 해시값을 만들어 내는 입력값 이값을 맞추기위해서 컴퓨터는 많은 연산을 한다.
  1. Body
  • TX의 집합

참고

https://steemit.com/kr/@yahweh87/3
https://mingrammer.com/building-blockchain-in-go-part-4/

0개의 댓글