2일차: 블록체인 이론 및 합의 메커니즘 소개

블록체인이란?

요즘 암호화폐, 블록체인, NFT, 비트코인, 이더리움, 도지 코인에 대해 많이들 이야기합니다. 요즘 인터넷에 많이 떠돌기도 하고 회자되는 주제들입니다. 그런데, 이게 뭔지 아시나요? 왜 모두가 관심 있어 하시는지 아시나요? 도대체 어떻게 이 주제들이 주목을 끌게 된 걸까요?

본 포스트에서는 이 모든 것의 기본이 되는 블록체인에 대해 다룹니다.

블록체인은 뭘까요? 아니, 정의하기 이전에 블록체인은 왜 필요할까요? 블록체인으로 어떤 문제를 해결할 수 있을까요?

블록체인이 왜 필요한지 알기 위해서는 우선 중앙화 시스템이 무엇인지 알아야 합니다.

중앙 시스템이란 서버라고 알려진 메인 컴퓨터에 의존하는 네트워크입니다.

중앙화 시스템에 어떤 문제가 있냐고요? 장기적으로 중앙화 시스템을 사용했을 때 직면할 수 있는 문제는 무엇이 있을까요? 예시를 함께 보시죠.

중앙화 시스템에 있는 컴퓨터들은 모두 중앙 컴퓨터 하나에 의존해야 합니다. 해커들이 서버를 공격하기 쉽도록 작은 표면적을 제공하는 셈입니다.

중앙 컴퓨터는 언제 서버를 폭발 시킬지 모르는 소수의 사람들을 위해 운영되고 있습니다. 그래서 서버는 조직 내부자에 의한 공격에 매우 취약합니다.

서버들은 네트워크 연결해 매우 의존합니다. 중앙 서버가 연결 문자로 다운됩니다면 이 서버에 의존하고 있던 다른 노드 컴퓨터들을 역시 다운될 것입니다.

그렇다면 블록체인은 어떻게 이런 문제를 해결하는 걸까요?

블록체인은 탈 중앙화 네트워크 닙니다. 데이터를 관리하고 처리하는 중앙 담당자가 없습니다. 대신 네트워크에 참여하고 있는 노드 컴퓨터들에게 분산되어 있습니다.

즉, 블록체인 네트워크 관리자는 네트워크에 참여하고 있는 노드 컴퓨터들인 거예요. 때문에, 다른 노드 컴퓨터들이 유효한지 판단한 이후에야 데이터를 수정할 수 있습니다. 혹시라도 수정 내용이 올바르지 않다면, 다른 컴퓨터들이 변경을 거부합니다.

블록체인은 많은 노드들로 구성되어 있기 때문에 이러한 네트워크 이슈들에 대한 직접적인 해결책이 될 수 있습니다. 노드 컴퓨터 하나가 다운됩니다고 해도 전체 네트워크에 전혀 영향을 주지 못하니까요.

그래서 블록체인이 뭐죠?

블록체인은 범 지구적으로 현실 세계 데이터를 저장하고 사용하는 데이터베이스입니다. 사전적 정의로, 블록체인은 상호 연결된 블록들의 집합입니다.

쉬운 말로 바꿔볼까요? “블록체인”이라는 단어는 두 부분으로 나눌 수 있습니다. “블록”과 “체인”이요.

“블록”은 현실 세계 데이터를 저장할 수 있는 개체입니다. 편의상, 블록은 인터넷에서 발생하는 트랜잭션를 저장한다고 해봅시다. 홀리가 5ETH를 몰리에게 송금한다면 이 트랜잭션 내역은 블록에 문제없이 기록될 겁니다.

블록체인의 특징

블록체인은 불변 데이터 저장소로,

  • 탈중앙(Decentralized): 블록체인에는 데이터를 조작할 수 있는 중앙 관리자가 없습니다. 블록체인은 분산화된 기술이고 누군가에 의해 통제되지 않습니다.
  • P2P(Peer To Peer): 블록체인은 네트워크에 참여하는 노드(즉, 피어) 간에 공유되는 분산 기술입니다.
  • 무신뢰(Trustless): “무신뢰”라는 단어는 블록체인 기술의 근본적인 부분입니다. 사람들은 항상 은행, 사람 또는 다른 중개인과 같은 제3자 조직에 의존해 왔습니다. 그러나 블록체인 기술을 사용하면 사람들은 트랜잭션와 보유를 제3자에게 의존할 필요가 없다.
  • 보안(Secure): 블록체인은 분산화(decentralization)와 암호화(cryptography), 합의(consensus)를 핵심으로 사용하여 보안을 유지합니다.

블록체인은 어떻게 작동하나요?

모든 블록체인은 제네시스 블록(Genesis Block)으로 시작하며, 블록체인의 첫 번째 블록입니다. 블록은 크기와 저장 가능한 트랜잭션의 수가 제한되어있습니다.

트랜잭션이 저장된 블록이 세 개 있다고 가정해 보겠습니다. 이 블록들을 연결하기 위해 각 블록마다 자신의 데이터를 사용하여 생성되는 고유 해시 ID가 할당됩니다. 따라서 누군가 블록을 수정하려고 하면 해당 블록의 해시 ID도 변경됩니다.

즉, 제1 블록의 해시 ID는 제2 블록에 저장됩니다. 그리고 제2 블록의 해시 ID는 제3 블록에 저장됩니다. 이 프로세스는 체인 내에 있는 모든 블록에서 반복될거에요. 이러한 방식으로 우리는 “블록체인”이라고 불리는 일련의 블록들을 갖게 됩니다.

“몰리가 홀리에게 5 ETH를 보냄”의 해시 예시는 아래와 같습니다.

848C68F9EDF7EFFDA27005EFD643F785030C77B79E5637D92CB6A7D516A27370

“몰리가 홀리에게 5 ETH를 보냄”은 예시입니다. 현실세계에서는 “트랜잭션”이 해시의 대상이 될 수 있습니다.

ETH는 무엇을 의미합니까?

ETH는 이더 암호화폐의 상징입니다. 이더는 이더리움 블록체인의 토종 화폐입니다.

모든 블록체인은 사용자가 트랜잭션를 할 때 사용할 수 있는 고유한 통화를 가지고 있습니다. 예를 들어 비트코인 블록체인이 지원하는 화폐는 비트코인입니다.

블록체인 계층이란?

계층 0

블록체인 네트워크의 계층 0은 인터넷, 하드웨어, 연결 등으로 구성됩니다. 이 구성 요소들은 계층 1의 원활한 기능을 지원하는데에 사용됩니다.

계층 1

구현 계층이라고도 하는 계층 1 프로토콜은 블록체인 네트워크의 핵심 아키텍처를 가리킵니다. 모든 블록체인 네트워크의 기초를 형성하죠.

계층 1 프로토콜은 전체 네트워크를 지배하는 트랜잭션 처리량, 블록 시간, 합의 알고리즘 등과 같은 작업에 대한 일련의 규칙을 정의합니다. 예를 들어 이더리움은 지분증명(PoS: proof-of-stake) 네트워크로 전환하기 전에 일시적으로 작업증명(PoW:proof-of-work) 합의 알고리즘을 사용하고 있습니다.

계층 2

계층 2는 계층 1의 전반적인 성능을 향상시키기 위해 계층 1에 대한 완전한 솔루션을 제공하는 프레임워크입니다.

현재, 계층 1은 사용자의 증가로 인해 낮은 트랜잭션 처리량(즉, 초당 트랜잭션 수) 및 성능과 같은 문제를 겪고 있습니다. 계층 1은 높은 계산 능력을 요구하는 작업 증명(PoW) 합의 알고리즘을 사용합니다. 이 접근 방식은 더 안전하지만, 성능에 영향을 줄 수 있습니다.

이 문제를 해결하기 위해, 계층 2는 계층 1과 함께 작동하는 일종의 써드파티처럼 작동합니다. 즉, 계층 1이 수행해야 하는 작업의 일부가 계층 2가 수행합니다. 그리고 계층 2는 계층 1의 프로토콜을 따릅니다.

계층 2 솔루션의 예로는 이더리움용 폴리곤 매틱과 비트코인용 비트코인 라이트닝 네트워크가 있습니다.

계층 3

계층 3은 분산형 애플리케이션(Dapps)이라고도 하는 애플리케이션의 개발을 가능하게 하는 계층 1 및 계층 2 위의 계층입니다. 이 계층은 이러한 응용 프로그램을 호스팅하고 해당 응용 프로그램에 대한 프로토콜을 정의합니다.

간단히 말해서, 이 계층은 사용자가 블록체인과 상호 작용할 수 있도록 한다.

비트코인은 프로그래밍 가능한 블록체인이 아니에요. 즉, 분산형 애플리케이션을 지원하지 않는다는 뜻입니다. 반면, 이더리움과 솔라나와 같은 블록체인은 분산형 애플리케이션을 개발하기 위한 최고의 플랫폼입니다.

인기 블록체인 네트워크

비트코인(Bitcoin)

비트코인은 블록체인 기술을 사용하여 트랜잭션를 기록하는 디지털 화폐입니다. 그것은 2009년 1월에 나카모토 사토시(Satoshi Nakamoto)라는 이름의 미스터리한 남자에 의해 만들어졌습니다.

이더리움(Ethereum)

이더리움은 자사의 통화(즉, Ether)와 많은 분산형 애플리케이션을 구동하는 블록체인 기술입니다. 앞서 언급했듯이, 서로 다른 도메인에서 많은 애플리케이션을 지원하는 프로그래밍 가능한 블록체인입니다. 2015년 7월 비탈릭 부테린(Vitalik Buterin)에 의해 만들어졌습니다.

바이낸스(Binance)

바이낸스는 암호화폐 자산을 거래하는 시장으로 출발했습다. 자사의 암호화폐(BNB)를 지원합니다. 초기에는 BNB가 이더리움 블록체인에 의존했지만, 현재는 바이낸스 체인으로 알려진 자체 블록체인을 보유하고 있습니다. 바이낸스는 2017년 창펑 자오(Changpeng Zhao)가 설립했습니다.

[]: https://metaschool.so/courses/10-days-of-solidity/lesson/be7ddbff-2bdf-4264-98a7-a1b0ce6727af