이번 포스팅에서는 암호화폐의 기술 기반인 블록체인을 살펴볼 것이다.
비트코인과 같은 암호화폐 시장이 떠오르면서, 블록체인과 암호화폐를 혼용해서 사용하는 사람이 많다.
그러나 암호화폐가 곧 블록체인이라고 할 수는 없다.
블록체인은 자료구조로서 하나의 기술이며, 암호화폐는 이러한 블록체인 기술로 만든 일종의 자산 거래 서비스이다.
따라서, 블록체인으로 만들 수 있는 것이 암호화폐에만 국한된 것이 아니라는 뜻이다. 실제로 블록체인을 활용한 NFT, WEB3 등의 사례를 떠올려보면 금방 이해할 수 있을 것이다.
블록체인이란?
블록체인(Blockchain) = 블록(Block) + 체인(Chain)
블록체인의 핵심은 인터넷 상에 있는 사람들과 동일한 데이터를 가지는 것이다.
블록체인이 데이터를 저장하고 공유하는 방식은 아래와 같다.
- 누구나 데이터를 추가할 수 있다
- 데이터는 한 번 추가되면, 수정하거나 삭제할 수 없다
- 개인이나 단체가 데이터를 관리하는 것이 아니라, 블록체인 네트워크에 있는 모든 사람들이 함께 관리한다
블록(Block)
컴퓨터 전산에서의 블록: 기억 공간을 나누는 단위로, 데이터를 저장하는 공간
블록에는 다양한 유형의 정보를 담을 수 있다. 예를 들어 자산에 대한 정보, 암호화된 개인정보 등이 있다.
따라서 블록의 구성은 어떤 종류의 데이터를 저장하느냐에 따라 결정된다.
블록체인에서의 블록: 다수의 트랜잭션을 모아서 하나로 관리하기 위한 묶음
비트코인과 같은 암호화폐에서는 블록에 거래기록을 저장한다. 블록체인에서는 이 거래기록을 트랜잭션(Transaction)이라고 한다. A가 B에게 1비트코인을 이체하고, "A가 B에게 1비트코인을 전송했습니다"라는 이체 내역이 생성됐다면, 이 이체 내역이 바로 트랜잭션이다.
은행에서의 이체와 마찬가지로 블록에 들어가는 트랜잭션에도 송금자에 대한 정보, 송금자의 잔액, 보내려는 금액, 수신자에 대한 정보가 들어간다. 그리고 블록체인에는 사용자가 직접 자신의 자산에 대한 소유권을 증명하기 위한 디지털 서명을 추가한다.
블록은 이러한 트랜잭션들을 담은 거래 기록의 집합이다.
보다 깊게 들어가자면 블록은 사실 바디(body)와 헤더(header)로 구분되는데, 위와 같은 거래내용은 바디에, 그리고 헤더에는 머클해시(머클루트)나 논스(nounce, 암호화와 관련되는 임의의 수) 등의 암호코드가 담겨 있다. 블록은 평균적으로 약 10분을 주기로 생성되며, 거래 기록을 끌어 모아 블록을 만들어 신뢰성을 검증하면서 이전 블록에 연결하여 블록체인 형태가 된다. 여기서 처음 시작된 블록을 제네시스 블록이라고 부른다. 즉, 제네시스 블록은 그 앞에 어떤 블록도 생성되지 않은 최초의 블록을 말한다. 그리고 거래과정에서 중앙기관의 신뢰가 필요없으므로 민주적인 합의를 거쳐 블록이 생성된다. 더 자세한 구성요소는 여기에서 볼 수 있다.
체인(Chain)
체인이란, 해시를 이용하여 하나의 블록을 다음 블록으로 시간 순서에 따라 연결한 것을 말한다.
즉, 블록을 만들어진 순서대로 연결한 블록의 집합이라고 할 수 있다.
체인구조가 필요한 이유
블록 하나에 전세계의 모든 거래 기록을 담는다면 블록의 크기가 너무 커질 것이다. 또한 네트워크에 있는 사람들이 동시에 하나의 블록에 거래를 기록하려고 하면 편의성도 떨어질 것이다.
예를 들어 봅시다. 블록에는 특정 기간(10분, 1시간 등) 동안 발생한 거래 내역이 기록되어 있습니다. 만약 블록 하나에 10분간의 거래 내역이 기록된다면, 블록 6개에는 한 시간 동안의 거래 내역들을 볼 수 있습니다. 만약 블록 하나에 들어있는 기간이 너무 짧거나, 너무 길면 불편할 것입니다.
한편, 이 블록들은 인터넷을 통해 많은 사람들에게 공유될 것입니다. 블록에 담기는 트랜잭션 기간이 짧다면 블록의 크기는 줄고 블록이 더 자주 생성될 것입니다. 그러면 블록을 공유받는 사용자는 더 많은 블록을 공유받아야 하기 때문에 불편할 것입니다. 반대로, 블록에 담기는 트랜잭션의 기간이 너무 길면 블록의 크기가 커질 것입니다. 블록의 크기가 커지면 대역폭의 한계로 인터넷에 공유되는 속도가 느려질 것입니다.
그래서 네트워크에 참여한 사용자가 하나의 블록에 일정한 갯수의 트랜잭션을 넣어 네트워크에 공유하면, 새로운 블록을 만들어 새롭게 생긴 트랜잭션들을 담는다. 그리고 이 새로운 블록에는 이전 블록을 지칭하는 데이터를 함께 넣어, 직전 블록이 어떤 블록인지 지정한다.
이후 일정량의 트랜잭션이 생길 때마다 해당 트랜잭션들을 블록에 넣고, 이전 블록을 가리키는 주소값을 함께 넣는다. 이러한 모양이 꼭 체인처럼 연결되어 있다고해서 이러한 데이터 구조를 블록체인이라고 부른다.
블록 생성
블록체인 네트워크에서 거래가 발생하여 새로운 트랜잭션이 생기면, 이 트랜잭션은 네트워크 내에 있는 모든 노드들에게 공유된다. 그리고 네트워크 내의 사용자들은 트랜잭션에 대한 검증(Verification)절차를 수행한다. 노드들은 공유받은 트랜잭션이 실제 송금자가 만든 트랜잭션이 맞는지, 악의적인 사용자가 타인을 사칭하는 것은 아닌지, 트랜잭션이 만들어지고 난 후 수정되지는 않았는지 검사한다.
노드: 네트워크에 장치 또는 데이터 지점을 의미한다. 쉽게 말해 네트워크에 접속해 있어서 연결될 수 있는 컴퓨터를 지칭한다.
트랜잭션에 대한 유효성 검사가 끝났다고 해서 해당 트랜잭션에 대한 처리가 완료되는 것은 아니다. 트랜잭션이 블록에 담기고, 해당 블록이 체인에 추가되어 블록체인의 일부가 될 때 트랜잭션에 대한 처리가 완료된다. 여기서 트랜잭션을 모아서 하나의 블록으로 만드는 과정을 채굴(Mining)이라고 한다.
채굴은 트랜잭션을 처리하는 작업이므로 암호화폐 시스템에서는 송금 처리를 뜻한다. 따라서 채굴은 암호화폐 송금 서비스를 운영하는 핵심 역할을 하기 때문에 채굴 노드에게는 보상이 주어진다. 보상이 주어지지 않는다면 블록 생성 시 발생되는 부담을 감수하려는 사용자가 없을 것이기 때문이다.
이 보상을 얻기 위해 채굴은 경쟁적으로 이루어진다. 경쟁에 참여한 노드들은 저마다 블록을 만들어 네트워크에 전파하며, 이 경쟁에서 승리한 노드가 생성한 블록이 채택된다. 블록을 받은 노드들은 해당 블록이 유효한지 확인하고, 해당 블록이 유효하다면 체인에 추가한다. 채굴 노드는 블록 생성에 대한 보상으로 코인을 받으며, 발행된 코인은 블록체인 네트워크 내에서 화폐의 역할을 하게 된다.
분산원장과 블록체인
원장은 거래 내역의 집합이며, 앞서 살펴본 블록체인은 원장을 저장하는 데이터베이스 유형 중 하나이다.
원장을 가지고 있는 사용자들이 원장에 대해 동등한 권한을 가지고 있는 경우를 생각해 볼 수 있으며, 가장 극단적인 형태로는 모든 권한이 모두에게 동등한 P2P(Peer-to-Peer) 분산 원장 시스템을 떠올릴 수 있다. 중앙 집중식 데이터베이스와 달리 분산 원장(Distributed Ledger)은 분산되어 있으며, 데이터를 여러 위치에 두거나, 여러 사용자들이 나눠서 가지고 있는 데이터베이스 유형이다. 분산 원장 시스템에서 데이터를 저장하기 위해서는 데이터를 공유하고 있는 당사자들이 합의해야 하며, 당사자들의 합의를 통해 분산되어 있는 데이터베이스들이 하나의 일관된 데이터를 가질 수 있다.
블록체인은 특정 기술들이 추가된 분산 원장의 한 종류이다. 블록체인은 네트워크 내 모든 노드들이 새로운 블록에 대한 유효성을 검증하고 난 후에, 블록을 체인에 추가할 수 있기 때문이다.
일반적인 분산 원장과 블록체인의 차이점
분산 원장 | 블록체인 | |
블록 구조 | 여러 노드에 데이터를 분산시켜 저장하기만 하면 되기 때문에 블록 외에 다양한 방식으로 데이터를 저장함 | 블록 형태로 데이터를 저장함 |
순서 | 데이터를 꼭 순서대로 저장하지는 않는다. | 블록 형태로 데이터를 저장함 |
블록 생성 매커니즘 | 누가 데이터를 데이터베이스에 올릴지 정할 필요가 없다. | 블록 형태로 데이터를 저장함 |
토큰 | 누가 데이터를 데이터베이스에 올릴지 정할 필요가 없다. | 블록 형태로 데이터를 저장함 |
- 블록 구조
블록체인은 일반적으로 블록 형태로 데이터가 저장된다. 그러나 모든 분산 원장이 블록 형식으로 데이터를 저장하지는 않는다. 분산 원장은 여러 노드에 데이터를 분산시켜 저장하는 데이터베이스이며, 블록 형식이 아닌 다른 다양한 방식으로 데이터를 저장할 수 있다. - 순서
블록체인 기술은 모든 블록이 직전 블록을 가리킴으로써 순서대로 배열되어 있다. 그러나 모든 분산 원장에서 데이터를 꼭 순서대로 저장하지는 않는다. - 블록 생성 메커니즘
블록체인에서는 블록을 생성할 노드를 정하기 위해 합의 알고리즘PoW, PoS 와 같은 메커니즘을 사용한다. 이러한 메커니즘은 보통 자원을 소모하게 한다. 그러나 일반적인 분산 원장에서는 블록을 경쟁적으로 생성하지 않는 메커니즘을 사용하는 경우도 있다. - 토큰
블록체인에서는 블록을 생성하기 위해 자원을 소모한 노드에게 보상을 주기 위해 코인을 제공하며, 이 코인은 화폐의 역할을 한다. 만약 자원을 소모해 블록을 생성했는데 아무런 보상도 주어지지 않는다면 아무도 블록을 만들려 하지 않을 것이다. 따라서 블록체인에는 코인이 필수적이다.
출처
코드스테이츠
http://wiki.hash.kr/index.php/%EB%B8%94%EB%A1%9D
암호화폐는 왜 등장했을까(2): 기존 금융 시스템의 문제점
암호화폐는 왜 등장했을까(3): 암호화폐의 등장 - 비트코인과 이더리움
'Blockchain' 카테고리의 다른 글
블록체인 심화 (2) - 분산원장기술 vs. 중앙집중원장 (0) | 2022.05.12 |
---|---|
블록체인 심화 (1) - 공개 범위에 따른 블록체인 종류 (0) | 2022.05.12 |
암호화폐는 왜 등장했을까(3): 암호화폐의 등장 - 비트코인과 이더리움 (0) | 2022.05.12 |
암호화폐는 왜 등장했을까(2): 기존 금융 시스템의 문제점 (0) | 2022.05.12 |
암호화폐는 왜 등장했을까(1): 기존의 금융 시스템 (0) | 2022.05.12 |