[블록체인] 트랜잭션, 합의 알고리즘, 채굴
블록체인 구조
블록체인을 이루고 있는 블록은 헤더(Header)와 바디(Body)로 나눠져 있습니다. 헤더에는 이 블록을 누가, 언제 생성한 블록인지, 이 블록의 크기와 총 코인 전송량은 얼마인지 같은 해당 블록 자체를 설명하는 데이터입니다. 블록 헤더 외 부분에는 블록의 크기, 거래(트랜잭션) 리스트가 있습니다. 거래 정보를 담은 부분을 바디라고 칭하며, 블록 크기의 대부분을 차지합니다.
블록의 헤더
1) 버전 (Version)
2) 이전 블록 헤더 해시 (Previous block hash)
블록들을 체인으로 묶어주는 중요한 개념입니다. 예를 들어, 101번째 블록을 채굴하려는 채굴자(Node)가 100번째 블록을 전달받았을 때, 해당 블록의 헤더 데이터를 두 번 해시해서 101번째 블록에 담는 것입니다.
3) 머클 루트 (Merkle tree root)
머클 루트는 머클 트리의 최상단에 위치한 데이터입니다. 머클 트리는 자식 노드의 데이터를 암호학적 해시로 계산한 값을 트리로 만든 데이터로 블록 단위로 빠르게 데이터를 검증하고 이상 유무를 확인할 수 있습니다.
각 하위 데이터를 2개씩 묶어서 해싱하고, 해싱한 값들을 다시 2개씩 묶어 해싱하게 됩니다. 계속 해싱하면 마지막에 1개의 해시값이 남는데 이 해시값이 머클 루트입니다. 블록에 있는 수많은 거래기록은 모두 해싱되어 머클루트와 이어지게 됩니다. 만약 누군가 기록된 거래 중 무언가를 바꾸게 된다면 우리는 변경된 머클루트의 해시값을 통해서 블록 내 데이터 위변조가 이뤄진 것을 알수 있습니다.
4) 타임스탬프 (Timestamp)
해당 블록의 채굴 시각 기록
5) 난이도 목표 (Diffiulty)
블록 생성은 흔히 '채굴한다'고 합니다. 블록체인은 블록마다 생성된 블록의 높이에 따라 자동으로 난이도 목표를 달리 설정해 채굴되는 속도를 일정하게 유지합니다.
6) 논스 (Nonce)
채굴은 앞서 설명한 5가지 데이터와 논스를 조합해 목표에서 정한 값보다 작은 해시값을 찾는 것입니다. 5가지 데이터는 값이 고정되어 변경할 수 없고, 오직 논스만이 값을 바꿀 수 있어 변수값을 적용해가며 목표값보다 낮은 해시값을 찾아야합니다. 여기서 변수값이 바로 논스(Nonce)입니다.
블록체인의 트랜잭션
트랜잭션(Transaction)이란, 블록체인이라는 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위라고 할 수 있습니다. 블록체인 네트워크는 하나의 커다란 데이터베이스로, 블록체인 내 트랜잭션 역시 다른 데이터베이스에서 트랜잭션의 안전성을 보장하기 위한 성질인 ACID를 가지고 있습니다.
합의 알고리즘
블록체인 합의 알고리즘은 블록체인에서 다수의 노드가 동일한 블록체인 데이터를 유지하고 동기화하기 위해 사용됩니다.
PoW (작업증명 방식, Proof of Work)
1. 네트워크에 참여하는 모든 노드는 블록 생성의 권한을 가집니다. 블록은 거래 내역들을 담고 있기 때문에 블록을 생성한다는 것은 해당 블록 내에 기록된 거래 내역들이 입증되었음을 의미합니다.
2. 블록을 생성하기 위해 특정 난이도의 해시 값을 구하는 수학적 연산을 수행해야 합니다. 해당 연산은 단순하지만 많은 처리 능력을 필요로 하며 해시 값을 찾는데 성공한 노드는 블록을 생성하게 됩니다.
작업증명에는 높은 컴퓨팅 파워와 막대한 양의 전기에너지가 필요하기 때문에 이에 대한 보상으로 암호화폐와 작업 증명이 이루어진 블록에 기록되어 있는 거래 수수료를 지급받게 됩니다.
또한, 블록생성은 노드 단위에서 개별적, 자율적으로 진행되기 때문에 작업증명의 과정에 있어서 두 개 이상의 노드가 거의 동시에 블록을 생성하는 충돌(=fork)이 발생할 수 있습니다. 이를 해결하기 위해서 충돌이 발생했을 때, 더 많은 작업증명이 수행되어 길이가 더 긴 블록을 선택하는 것입니다.
PoS (지분증명 방식, Proof of Stack)
PoS에서는 노드들이 블록체인에서 지분을 가지고, 이를 사용하여 블록체인을 생성합니다. 지분이 높을수록 블록을 생성할 확률이 높아지며, 이를 통해 블록체인을 유지합니다.
PoS의 가장 큰 장점은 에너지 소모가 적다는 것입니다. PoS는 컴퓨팅 파워보다 지분을 기준으로 블록 생성에 참여하므로 탄소배출량을 저감할 수 있습니다.
PoS의 단점으로 ‘Nothing at Stake’ 라는 문제가 발생할 가능성이 있습니다. 즉, 모든 노드들이 제한없이 여러 블록에 자신의 지분을 증명할 수 있기 때문에 많은 지분을 가진 노드가 거짓으로 지분을 증명하여 공격할 수 있다는 것입니다. 또한 많은 지분을 가질수록 더 많은 권한을 얻게 되므로, ‘탈중앙화’라는 블록체인의 핵심 가치에 훼손될 수 있습니다.
DPoS (위임 지분 증명방식)
DPoS는 의사결정권을 위임한다는 개념입니다. 토큰을 가진 사람들의 투표를 통해 득표순으로 정해진 숫자의 검증자를 선출하고, 선출된 검증자가 토큰 홀더들을 대변해 블록을 생성하고 검증할 수 있도록 권한을 위임합니다.
DPoS는 대표로 선출된 노드들의 3분의 2이상이 동의하면 블록생성이 완료하는 방식으로, PoW나 PoS보다 블록생성과 검증에 동원되는 검증인 숫자를 줄여 속도와 효율성이 높습니다. 다만 DPoS 역시 ‘탈중앙화’라는 블록체인의 핵심 가치에 훼손될 수 있습니다.
채굴
채굴 또는 마이닝(mining)이란 암호화폐의 거래내역을 기록한 블록을 생성하고 그 대가로 암호화폐를 얻는 행위입니다.