안녕하세요 돌아온 블록체인 1타 강의 시간입니다.(그렇다고 하자고~)
오늘은 블록체인에서 사용하는 블록 구성요소에 대해서 알아보도록 하겠습니다.
블록이 생성되는데 필요한 요소들에 대해서 설명하는 것인데, 아래 표는 블록헤더의 구성요소들을 정리한 것입니다.
노란색으로 강조한 요소들이 바로 채굴에 필요한 값들이여서 이 부분 위주로 설명 드리겠습니다.
버전은 말 그대로 이 블록의 프로토콜 버전을 뜻합니다.
그리고 이전 블록의 해시값은 블록이 생성되고 난 후 그 값을 해시한 값인데, 이것을 통해서 블록체인이 형성이 됩니다. 앞뒤 블록들이 서로 연결이 되는거죠. 해시는 원본데이터가 1bit만 바뀌여도 계산 값이 완전히 달라지기 때문에, 이를 통해서 블록들의 무결성을 보존할 수 있는것이죠. 거래를 위조하려면 현재블록부터 이전블록 전체를 모든 해시값을 다 찾아서 바꿔야되는데, 해시연산은 전수조사 방법으로밖에 찾을 수 없기때문에 매우 힘든 일이죠(양자컴퓨터 나오면 가능할지도??)
머클트리(루트)는 그림과 같이 Binart tree 형태로서, 블록에 포함될 트랜잭션 전체를 넣기에는 블록 사이즈가 작기에, 트랜잭션들을 해시하여 최종 루트값만 포함시킵니다. 각 transaction을 mempool이라는 미 승인 거래 집합소에서 받아와서 해시하고, 그 해시값을 다시 다른 해시값과 해시하여 최종적으로 root값을 얻는 방식입니다. 이는 무결성을 위해 사용되는데 root값이 해시값이기에 자식 해시값들 중 한가지만 변하여도 root값이 달라지기에 무결성을 최소한의 용량으로 확인하기가 용이합니다.
TimeStamp는 블록이 기록된 시간입니다. 이를 통해서 이중지불 문제 등 거래 시간을 파악하고 유추하여 이중거래인지를 노드들끼리 기록을 비교하여 확인할 수 있습니다.
Difficulty Target은 매번 달라집니다. 비트코인의 경우 10분당 1개의 블록이 생성되게끔 만들어졌기에, 평균 10분을 맞추도록 난이도가 주어집니다.
Nonce는 채굴자가 임의로 수정할 수 있는 공간 중 하나입니다. 앞에 말씀드린 값들은 모두 주어지거나 계산을하여 나오는 결과값이기에 채굴자가 임의로 값을 변경하면서 목표해시값을 찾을 수 있는 것은 논스가 유일합니다(현재는 extranoce 개념이 추가되어 nonce외에도 수정할 수 있는 공간이 존재) 그래서 채굴을 nonce값을 찾는거다 라고 종종 말들을 합니다.
오늘은 짧게 요 정도만 공부해보도록 하겠습니다. 다음 시간에는 암호화폐와 암호화폐 지갑에 대해서 알아보도록 하겠습니다~
오늘의 용어사전
1. Transaction: database의 상태를 변화시키는 작업의 모음이라고 할 수 있다. 블록체인 네트워크에서 data는 트랜잭션 단위로 생성되고 트랜잭션은 atomicity(원자성), consistency(일관성), isolation(격리성), durability(지속성)에 의해서, 하나의 묶음 처리에서 실행이 중단된 경우 처음부터 다시 실행하는 Rollback을, 실행을 마치면 commit을 한다.
트랜잭션에는 input과 output이 존재한다. Input에는 돈이 얼마나 있는지, 실제로 가지고 있는지를 보여주고, 보낼 값을 넣는다. UTXO를 개인키로 서명하여 전송하도록 지정한다. output에는 보내고 난 이후의 잔액과 보낸 금액을 출력한다.
2. Mempool: 네트워크 내 참여자들은 모두 Memory pool을 가지고 있다. 즉 모두 개별적인 멤풀을 가지고 있는 것이다. 멤풀은 단지 트랜잭션을 위한 집결지이다. 즉 거래들이 블록에 들어가기 전 모이는 곳이라고 생각하면 된다.
'Blockchain' 카테고리의 다른 글
암호화폐 거래소 전격 비교! (7) | 2024.09.09 |
---|---|
암호화폐와 지갑(bitcoin core and metamask) (3) | 2024.09.04 |
Blockchain의 기술적 요소와 합의 알고리즘 (4) | 2024.08.31 |
Blockchian network 세대 별 특징과 종류에 대해 알아보자! (6) | 2024.08.30 |
Blockchian의 기본 개념 (0) | 2024.08.29 |