[블록버스터즈 리포트] 블록체인의 설계 원리 심화 - 서울대학교 블록체인 학회 디사이퍼(Decipher) 김재윤

in #blockchain5 years ago



인터넷이나 서점을 둘러보면 블록체인이 어떻게 동작하는지에 관해 설명한 글들을 쉽게 볼 수 있다. 이 글을 보는 많은 사람은 아마도 “블록체인이란 거래 내역이 담긴 원장을 블록에 담아서 작업 증명을 하고, 이때 이전 블록의 블록 해시 값을 블록에 포함시켜서 체인을 만든 자료구조이구나!”라고 깨달았던 기억이 있을 것이다. 하지만 블록체인이 어떻게 동작하는지는 생각보다 그렇게 중요하지 않다. 블록체인은 다른 방식으로도 얼마든지 동작할 수 있고, 블록체인이라는 기술을 어디에 어떻게 적용할 수 있는지 알아야 비로소 그 설계가 의미가 있기 때문이다. 즉, 당연하게도 “왜”라는 질문을 던지고 그 물음에 답할 수 있어야 비로소 블록체인을 제대로 이해할 수 있는 것이다.

1) 블록은 왜 만들까?

내가 했던 수많은 강의나 강연에서 이 질문을 던졌을 때 제대로 답변했던 사람은 단 한 사람도 없었다. 아마도 산재되어 있는 수많은 문제에 대해서 고민하느라 가장 기본적인 것들에 대한 질문을 미처 하지 못하고 지나쳤으리라 생각된다. 하지만 이러한 질문에 답을 할 수 있어야 비로소 블록체인을 제대로 이해할 수 있고, 상황에 맞게 설계도 바꿀 수 있을 것이다. 나도 질문에 제대로 답을 하지 못하다가 수많은 논문을 분석하면서 저자들이 공통으로 블록에 부여하는 역할이 있다는 것을 깨닫게 되었다. 바로 그 시점까지의 상태(state)를 다른 노드들과 공유하는 것이다.

여기서 말하는 상태는 사용자들의 잔고(balance)나 스마트 콘트랙트의 프로그램 상태, 혹은 트랜잭션에 담긴 스크립트 등을 의미한다. 블록체인에서는 계속해서 새로운 트랜잭션이 생겨나고 이를 검증하는데, 어떤 트랜잭션이 유효한지 아닌지 알려면 최근 상태를 알아야만 하므로 이를 블록 단위로 공유하게 된다. 예를 들어, 철수가 영희에게 1 BTC를 전송하는 트랜잭션을 만들었다면, 철수의 잔고가 1 BTC를 넘을 때는 유효하겠지만 그렇지 않을 때는 기각되어야만 한다. 같은 트랜잭션이라도 때에 따라서 달리 처리되어야 한다.
그 기준이 되는 것이 최신 블록의 상태이다.

2) 합의 알고리즘은 왜 필요할까?

블록체인 네트워크는 표면적으로 참여하는 노드 간에 위계(hierarchy)가 없다. 따라서 더 중요하고 덜 중요한 노드가 없으므로 누가 네트워크에 새롭게 참여하거나 나가는 것이 자유롭다. 이런 일이 가능하게 하려면 노드들이 일관되게 따르는 규칙(protocol)이 필요하고, 합의 알고리즘은 그러한 규칙들 중의 하나이다. 그리고 그 규칙은 새로운 상태의 생성과 선택 및 확정에 대한 합의이다. 여기서 블록 대신에 상태라고 한 이유는 블록은 수단일 뿐이고 중요하게 다루어져야 하는 것은 상태이기 때문이다. 상태만 잘 공유된다면 그 수단이 꼭 블록일 필요가 없고, 꼭 블록체인이어야 할 필요도 없다.

​노드 간 위계가 없으므로 서로 상태를 공유하려면 그중에 누군가가 합리적으로 선출되어 상태를 만들고 공유해야 한다. 비트코인에서는 Proof-of-Work라는 방법으로 상태를 만들 노드를 선출한다. 그런데 블록체인 네트워크에서는 노드가 언제든지 새로 들어오고 나갈 수 있기 때문에 단 한 개의 노드만 선출하기보다는 결국에는 하나 이상의 노드가 선출되어 상태를 만들 수 있어야 한다. 만약에 하나 이상의 노드가 선출되어 두 개 이상의 상태를 만들어냈다면 그중 하나의 상태로 수렴할 수 있도록 어떤 것을 선택할지에 대한 정책이 필요하고 이것도 합의 알고리즘에 포함된다.

결론

블록체인이 무엇인지를 더 잘 이해하고 조금 더 크게 볼 수 있도록 두 가지 질문을 던지고 답을 해 보았다. 블록체인을 만들거나, 블록체인으로 서비스를 만들거나, 블록체인을 사용하기 위해서는 무엇을 위해 블록체인 기술이 탄생했고, 왜 블록체인이라는 구조를 이용하는지에 대해서 더 깊이 이해할 필요가 있다. 아직 그런 것에 대해 설명한 글을 찾아볼 수 없어서 안타까웠는데 이런 지면을 통해서라도 얘기할 수 있어서 다행이다.







지금 INBEX를 방문해보세요!

Coin Marketplace

STEEM 0.25
TRX 0.11
JST 0.032
BTC 61986.23
ETH 3026.15
USDT 1.00
SBD 3.75