이 글은 어디까지나 다양한 블록체인 네트워크의 기술적인 측면을 비교한 글입니다. 코인 자체의 가치나 특정 코인과 관련한 추천, 가치 추정은 일절 진행하지 않습니다.
무지막지한 확률로 밀어붙여, 합의를 깰 수 없게 만드는 메커니즘이자 분산 저장 시스템, 그 최초의 시작이 되는 것이 Bitcoin 프로젝트이다. 이를 내가 비교적 이해하고 있는 Ethereum, Tron network와 비교해서 설명하고자 한다!
1. Hierarchy
Bitcoin의 개별적인 full 노드 사이에 그 어떠한 "위계"도 존재하지 않는다. 풀 노드면 풀 노드일 뿐, 다른 노드에 비해 특수한 권한을 가진다 거나한 일은 없다. 아쉽게도 수업시간에는 비교대상이 없었지만, Tron, TRC20으로 대표되는 네트워크에서는 SR(Super Representative)라는, 풀노드 중에서도 투표를 받아 블록을 찍어낼 수 있는 유일한 권한을 가진 몇 개의 대표노드가 존재한다. 따라서 이런 면을 살펴보면 비트코인은 더 탈중앙화가 되어 있다는 이야기이기도 하다. Ethereum도 분명 validator 노드라는 다른 역할을 가지는 특수 노드가 있다.
차이점을 정리하자면 이렇다:
| 네트워크 | 위계 존재 여부 | 왜? |
| Bitcoin | X | full node사이에 위계 없음, 모두 같은 역할 |
| Ethereum | △ | full node <-> validator는 다른 역할을 수행하나 아주 큰 파워 차이는 없음 |
| Tron | O | full -> SR candidate -> SR partner -> SR 사이의 매우 강한 위계 질서 |
왜 이렇게 되는지 알고 싶다면, 채굴 메커니즘을 들여다 보면 된다.
2. Mining
채굴 메커니즘은 네트워크에서 기본적으로 진행하는
Bitcoin의 채굴 메커니즘은 흔히들 아는 PoW(Proof-of-Work)로 이루어진다. 자세한 사항은 여기에 쉬운 말로 쓰여 있다.
[blockchain, Bitcoin] PoW(Proof-of-Work) 작업 증명 채굴 메커니즘(원제: 암호화 해시 함수를 기준으로 본
대학교 1학년에 들은 논리와 사회적 글쓰기 시간에 적었던 글의 원본과 지금의 내가 내용을 추가한 수정본을 올린다. 수정본은 이미 어느 정도 관련된 지식이 있는 사람들에게 배포를 하기 위해
passingprogram.tistory.com
Ethereum의 채굴 메커니즘은 PoS(Proof-of-Stake)다. 둘은 다른 점이 매우 많지만, 적어도 한 가지, 네트워크에 해를 주는 행동을 하면 불이익이 되도록 설계되어있다는 점에서 동일하다. 위의 글에서도 설명했지만 Bitcoin의 채굴을 방해하려 할 때 들어가는 자원을 그냥 Bitcoin을 캐는데 쓰는 게 더 이득이다. 그렇지 않고 다른 것에 낭비하는 것 자체가 굉장한 타격이 된다. 요즘에는 Difficulty가 많이 올랐기 때문에 컴퓨터 한 두 개로 캐는 건 어림도 없다. 그래서 SHA256을 전담하기 위한 ASIC(진짜 SHA256만 돌릴 수 있음)까지 병렬로 동원해서 공장이나 다름 없는 규모로 블록을 채굴한다. 근데 이걸 네트워크 방해하겠다고 쓴다? 이득은 없고 손해만 가득한 일이다.(전기세는? ASIC 사는데 들어간 돈은?) 네트워크 자체에 특별한 페널티가 없음에도 불구, 아주 큰 손해를 보는 것이다.
PoS는 이걸 좀 더 스마트하게 생각한 것이다. "ㅇㅋ, 손해를 보게 하면 되지?" 이런 쪽으로 머리를 잘 굴렸다고 생각한다. validator는 Ethereum에서 ETH 생산을 하는 특수한 full node이다. 이들은 블럭을 채굴하기도 전에, 미리 32 ETH를 Stake 해야 한다. (아마 현실 돈으로 약 14억원 가량일 것이다.) validator로 참여한 후에 이 ETH는 맘대로 이동할 수도, 쓸 수도 없다. 마치 아주 강력한 예금마냥 묶인다. 이러한 작업 자체를 스테이킹(Stake)이라고 한다. 여러분이 validator가 되어야지만 블럭을 생산할 (혹은 네트워크를 망칠) 수 있다. 이 상태에서 만약 제대로 일을 안 하는 방식으로 반항하거나(Inactivity leak), 일부러 말이 안 되는 일을 해서 네트워크를 망치려고 한다면(Slashing) 반드시 처벌을 받게 되어있고, 그건 다시 validator를 그만두었을 때 받을 수 있는 staking 된 ETH를 삭감하는 방식으로 이루어진다. (Slashing에 해당하는) 능동적으로 네트워크를 망치는 일을 한다면, validator의 지위까지 박탈되므로 더 이상 네트워크를 망칠 수도 없다!
Tron network는 DPoS(Delegated Proof-of-Stake)를 이용한 합의 메커니즘을 이용한다. 이것에 관해서는 특별히 다른 글을 적을 계획이라, 일단 여기서는 간단히 투표를 통해서 SR이라 불리는 특별한 full node를 선출하고, 이 노드들만이 제대로 블록을 생산할 수 있다는 사실 정도만 알고 있으면 된다. 이 "투표"는 무작정 내가 Tron을 Staking한다고 얻을 수 있는 것이 아니다. 물론 Tron을 Staking 하는 작업은 그 어떤 개인이든 진행할 수 있고, 그것에 따라서 투표권을 행사할 수 있는 것도 맞다. 그러나 SR이 되기 위해서는 네트워크의 다수의 투표가 필요하고, 이들은 결코 자신들에게 이득을 주지 않는 SR에게 투표하지 않기 때문에 이 투표를 받고, 이를 유지하기 위해서라도 열심히 일을 하게 된다.
정리하면 이렇다.
| 네트워크 | 채굴 메커니즘 | 특징 | 명시적인 페널티 | 페널티 종류 |
| Bitcoin | PoW | full node는 전부 채굴을 진행할 수 있고(원한다면) 개인의 해시 파워에 따라서 보수가 달라짐 | X | - |
| Ethereum | PoS | validator가 채굴을 진행하고, 떠나거나 네트워크를 망치려하면 페널티가 존재 | O | Slashing, Inactivity leak |
| Tron | DPoS | SR은 되기 위해서 다수의 투표가 필요하고, 떠날시에 PoW와 동일한 정도의 실물 손해를 입음 | X | - |
3. Consensus
합의 메커니즘은 특별하게 이름이 붙여져있지 않는 경우도 더러 있지만, 그래도 가져와 봤다. Blockchain은 기본적으로 분산 저장 시스템과 같다고 이야기를 했다. 그렇다면 뭐가 시간순서적으로 "올바른지", 혹시라도 fork(서로 다른 2개의 블럭이 둘 다 말이 되고 이전 블록과 연결이 가능함)가 생긴다면 어떤 것을 우선으로 할 건지에 관해서도 이야기할 필요가 있다.
3-1. Bitcoin's consensus(Lognest Chain)
우선 Bitcoin부터 시작을 해보자. Bitcoin은 "각자 알아서 잘" PoW를 이용해서 채굴을 진행한다. 따라서 두 곳 이상에서, 거의 동시에 블럭이 채굴되는 시나리오는 충분히 일어날 법한 일이다. 그렇다면 2개의 블록 중 어느 것을 제대로 된 것으로 인정할 것인가? 사실 이건 거의 다음 블록의 확률에 맡기는 경향이 강하다.
예를 들어보자 :
A라는 곳에서 Block #A를 채굴하고, B라는 곳에서 Block #B를 채굴해서 Block #O에 붙이려고 한다. A, B는 거의 동시에 이것을 방송했다. 그래서 어쩌다 보니 네트워크의 약 50%는 A의 블럭, 나머지 50%는 B의 블록을 먼저 수신 받았고, 즉시 자신들이 하던 작업을 중단하고 먼저 받은 블럭에블록에 이어 붙일 채굴을 개시한다. 먼저 받은 블록에 이어 붙일 채굴을 준비하는 것이 이득인 이유인즉슨, 조금이라도 더 빠르게 채굴 작업을 진행할 수 있기 때문에 그렇다. 그렇다고 나중에 받았던 블럭을 버리지는 않는다. 이 상황에서 A의 블럭을 받았던 C가 먼저 채굴에 성공하고, Block #C를 네트워크에 방송했다고 해보자. 그럼 Block #B를 먼저 받았던 집단도 이 #B를 더 이상 인정하지 않고, #O -> #A -> #C로 이어지는 블록체인을 canon("올바른") 체인으로 인정한다. 이후, #C에 이어 붙일 블록 채굴을 시작한다. 이러한 방식으로 (#A, #B) fork는 해소된다.
여기서 "그럼 이렇게 동시에 채굴되는 일이 계속 발생하면요?"라고 한다면, 우선 그런 일이 일어날 확률이 너무나도 작아서 실질적으로 발생하지 않는다라는 게 답변이다. 만약 이런 일이 연속해서 4번 이상 발생하기를 고대한다면, 지구가 멸망하는 날까지 기다려도 모자를 수도 있다. 그리고 네트워크가 지속적으로 50:50으로 양분되기도 더더욱 힘들다. 진정으로 "동시에" 채굴되는 일은 없고, 아무리 그래도 일부의 fork가 살짝은 더 우세한 hash power를 점유할 가능성이 높다. 뭐 Bitcoin은 실제로 100% 이게 깨지는 걸 보장하진 않는다. 다만 확률적으로 그러할 뿐이다.
이렇게 fork가 해소 될거라고 가정하고, 그냥 제일 긴 체인을 언제나 올바른 체인으로 생각한다. 이를 Longest Chain 이라고 한다.
3-2. Ethereum's consensus(Gasper)
다음은 Ethereum이다. Ethereum은 Casper FFG, GHOST(혹은 합쳐서 Gasper)라는 자체 합의 메커니즘을 사용한다. 합의 메커니즘이 2개인데, Casper FFG는 블록 자체가 올바른가를 판정하고, GHOST는 그를 기반으로 한 fork 합의 메커니즘이다.
3-2-1. Casper FFG(Friendly Finality Gadget)
Ethereum의 블럭은 3가지 상태를 가진다. 그냥 아무것도 안된 상태(여기선 "Nothing"이라고 편의상 부르겠다. 이 상태에 이름이 있는지는 모르겠다...), "Justified", "Finalized"이다. 인증 절차를 여러 번 거친다고도 생각할 수 있을 것이다. 사실 둘 다 되는 방법은 어렵지 않다. "Justified"가 되는 방법은 validator의 2/3 이상에게 이 블록은 문제없다고 투표를 받고, 그 부모가 적어도 "Justified" 상태여야 한다. "Finalized"가 되는 방법은 어떤 블록이 그 블록 위에 "Justified"가 되면 된다. 그니까 어떤 블록의 부모 블록이 되면 된다고 생각하면 된다.
간단하지만서도 효과는 강력하다. 만약에 fork를 여러분이 만들고 싶다고 해보자. 그럼 적어도 여러분은 2가지를 동시에 할 배짱과 자원이 필요하다 :
1. 2/3이상의 모든 Staking 된 ETH를 소유(혹은 조종)할 수 있을 능력
2. 그 2/3이상의 ETH 중 적어도 아무리 못해도 절반(그니까 전체에서는 1/3) 이상을 태워버릴 배짱
1번은 이해하기 어렵지 않다. 블럭을 원하는 대로 제조하고 싶다면 투표도 조종해야 하지 않겠는가? 근데 2번은 왜 그럴까? 왜냐하면 투표에는 강력한 2가지 규칙이 있고, 이를 어기는 즉시 Slashing 페널티를 받기 때문이다.
<Ethereum 투표 규칙, (S1, T1), (S2, T2)>
1. 같은 높이의 두 블럭에게 동시에 투표하면 Slash
(height(T1) != height(T2))
2. Overlapping(Surround)한 투표(이전의 투표의 범위에 포함되는 투표)를 하면 Slash
(height(S1) < height(S2) < height(T2) < height(T1))
여기서 지금은 1번만 보면 된다. fork라는 것 정의 자체가 서로 다른, 둘 다 인정된 이전 블록에 이어질 수 있는 블록이 만들어진 상태임을 감안한다면 1을 어떻게든 위반할 수밖에 없다. 다른 validator가(전체의 1/3) 전부 Block #A를 canon으로 인정한다고 하면, 자신이 가진 투표권의 1/2(전체의 1/3)를 Block #A에 넣고, 또 자신이 가진 전체 투표권 전체를 다시 Block #B에 넣어야지만 (#A, #B) fork가 생겨난다.
도식화하면 다음과 같다 :

fork를 하나 만들자고 1400억 원 가까이를 날려야 한다고 생각하면 그다지 하고 싶다는 생각은 들지 않으리라 생각한다. 이런 강력한 제재는 한번 Finalize 된 체인 아래를 뒤집거나 fork를 만들기 매우 매우 곤란하게 만든다.
3-2-2. GHOST(Latest Message Driven GHOST)
Bitcoin은 Longest Chain을 옳다고 판정했다면, 여기서는 Heaviest Chain을 기준으로 한다. 투표를 제일 많이 받은 가지를 인정한다고 생각하면 될 것이다.

여기서도 위의 #A는 depth = 2이고, #B는 3이다. 그럼에도 A가 더 많은 투표를 받았으므로 Block #A를 canon으로 인정한다. 여기서는 Checkpoint단위가 아니라 짧은 주기 동안 아주 잠시 네트워크 지연 등으로 발생가능한 fork를 처리하는데 이러한 알고리즘을 사용한다. 이를 위해서 마지막으로 한 투표만을 기준으로 무게를 설정한다.
Tron의 Consensus메커니즘은 아쉽게도 전혀 몰라서, 그냥 이렇게 두가지만 정리하겠다.(차후에 공부해서 알게 된다면 업데이트하도록 하겠다.)
| 네트워크 | Consensus Algorithm | 비고 |
| Bitcoin | Longest Chain | 특별한 의사 표현 없이 각자 canon chain 판별 |
| Ethereum | Gasper(Casper FFG, GHOST) | 투표가 반드시 필요함, validator 주체 |
'Blockchain' 카테고리의 다른 글
| [blockchain, Ethereum] RANDAO(shuffling signitures) (0) | 2025.12.11 |
|---|---|
| [blockchain, Bitcoin] PoW(Proof-of-Work) 작업 증명 채굴 메커니즘(원제: 암호화 해시 함수를 기준으로 본 비트코인의 작업증명) (0) | 2025.12.11 |