블록체인의 핵심은 인터넷 상의 유저들이 동일한 데이터를 가지고 있게 하는 것입니다. 자원을 소모하여 누구나 데이터를 네트워크에 추가할 수 있고, 이렇게 추가된 데이터는 수정 및 삭제가 불가능합니다. 또한 중앙집중식의 데이터관리가 아닌 블록체인 네트워크 상 모든 유저들이 데이터를 관리하게 됩니다.
블록체인을 기존 프로그래밍 언어에 비유하자면 Linked List에 가장 가까운 네트워크 구조를 가지고 있습니다. 각 데이터들은 이전 데이터를 가리키고 있으며, 순서대로 정렬되어 있는 데이터 구조를 가지고 있습니다. 데이터를 저장하는 노드는 블록(Block)이라 불리고, 블록들을 연결한 네트워크를 체인(Chain)이라고 부릅니다.
블록(Block)
데이터를 저장하는 공간입니다. 자산에 관한 정보, 암호화된 개인정보 등 다양한 참여자의 정보를 담게 됩니다. 블록의 종류는 블록에 어떤 데이터를 담느냐에 따라 달라지게 됩니다. 최초의 암호화폐인 비트코인은 블록에 거래 기록을 저장하게 됩니다. 이러한 거래기록은 트랜잭션(Transaction)이 됩니다. A가 B에게 1 비트코인을 이체했다면 "A가 B에게 1 비트코인을 이체함" 이체 내역이 트랜잭션이 되고, 블록에 기록됩니다.
블록체인 뿐만 아니라 현재 은행 전산 시스템도 친구에게 100만원의 금액을 이체하면 송금자, 계좌 잔액, 송금액, 수신자 정보, 시간 등의 정보가 기록됩니다. 블록체인에서도 이러한 거래에 관한 정보가 블록에 기록되고, 네트워크 참여자는 자신의 자산에 대한 소유권을 증명하기 위한 디지털 서명을 추가합니다.
정리하자면 블록체인은 블록(Block)+체인(Chain)으로 구성되어 있습니다. 블록은 데이터를 기록하는 저장공간이며 비트코인의 경우 블록은 거래 이력인 트랜잭션들이 담긴 거래 기록의 집합체라고 할 수 있습니다.
체인(Chain)
블록들에는 데이터가 담기게 됩니다. 이런 데이터들이 오직 하나의 블록에 담긴다고 생각하면 모든 거래 기록에 대한 정보를 담은 블록의 용량이 커지게 됩니다. 네트워크 참여자들이 모두 한개의 블록에 접근하면 네트워크 성능 또한 저하되게 됩니다.
데이터를 담고 있는 블록은 인터넷을 사용해 네트워크 참여자들에게 공유됩니다. 만약 블록에 담기는 데이터가 작은 경우 블록의 크기 자체는 줄어들지만, 블록을 생성하는 빈도수는 증가하게 됩니다. 네트워크 상의 참여자들은 더 많은 블록을 공유받아야 하기 때문에 사용상에 문제가 발생합니다.
반대로 블록에 담기는 데이터가 커지는 경우 블록의 크기가 커지면서 대역폭의 한계에 직면하게 됩니다. 네트워크 상에서 블록이 공유되는 속도가 느려지면서 사용 편의성이 떨어지게 됩니다.
예를 들어 비트코인의 경우 1개의 블록이 생성되는 시간은 10분입니다. 즉 1시간에 총 6개의 블록이 생성되며, 1시간 안에 발생한 트랜잭션들을 담게 됩니다. 1개의 블록에는 10분동안 비트코인의 거래내역이 담기게 되는 것입니다. 블록 생성 시간 뿐만 아니라 트랜잭션 처리 시간도 문제입니다. VISA의 트랜잭션 처리 시간과 차이가 상당히 나면서 개선점을 찾기 위한 시도가 이루어지고 있습니다.(1초당 VISA는 24000개의 트랜잭션을 처리하지만 비트코인은 7개의 트랜잭션을 처리합니다.)
블록체인 네트워크에 참여한 사용자는 하나의 블록에 일정 갯수의 트랜잭션을 담아 블록을 공유하면 새롭게 생긴 블록은 이전 블록을 가리키는 데이터가 암호화 되어 추가됩니다. 현재 블록의 데이터 해시함수를 사용해 암호화됩니다. 즉, 네트워크 상의 블록들이 Linked List 자료구조 형태로 연결된 모습을 가지게 되고, 이를 블록체인(Block + Chain)이라고 부릅니다.
블록 생성과정
블록체인 네트워크에서 새로운 트랜잭션이 일정기간 쌓이면 블록에 담기게 되고 네트워크 내의 노드들에 공유됩니다. 이 과정에서 해당 트랜잭션이 유효한 데이터인지에 대해 다양한 검증(Verification) 절차가 진행됩니다. 데이터을 공유받은 각 노드들은 공유된 트랜잭션의 실제 송금자가 생성한 트랜잭션인지, 악의적인 사용자가 사칭하고 있는건 아닌지, 트랜잭션 생성 후 수정여부등을 검증합니다. 블록체인의 이러한 검증 절차 덕분에 차세대 네트워크로 부상하고 있습니다.
트랜잭션에 대한 유효성 검사가 완료되고 난 후 트랜잭션이 블록에 담기게 되고, 해당 블록에 블록체인 네트워크에 추가 됩니다. 여러 트랜잭션을 모아 하나의 블록에 담는 과정을 다른 말로 채굴(Mining)이라고 부릅니다. 암호화폐 시스템에서는 주로 송금에 관한 트랜잭션이 쌓이므로 암호화폐 송금 시스템을 운영하는 핵심 과정입니다. 채굴 노드에는 보상이 주어져야 합니다.
채굴 노드들은 제 가각 새로운 블록을 생성하고 네트워크에 공유합니다. 공유 경쟁에서 승리한 채굴 노드의 블록이 채택되면 공유받은 노드들은 새로운 블록에 대해 유효성 검사를 진행하게 되고, 체인에 추가하도록 합의하게 됩니다. 채굴 노드들이 받는 보상은 블록체인 네트워크 내에서 화폐 역할을 하는 코인을 받게 됩니다.
블록체인 그리고 분산원장
블록체인은 여러 데이터를 블록 형태로 저장하고 각 블록을 연결해 놓은 데이터베이스 유형 중 하나입니다. 이 중에서도 중앙집중식 데이터베이스 보단 각 사용자들이 동등한 권한을 가지고 있으면서 여러 사용자들이 데이터를 나눠 가지고 있는 분산 원장(Distributed Ledger) 시스템에 가깝습니다.
블록체인은 일반적인 분산원장에 네트워크 내 모든 노드들이 새로운 블록에 대해 유효성 검사를 진행하고 난 후 블록을 추가하는 특수한 과정이 추가됩니다. 분산원장과 블록체인의 차이점을 살펴보도록 하겠습니다.
블록체인 | 분산원장 | |
블록 구조 | 블록형태로 데이터가 저장됨. | 여러 노드에 데이터를 분산 저장. 블록 형식 뿐만 아니라 다양한 형식으로 데이터를 저장함. |
순서 | 모든 블록은 이전 블록을 가리킴. 즉 블록들은 순서대로 정렬되어 있음 | 반드시 데이터를 순서대로 정렬할 필요 없음 |
블록 생성 메커니즘 | 블록을 생성할 노드를 결정하기 위해 PoW(작업증명), PoS(지분증명) 등의 메커니즘 사용 | 경쟁적으로 블록을 생성하지 않는 경우 존재 |
토큰 | 경쟁적으로 블록을 생성하는 과정에서 자원을 소모한 노드에게 보상을 지급함. 자원을 소모해 블록을 생성하면서 네트워크를 운영함에도 아무런 보상이 주어지지 않으면, 네트워크는 붕괴됨. | 보상 시스템 없음 |
Reference
'Blockchain' 카테고리의 다른 글
[Blockchain] 퍼블릭 블록체인 vs 프라이빗 블록체인 VS 컨소시엄 블록체인 (0) | 2022.06.14 |
---|---|
[Blockchain] 비트코인 vs 이더리움 (1) | 2022.06.13 |
[Blockchain] 암호화폐는 화폐기능을 가질 수 있을까? (1) | 2022.06.13 |
[Blockchain] 블록체인은 왜 등장했는가 ? (0) | 2022.06.13 |
[Blockchain] BaaS(Blockchain as a Service)란 무엇인가 ? (0) | 2022.05.10 |
댓글