블록체인
블록체인은 관리자 없이 자율적으로 동작하는 분산 시스템 기술을 통칭하며, 화폐 거래 명세를 '블록'이라는 데이터 단위로 저장한 후 해당 블록의 해시값(암호화폐를 구분하는 데이터)을 다른 블록에 저장시켜 체인 형태의 연결고리를 만듭니다. 거래에 사용되는 화폐는 암호화폐(Cryptocurrency, 가상화폐)로, 전자 서명, 해시 체인 등 암호학 기반 기술을 사용하여 구현한 비트코인 및 비트코인 기술 기반의 전자화폐입니다. 여기서 비트코인은 나카모토 사토시가 제안한 전자화폐 시스템으로, 기존 전자화폐와 달리 관리자 없이도 자율적으로 동작하는 분산 시스템입니다.
분산 시스템이란?
분산 시스템은 공유하는 공동의 목표를 달성하기 위해 여러 개의 개별 컴퓨팅 노드에서 컴퓨팅 자원을 활용하는 컴퓨터 프로그램의 모음입니다. '사용자를 위한 단일 컴퓨터를 형성하기 위해 함께 작동하는 컴퓨터들의 집합'이나, '서로 다른 컴퓨터들에 자리 잡고 있는 독립된 컴포넌트(여러 개의 프로그램 함수들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위)들의 묶음'이라고도 하는데, 중요한 것은 여러 개의 컴퓨터가 동일한 일을 처리하기 위해 네트워크상에서 서로 통신하며 협력한다는 점입니다.
블록체인은 어떤 일이 일어난 날짜와 시간을 저장하는 타임스탬프를 사용합니다. 타임스탬프는 해당 일이 일어났다는 증거가 되며, 사건과 사건간의 앞뒤 관계를 알려주기에, 블록체인에서는 거래 사실을 증명하는 데 중요한 역할을 합니다.
다만, 타임스탬프를 개개인의 기기에 설정된 시간을 바탕으로 기록하면 조작될 수도 있다는 위험이 발생합니다. 이러한 위험을 막기 위해 보통은 중심이 되는 시스템이 타임시스템을 작성하여 무결성을 유지하는데, 블록체인은 분산 시스템이기에 서버 등을 이용할 수 없습니다. 그래서 노드가 특정 시간 흐름을 공유한 후, 앞뒤 순서를 암호학에 기초한 자료구조로 판단하는 타임스템프 구조를 사용합니다. 다시 말해, 노드는 2023년 5월 16일 7시 38분 42초 같은 절대 시각 대신에, 시각 2개의 앞뒤 순서를 구분할 수 있는 상대 시각으로 시간의 흐름을 정의한다는 것입니다.
블록체인에서 구현한 비트코인의 송금 시스템의 자료구조에는 계정 기반 잔액 저장 방식이 있습니다. 이는 여러 계정의 잔액을 동시에 업데이트하는 거래 기능을 구현하는데, 200원이 있는 계정에서 100원이 있는 계정으로 10원을 송금한다면, 200원이 있던 계정의 잔액은 190으로 업데이트 하고, 100원이 있던 계정의 잔액은 110원으로 업데이트하는 방식입니다. 그러나 이 방식에는 문제가 있습니다. 만약 두 계정에서 100원을 가진 다른 한 계정에 동시에 10원을 송금해준다면 둘 다 계정의 잔액을 110으로 업데이트 시키기 때문에, 20원을 받았음에도 10원만 추가되는 오류가 생기기 때문입니다. 이러한 문제를 막기 위해 송금을 할 때에는 거래 기반 방식을 사용합니다. 이는 화폐의 소유권을 넘겨주는 방식으로, 100원을 가진 계정 A에서 50원을 가진 계정 B로 50원을 송금할 때, 화폐를 50원 단위로 나눈 뒤 총 잔액만큼 3개 발행하고, 이 중 2개를 A의 소유로, 남은 하나를 B의 소유로 설정한 다음, B에게 50원을 송금하는 거래이기 때문에 A의 소유였던 화폐 중 하나를 B의 소유로 재설정하는 방식입니다. 그러면 50원짜리 화폐를 A는 1개 , B는 2개 가지기 때문에 제대로 거래가 이루어졌다고 볼 수 있습니다.
이더리움
이더리움은 암호화폐는 물론 스마트 계약 등의 애플리케이션을 블록체인에서 실행하려는 목적의 플랫폼입니다. 비트코인을 다양하게 활용하기 위한 블록체인 플랫폼은 많이 개발되었으나, 2015년 이더리움이 등장하면서 큰 전환기를 맞았습니다.
스마트 계약
스마트 계약은 공유 네트워크를 통하여 결과에 대한 신뢰를 쌓아나갈 수 있는 기반에 확보된 자동화된 계약 처리의 형태입니다. 블록체인을 이용한 스마트 계약은 계약 이행 및 검증의 과정이 네트워크로 자동화되고, 중계자의 간섭과 추가 비용 없이 직접 처리하도록 만들어집니다. 또한 프로그램으로 설정된 기준을 만족하면 자동으로 계약을 진행하고, 상대를 신뢰하지 않아도 거래에 문제가 발생하지 않습니다. 따라서 스마트 계약은 신뢰를 바탕으로 안전하게 계약을 실행할 수 있게 합니다.
이더리움은 비트코인으로 블록체인 네트워크에서 탈중앙화 애플리케이션을 실행할 수 있는 스크립트 언어를 제공하며, ETH라는 화폐 단위를 매개체로 애플리케이션을 개발하거나 이용할 수 있습니다. 여기서 애플리케이션을 실행하는 연료로 ETH를 사용하고, 이더리움에선 애플리케이션을 실행하는 데 사용되는 ETH 비용을 가스라고 합니다.
가스는 이더리움 거래를 할 때도 쓰이는 용어입니다. 이더리움 거래는 네트워크에 속한 노드에 연산시키는 것이기에 노드에 주는 연료가 필요합니다. 이때 노드에 주는 연료, 즉 블록에 거래를 저장할 때 지급하는 수수료도 가스라고 칭합니다. 거래를 실행할 때, 가스가 부족하면 연산에 필요한 연료가 부족해지는 것이므로 중간에 거래를 실패할 수도 있기 때문에 충분히 준비해 두어야 합니다.
이더리움은 스마트 계약을 처리하기 위한 튜링 완전 가상머신, EVM을 제공합니다. 이더리움 네트워크에서 스마트 콘트랙트를 실행하기 위한 안전하고 격리된 환경을 제공하며, 튜링 완전 프로그래밍 언어에서 작동하므로 개발자는 복잡한 프로그램과 알고리즘을 작성할 수 있습니다. EVM은 스마트 콘트랙트 및 분산 응용 프로그램에서 생성 및 실행을 가능하게 하는, 이더리움 생태계의 필수 구성 요소입니다.
튜링 완전
튜링 완전은 어떤 프로그래밍 언어나 추상 기계가 튜링 기계(무한한 테이프(기억장치)를 가진 기계)와 동일한 계산 능력을 가진다는 의미를 가집니다. 실제로 무한한 기억 장치를 갖는 기계를 만드는 것을 불가능하지만, 제한 없이 기억 장치의 크기를 늘려갈 수 있다고 가정할 수 있는 물리적인 기계, 또는 프로그래밍 언어들을 튜링 완전하다고 여깁니다.
익명 암호화폐
블록체인에 저장한 거래는 특정 블록 잔액, 개인 정보 등이 유출될 위험이 있습니다. 이를 해결하기 위해 거래 익명성을 강화한 암호화폐가 등장했는데, 그 예시로 대시, 모네로, Z캐시를 들 수 있습니다.
대시는 두 사람이 직접 거래하는 것이 아닌, 거래 풀을 이용하는 방식인 '믹싱'으로 거래를 실행합니다. 이 방법을 사용하면 사람 사이에 거래한 흔적을 남기지 않기 때문에 범죄자들이 개인 정보를 알아내기 어렵게 만듭니다.
모네로는 여러 사람이 그룹 하나를 형성해서 거래에 서명하는, 즉 거래 하나를 여러 개의 거래로 나눈 후 그룹에 있는 사람이 개별적으로 서명하는 방식인 '링 서명'으로 거래를 실행합니다. 여기서 서명이란 네트워크에서 송신자의 신원을 증명한다는 뜻을 가집니다.
Z캐시는 어떤 사항이 참, 또는 거짓이라는 것을 증명할 때, 그 사항의 참, 또는 거짓 여부를 제외한 어떠한 것도 노출시키지 않는 기술인 '제로 지식 증명'으로 익명성을 보장합니다. 제로 지식 증명을 사용하면, 거래 당사자 두 사람 이외에는 아무도 두 사람의 주소, 거래 금액 등의 정보를 알 수 없게됩니다.
블록체인 1.0과 2.0
일반적으로 비트코인의 블록체인을 버전 1.0이라고 하며, 이더리움의 블록체인을 버전 2.0이라고 합니다. 버전 2.0에서는 클라우드 컴퓨팅 기술이 추가되었습니다. 또한 버전 1.0은 장부 안 데이터 기록, 읽기만 가능한 단반향 통신 환경이었으나, 버전 2.0에서는 장부에 프로그램 코드를 작성하여, 실행까지 시킬 수 있는 등의 동적 상호작용이 가능합니다. 후일에는 사회 전반에 블록체인 기술이 적용될 수 있는 단계인 버전 3.0이 나올 가능성도 있습니다.
※Geth가 깔리지 않습니다. 온갖 블로그를 찾아다녔는데도 해결되지 않습니다. 도와주세요.
※genesis.json 까지는 만들었습니다.
'etc' 카테고리의 다른 글
아무도 못 푼 문제 푸는 중_백업 (0) | 2023.04.05 |
---|