이전글
1-1. 블록체인: 단일 장부와 단일 메모리
이번 글에서는 먼저 블록체인이 무엇인지에 대해 알아본 후, 이더리움이 이 기술을 어떻게 범용성을 갖도록 확장시켰는지에 대해 알아보겠습니다.
I. 블록체인
블록체인이 무엇인지에 대해 설명한다면 다음과 같이 한 줄로 요약해 볼 수 있습니다.
'블록체인이란 트랜잭션을 블록에 담고, 이 블록들을 특정한 합의 알고리즘을 통해 연결하여, 네트워크 참여자들이 나눠갖는 것'
이미지로 표현하면 다음과 같습니다. 먼저 네트워크 참여자들은 각각이 하나의 거래에 해당하는 트랜잭션들을 수집합니다.
그리고 수집한 트랜잭션들을 하나의 블록에 담습니다.
새롭게 생성하려는 블록을 특정한 합의 알고리즘을 통해 이전 블록과 연결합니다.
그리고 이것을 네트워크 참여자들이 나눠 갖습니다.
이 과정을 계속해서 반복한다면 하나의 거대한 블록들 간의 연결이 형성되고 이것이 바로 블록체인이 됩니다. 결론적으로 블록체인 기술의 핵심은 '합의 알고리즘을 이용한 블록의 연결'과 '연결된 블록들을 네트워크 참여자가 나눠갖는 것'입니다.
블록체인 기술이 무엇인지에 대해서는 알게 되었습니다. 다만 이것이 왜 등장했고, 어떻게 사용될지에 대해서는 아직 다루지 않았습니다. 지금부터는 이 부분에 대한 이야기를 해보겠습니다.
II. 단일 장부와 이중 지불 문제
가장 먼저 블록체인 기술이 왜 등장하게 되었는지에 대해 알아보겠습니다. 이것을 이해하기 위해서는 블록체인 기술이 처음 사용되었던 비트코인을 이해할 필요가 있습니다.
디지털 세상에서는 현금을 거래하는 것이 불가능합니다. 따라서 인터넷을 통해 돈을 주고받으려면 각자가 가진 컴퓨터의 프로그램 속의 수치를 변경하는 방법밖에 없습니다.
하지만 각자의 컴퓨터의 수치를 변경하는 것으로 거래를 하는 것은 불가능합니다. 가장 큰 이유는 값이 쉽게 조작될 수 있기 때문입니다. 예를 들어 다음과 같은 일이 발생할 수 있습니다.
정상적인 거래라면 A가 B에게 10000 원을 송금할 경우, A의 프로그램은 잔고 데이터를 0 원으로 변경하고 B의 프로그램은 잔고 데이터를 10000 원으로 변경해야 합니다. 하지만 각자의 컴퓨터에 설치된 프로그램에 의존할 경우 위와 같이 A가 값을 변경하여 이미 지불된 10000 원을 생성하고, 이 금액을 또 다른 누군가에게 송금할 수 있습니다. 이러한 비정상거래를 이중 지불이라고 부릅니다. 그리고 이렇게 하여 발생되는 문제를 이중 지불 문제(Double spending problem)라고 부릅니다.
이중 지불 문제의 가장 기본적인 해결책은 단일 장부를 만들어서 관리하는 것입니다. 단일 장부를 만들어서 관리하는 가장 단순한 방법은 다음과 같습니다.
하나의 공동 장부를 만들어 모든 거래내역을 장부에 기록합니다. 이러한 방식을 이용하면 A, B, C는 거래 과정에서 각자의 프로그램 속 값을 변경하는 것이 아니라, 공동 장부에서 값을 변경하고 각자의 프로그램은 값을 불러오게 되어 이중 지불을 막을 수 있습니다. 하지만 공동 장부를 누군가 무단으로 수정할 경우 여전히 이중 지불 문제가 발생합니다.
이러한 문제를 해결하는 가장 전통적인 방법은 충분히 신뢰할 수 있는 제삼자에게 장부 관리를 맡기는 것입니다.
A, B, C는 거래가 필요할 경우 제삼자에게 장부 수정을 요청합니다. 제삼자는 장부를 확인하고 이상이 없는 경우 즉, 이중 지불을 시도하지 않는 경우 장부에 변경사항을 적고 거래 당사자에게 거래가 성공하였음을 통보합니다.
이 과정에서 등장하는 제삼자는 일반적으로 금융기관입니다. 이렇게 온라인상에서 금융기관을 통해 거래하는 것이 가장 일반적인 방법이었지만, 비트코인의 개발자 사토시 나카모토는 현재 블록체인이라고 부르는 기술을 만들어 제삼자 없이 온라인상에서 금융거래가 가능하도록 만들었습니다.
제삼자 없이 온라인 거래를 하기 위한 가장 첫 아이디어는 공동 장부를 복제하여 모든 참여자들이 나눠갖는 것입니다.
장부를 나눠가질 경우 누군가가 기존 장부를 무단 수정한다면 이를 쉽게 파악할 수 있습니다. 예를 들어 A가 기존 공동 장부 내용을 무단으로 수정할 경우 B와 C의 장부와는 맞지 않기 때문에 과반수의 원칙에 따라 해당 장부가 무단으로 수정되었음을 알 수 있습니다.
하지만 장부를 단순히 나눠가지기만 해서는 이중 지불 문제를 해결할 수 없습니다. 만약 기존 장부 내용을 수정하는 것이 아닌 새로운 내용을 기록하는 상황이라면 다음과 같은 일이 발생할 수 있습니다. 먼저 C가 B에게 송금한다는 새로운 기록이 있음을 B에게 통보합니다.
이와 동시에 C가 A로 송금한다는 사실을 A에게 통보합니다.
결론적으로 A와 B는 동시에 서로 다른 새로운 거래를 공동 장부에 추가하여, 서로 다른 장부를 갖게 됩니다. 즉, 이중 지불 문제가 발생합니다.
이처럼 단순히 장부를 나눠갖는 것만으로는 기존 장부 내역을 변경하는 것을 막을 수 있을 뿐, 새로운 거래가 발생할 경우에 발생하는 이중 지불을 막을 수 없습니다. 따라서 새로운 거래가 발생하여도 단일 장부를 유지할 수 있는 추가적인 방법이 필요합니다.
여기에서 등장하는 것이 바로 합의 알고리즘입니다. 블록체인은 합의 알고리즘을 사용하여 단일 장부를 형성하고 이를 나눠갖습니다. 또한 합의 알고리즘을 이용하기 위해 단순히 트랜잭션(거래)을 장부에 기입하는 것이 아니라, 일정 기간을 두고 트랜잭션을 모아서 블록에 담은 후 합의 알고리즘을 이용해 연결하여 체인으로 만듭니다. 일반적인 장부와 블록체인의 차이를 이미지화하여 나타내면 다음과 같습니다.
블록체인은 합의 알고리즘을 추가하기 위해 기존 장부에 중간 정산과정이 들어갔다고 생각하면 될 것 같습니다.
블록체인의 합의 알고리즘이 어떻게 이중 지불 문제를 해결할 수 있는지에 대해서는 해당 글의 내용을 벗어남으로 생략하겠습니다. 추가적인 내용이 궁금하다면 아래의 작업증명 글을 참고해 주세요. 참고로 비트코인은 작업증명을, 이더리움은 지분증명을 합의 알고리즘으로 사용하고 있습니다.
III. 단일 메모리
지금까지 블록체인을 이용하여 제삼자 없이 단일 장부를 형성할 수 있다는 점에 대해 알아봤습니다. 지금부터는 이러한 단일 장부를 확장해 보겠습니다.
비트코인이 처음 설계될 당시 트랜잭션이란 오직 암호화폐의 거래를 기록하는 용도로 사용되었습니다.
이렇게 블록체인으로 한 번 기록된 거래들은 수정하거나 삭제하는 것이 불가능했습니다. 또한 합의 알고리즘 덕분에 모든 네트워크 참여자가 같은 블록을 공유할 수 있었습니다.
이더리움은 이러한 트랜잭션을 단순히 암호화폐 거래를 기록하는 것 이상으로 확장하는 것을 시도했습니다. 예를 들어 트랜잭션에는 다음과 같은 정보를 기록하는 것도 가능합니다.
이는 다음과 같이 표현할 수도 있습니다.
기존의 트랜잭션은 단순히 보유하고 있는 암호화폐 소유권의 변화를 관찰하는 것이었습니다. 하지만 이를 조금만 더 확장한다면 위와 같이 변수의 변화를 기록하고 관찰할 수도 있습니다. 이 변화를 계속해서 반복한다면 다음과 같은 블록체인이 생성됩니다.
네트워크 참여자들은 각 블록을 생성할 때마다 값을 읽어서 작업을 수행한 후 기록하여 저장할 것입니다. 이를 통해 변수의 값들은 시간이 경과하면서 계속 변경될 것입니다. 이는 시간이 경과하면서 저장된 값이 바뀌는 컴퓨터의 메모리와 유사합니다.
이러한 메모리는 블록체인이 가진 특성을 그대로 가집니다. 네트워크 참여자 누구나 값을 읽고 변경할 수 있으며, 단일 장부라는 특성을 통해 모든 네트워크 참여자가 같은 값을 얻을 수 있습니다. 이는 블록체인이 전 세계 어디서는 접근 가능한 단일 메모리로 사용될 수 있음을 의미합니다.
현대 컴퓨터의 핵심은 메모리에서 값을 불러들여 연산하고 다시 메모리에 저장하는 것입니다. 즉, 모두가 접근할 수 있는 단일 메모리는 모두가 접근할 수 있는 하나의 거대한 단일 컴퓨터처럼 작동할 수 있다는 사실을 의미합니다. 이것이 바로 월드 컴퓨터의 의미입니다.
이더리움은 지금까지 설명한 단일 메모리에 기초를 두어 개발된 블록체인입니다. 기존과는 다르게 다양한 값을 블록체인에 쓸 수 있고, 이를 통해 블록체인을 보다 범용적으로 사용할 수 있습니다. 따라서 이더리움은 블록체인 기술을 한 단계 끌어올렸다는 뜻의 2세대 블록체인으로도 불립니다. 또한 단일 메모리를 통해 단일 컴퓨터로 작동할 수 있다는 점에서 월드 컴퓨터로도 불립니다.
지금까지의 이야기만을 듣는다면 무조건 범용 블록체인이 좋다고 생각할지도 모릅니다. 하지만 장점이 있다면 항상 단점이 존재합니다.
범용 블록체인이 가진 문제점과 이를 이더리움이 어떻게 해결했는지에 대해서는 다음글에서 알아보겠습니다. 감사합니다.
다음글
'이더리움 > 이더리움과 월드 컴퓨터' 카테고리의 다른 글
[이더리움과 월드 컴퓨터] 2-1. 주소 (0) | 2023.02.06 |
---|---|
[이더리움과 월드 컴퓨터] 1-4. 스마트 컨트랙트와 댑(DApp) (0) | 2023.02.05 |
[이더리움과 월드 컴퓨터] 1-3. 가스와 이더 (0) | 2023.02.02 |
[이더리움과 월드 컴퓨터] 1-2. 튜링 완전과 튜링 불완전 (0) | 2023.01.29 |
[이더리움과 월드 컴퓨터] 0. 이더리움 소개 (0) | 2023.01.24 |