비트코인은 중안 권한이나 은행 등의 중개자 없이 직접 화폐를 사거나 팔고 환전할 수 있는 탈중앙화된 디지털 화폐 시스템이다. 기존 전자 금융 시스템에서는 자산을 거래하기 위해서는 은행이라는 중개자를 통해 신원 증명과 소유권 증명을 해야했다. 따라서 은행이 자산과 신원에 관한 모든 정보를 보관하고 있었다.
그러나 2008년 금융위기를 보면서 은행이 늘 올바른 선택을 하는 것은 아니며 자신들의 이익을 위해 경제를 악화시킬 수 있다는 것을 알게 되었다. 글로벌 금융위기를 통해 많은 사람들이 사토시 나카모토의 말에 공감하며 비트코인이 주목을 받았다.
사토시 나카모토는 역사적으로 은행에 대한 신뢰의 위반이 여러번 있었다는 내용으로 기존 금융을 비판했다. 이런 이유로 신뢰가 아닌 암호화 증명에 기반한 전자 결제 시스템이 필요하다고 생각하여 비트코인을 만들었다. 은행이라는 중개자에게 신뢰를 담보로 우리의 자산을 맡기지 않고 블록체인과 암호화 기술을 사용한 분산 원장을 통해 네트워크에 있는 사용자들이 직접 거래(P2P)를 할 수 있게 된 것이다.
그렇다면 블록체인이 무엇이길래 위와 같은 일이 가능한 것인지 알 필요가 있다.
블록체인의 핵심은 인터넷 상에 있는 사람들과 동일한 데이터를 가지는 것이다. 블록체인은 다음과 같은 방식으로 데이터를 저장하고 공유한다.
데이터를 저장하는 공간이다. 블록에는 자산에 대한 정보를 담거나 개인 정보를 암호화해서 담는 등 다양한 유형의 정보를 담을 수 있다. 따라서 블록의 구성은 어떤 종류의 데이터를 저장하느냐에 따라 결정된다.
비트코인과 같은 일반적인 암호화폐에서는 블록에 거래기록을 저장한다. 블록체인에서는 이 거래기록을 트랜잭션(Transaction) 이라고 한다. "A가 B에게 0.01 비트코인을 전송했음"이라는 이체 내역이 트랜잭션이다. 은행에서 송금을 하고나면 이체 내역에는 송금자의 정보, 계좌 잔액, 보내려는 금액, 수신자의 계좌, 보낸 시각등이 기록되는 것처럼 블록에 들어가는 트랜잭션에도 이러한 정보들이 들어간다. 또한 블록체인에서는 사용자가 직접 자신의 자산에 대한 소유권을 증명하기 위한 디지털 서명을 추가한다.
블록은 이러한 트랜잭션들을 담은 거래 기록의 집합이다.
블록 하나에 전세계의 모든 거래 기록을 담는다면 블록의 크기가 너무 커질 것이고 네트워크에 있는 사람들이 동시에 하나의 블록에 거래를 기록하려고 하면 편의성도 떨어질 것이다.
블록에는 특정 기간 동안 발생한 거래 내역이 기록되어 있는데 만약 이 기간이 너무 짧다면 블록의 크기는 줄고 블록이 더 자주 생성될 것이고 블록을 공유받는 사용자는 더 많은 블록을 공유받아야하기 때문에 불편할 것이다. 반대로 기간이 너무 길면 블록의 크기가 커져 대역폭의 한계로 인터넷에 공유되는 속도가 느려질 것이다.
네트워크에 참여한 사용자가 하나의 블록에 일정한 갯수의 트랜잭션을 넣어 네트워크에 공유하면 새로운 블록을 만들어 새롭게 생긴 트랜잭션들을 담는다. 그리고 이 새로운 블록에는 이전 블록을 지칭하는 데이터를 함께 넣어 직전 블록이 어떤 블록인지 지정한다.
이후 일정량의 트랜잭션이 생길 때마다 해당 트랜잭션들을 블록에 넣고 이전 블록을 가리키는 주소값을 함께 넣는다. 이러한 모양이 꼭 체인처럼 연결되어 있다고 해서 이러한 데이터 구조를 블록체인이라고 부른다.
블록체인 네트워크에서 거래가 발생하여 새로운 트랜잭션이 생기면 이 트랜잭션은 네트워크 내에 있는 모든 노드들에게 공유된다. 따라서 블록체인에서는 다양한 검증(Verification)절차를 수행한다. 노드들은 공유받은 트랜잭션이 실제 송금자가 만든 트랜잭션이 맞는지, 악의적인 사용자가 타인을 사칭하는 것은 아닌지, 트랜잭션이 만들어지고 난 후 수정되지는 않았는지 검사한다. (노드 - 네트워크에 장치 또는 데이터 지점을 의미한다. 네트워크에 접속해 있어서 연결될 수 있는 컴퓨터를 지칭한다.)
트랜잭션에 대한 유효성 검사가 끝났다고 해서 해당 트랜잭션에 대한 처리가 완료되는 것은 아니다. 트랜잭션이 블록에 담기고 해당 블록이 체인에 추가되어 블록체인의 일부가 될 때 트랜잭션에 대한 처리가 완료된다. 여기서 트랜잭션을 모아서 하나의 블록으로 만드는 과정을 채굴(Mining)이라고 한다.
채굴은 트랜잭션을 처리하는 작업이므로 암호화폐 시스템에서는 송금 처리를 뜻한다. 따라서 채굴은 암호화폐 송금 서비스를 운영하는 핵심 역할을 하기 때문에 채굴 노드에게는 보상이 주어진다. 이 보상을 얻기 위해 채굴은 경쟁적으로 이루어진다. 경쟁에 참여한 노드들은 저마다 블록을 만들어 네트워크에 전파하며 이 경쟁에서 승리한 노드가 생성한 블록이 채택된다. 블록을 받은 노드들은 해당 블록이 유효한지 확인하고 해당 블록이 유효하다면 체인에 추가한다.
채굴 노드는 블록 생성에 대한 보상으로 코인을 받으며 발행된 코인은 블록체인 네트워크 내에서 화폐의 역할을 하게 된다.
원장은 거래 내역의 집합이며 블록체인은 원장을 저장하는 데이터베이스 유형 중 하나이다.
원장을 가지고 있는 사용자들이 원장에 대해 동등한 권한을 가지고 있는 경우를 생각해 볼 수 있으며 가장 극단적인 형태로는 모든 권한이 모두에게 동등한 P2P(Peer-to-Peer) 분산 원장 시스템을 떠올릴 수 있다. 중앙 집중식 데이터베이스와 달리 분산 원장(Distributed Ledger)은 분산되어 있으며 데이터를 여러 위치에 두거나 여러 사용자들이 나눠서 가지고 있는 데이터베이스 유형이다.
분산 원장 시스템에서 데이터를 저장하기 위해서는 데이터를 공유하고 있는 당사자들이 합의해야 하며 당사자들의 합의를 통해 분산되어 있는 데이터베이스들이 하나의 일관된 데이터를 가질 수 있다.
블록체인은 특정 기술들이 추가된 분산 원장의 한 종류이다. 블록체인은 네트워크 내 모든 노드들이 새로운 블록에 대한 유효성을 검증하고 난 후에 블록을 체인에 추가할 수 있기 때문이다.
일반적인 분산 원장과 블록체인의 차이점
비트코인은 블록체인 기술을 통해 구축되어 있다. 비트코인 블록체인은 퍼블릭 블록체인(Public Blockchain)으로 누구든지 네트워크에 참여하면 트랜잭션 기록에 접근할 수 있다. 또한 누구든지 트랜잭션을 생성하거나 블록을 만들어 블록체인을 업데이트할 수 있다. 반면에 블록체인에 기록된 트랜잭션을 수정하거나 삭제하는 것은 매우 어렵다. 각 블록들은 난수로 저장되며 블록 내에 있는 트랜잭션이 조금이라도 변경되면 블록의 난수 역시 변경되기 때문이다. 모든 사용자들은 암호화 기술을 통해 난수를 검증하기 때문에 악의적인 사용자가 임의로 트랜잭션을 변경하는 것은 불가능에 가깝다. 이를 통해 비트코인은 정부나 은행과 같은 중앙 기관 없이도 트랜잭션의 진위를 보장한다.
비트코인은 단순한 거래 기록만 남길 수 있다는 명확한 한계를 가지고 있었다. 이더리움의 창시자 비탈릭 부테린(Vitalick Buterin)은 이러한 비트코인의 한계를 극복하여 거래 기록 뿐만 아니라 블록체인 위에서 다양한 데이터를 저장하고 프로그램을 실행할 수 있는 네트워크를 만들고자 하였고 2015년 부테린은 블록체인 기술을 기반으로 한 탈중앙화 컴퓨팅 네트워크인 이더리움(Ethereum)을 출시했다.
이더리움은 역시 다른 암호화폐처럼 블록체인 네트워크를 기반으로 작동하며 이더(ETH)라는 토큰을 사용한다. 또한 비트코인처럼 이 이더를 화폐처럼 사거나 팔 수 있다. 그러나 이더리움의 가장 큰 차이점은 사용자들이 컴퓨터에서 소프트웨어 프로그램을 실행하는 것처럼 블록체인 위에서 실행되는 앱을 구축할 수 있다는 점이다.
계약에 대해 중개자를 거치지 않고 당사자 간 직접 계약을 체결할 수 있게 해주는 전자계약 시스템을 스마트 컨트랙트(Smart Contract)라고 한다. 이더리움은 일종의 스마트 컨트랙트 플랫폼으로 블록에 코드를 담아 블록체인에 올리고 이더리움 가상머신(EVM, Ethereum Virtual Machine)을 통해 블록에 있는 코드를 실행시킬 수 있다.
이렇게 블록체인 위에서 실행되는 앱을 DApp(Decentralized Application)이라고 한다. 누구든지 이더리움 블록체인 위에 DApp을 올릴 수 있으며 대표적으로는 이더리움 기반 게임인 Axie Infinity, 토큰 교환 DeFi(Decentralized Finance) 어플리케이션인 Uniswap, NFT 마켓플레이스인 OpenSea 등이 있다.