이번에는 블록체인에 대해 공부해보려고 한다. NFT에 대한 글을 작성하려고 했지만, 블록체인에 대한 이해가 먼저인 것 같아 이 글을 먼저 작성한다. 깊게는 아니고 간단하게 알아볼 생각이다!
샌프란시스코 대학 정은진 부교수님의 영상을 참고하여 작성하였다. (링크는 맨 밑에)
블록체인이란?
블록체인 기술은 비즈니스 네트워크 내에서 정보를 투명하게 공유할 수 있도록 하는 고급 데이터베이스 매커니즘이다.
연쇄적으로 연결된 블록으로 저장된다고 볼 수 있으며, 네트워크의 합의 없이 체인을 삭제하거나 수정이 불가능하다. 체인 내의 노드는 시간 순서의 일관성이 있으며, 수정이 불가능하기 때문에 신뢰성이 보장된다.
이런 장점 덕분에 블록체인은 디지털 거래장부로 많이 쓰인다. 거래 장부를 작성하기 위해서는 두 사람의 합의가 필요하며, 합의된 장부는 수정이 불가능하고 순서도 수정이 불가능하다.
블록체인에서는 해시함수를 사용하여 순서를 저장한다.
해시함수
해시함수는 x를 이용하여 y를 찾는 것은 쉽지만, y를 이용하여 x를 찾는 건 쉽지않은 특성을 가진다. (비가역성)
이렇게 되면 x와 y의 순서에 대해 다르게 말하기 어려워진다.
블록체인은 거래장부에서 가장 많이 쓰인다.
블록체인의 탈중앙화 시스템
블록체인 없이 부동산을 거래한다고 생각해보자.
판매자 A는 구매자 B에게 돈을 받고 부동산을 매각했다. 두 사람은 서로의 계약서에 합의를 한 후 나눠가졌다.
이 상황에서 판매자 A와 구매자 B는 계약서를 수정할 수 있기 때문에 계약서를 신뢰할 수 없다.
판매자 A는 구매자 B에게 돈을 받고 부동산을 매각했다. 두 사람은 거래를 중앙 기관에 검증받았다.
이러면 중앙 기관이 정상적이라는 가정 하에 거래를 증명할 수 있다. 하지만 중앙 기관 데이터베이스에 문제가 발생한다면 두 사람 모두에게 피해가 발생하는 단일 취약점이 생긴다.
블록체인은 중앙 기관이 존재하지 않는 탈중앙화 변조 방지 시스템을 만들어 이 문제를 해결한다.
블록체인의 탈중앙화 거래 방식
- 부동산 판매자 A와 구매자 B는 각각 하나의 원장 페에지를 생성하여 거래를 기록한다
- 양 당사자의 승인을 받는다
- 블록체인 거래가 원장 페이지와 동일한 블록에 기록된다. 거래와 함께 암호화 해시도 블록에 기록이 되어 체인을 만든다.
- 시스템은 중앙 원장의 최신 사본을 모든 참가자에게 배포한다.
- 과거 거래에서 일어난 모든 손상은 전체 원장을 손상시키기 때문에 원장들은 수정이 불가능하다
블록체인의 구현 방식
블록체인은 왜 수정이 불가능한지 알아보자.
블록체인을 수정하는 한가지 예시를 들어보겠다.
A가 B에게 1비트코인을 준다고 했을 때 블록2에 거래내용을 작성한다.
하지만 A가 생각이 바뀌어 비트코인을 준다는 거래를 없었던 일로 하기위해 블록 2.1을 만들었다.
이 때 블록2가 블록2, 블록2.1로 나뉘어진다. 블록이 여러 개로 나눠지는 걸 포크라고 한다.
포크는 한 블록에서 해시함수로 이어진 블록이 두 개 이상일 때 발생한다.
그렇다면 블록2가 여러 개로 포크되었을 때, 실제 거래내역을 어떻게 알 수 있을까?
블록체인에서는 블록체인을 만드는 모든 사람들이 블록2가 실제 블록이라는 걸 합의한다. 이 때 합의알고리즘을 사용한다
합의된 모든 블록을 따라가면, 실제로 일어난 거래의 순서에 맞는 체인이 하나만 만들어지게 된다.
이 마지막 체인을 정격체인(Canonical chain)이라고 한다.
B가 받은 비트코인은 정격체인에 들어간 거래내역에 포함되어야 사용이 가능하다.
비잔틴 오류 허용(BFT)
거래내역을 수정하려는 사람들은 물론 존재하겠지만, 다른 여러 사람들이 모여 어떻게든 합의에 성공할 수 있다. 거래내역을 수정하려는 사람들 외에도 네트워크가 불안정하거나, 바이러스를 가진 컴퓨터를 사용하는 사람들이 포함되어 있어도 블록체인 시스템은 정상적으로 돌아가야한다. 이 때 비잔틴 오류 허용을 사용한다.
비잔틴 오류 허용은 장애가 있더라도 전체의 3분의 1을 넘지 않는다면 시스템이 정상 작동하도록 허용하는 합의알고리즘이다. 최소 3분의 2의 사용자는 정상 작동하는 선량한 참여자라는 가정이 들어간 알고리즘이라고 볼 수 있다.
현재 있는 대부분의 블록체인 알고리즘들은 어느정도의 BFT요소를 가진다고 한다.
+) 참고: 비잔티움 장군 문제
비잔티움 제국 장군들이 적의 수중에 있는 도시를 포위하려 한다. 도시를 함락시키려면 제국군의 대부분이 한꺼번에 도시를 공성해야한다.
그러나 비잔티움의 장군들은 자신들 중 몇몇이 이미 적과 내통하고 있음과 서로에게 연락할 전령들이 도시에서 나온 척후대에게 사로잡힐 수 있음을 이미 알고 있다.
어떤 장군이 황제에게 충성스러운지, 혹은 모반을 하려는지 확실하지 못한 상황에서 충성스러운 장군들은 배신자들이 병력을 물려 공성을 방해하거나 적에게 소식을 넘길수 있다는 상황 때문에 딜레마에 빠진다.
충직한 장군들은 전령들이 보낸 명령을 충실하게 따르며 이 외의 행동은 하지 않는다. 그러나 전체 장군 중 일부인 배신자 장군들은 전령에 얽매이지 않고 마음대로 행동할 수 있다. 이 때 배신자의 존재에도 불구하고 충직한 장군들이 동일한 공격 계획을 세우기 위해서는 충직한 장군들의 수가 얼마나 있어야 하며, 장군들이 어떤 규칙을 따라 교신해야 할까?
(비트코인은 작업증명이라는 합의구조를 처음 도입하여 비잔틴 장군의 문제를 해결함)
합의 알고리즘
어떤 노드가 맞다는 걸 증명하기 위해 투표를 진행한다고 가정해보자.
모든 블록체인을 사용하는 인터넷 사용자가 투표를 진행한다면 사람들이 같은 시간에 동시에 투표를 진행해야한다. 하지만 다음과 같은 문제가 있다.
(1) 컴퓨터 시간 오차가 존재하기 때문에 동시에 투표하는 것은 어렵다.
(2) 누가 집표 및 개표를 진행할 것인가? 그 사람이 정직하게 개표를 한다는 것을 믿을 수 없다
(3) 모든 사람이 투표를 완료하는 데 오랜 시간이 걸릴 수 있다
비트코인 개발자인 나카모토 사토시는 블록이 맞다는 걸 증명할 사람인 반장을 뽑는 방법을 생각하였다. 블록 하나 당 한 명의 반장을 뽑아 그 반장이 맞다고 하는 게 실제 블록이 된다.
이 방식을 사용하는 합의 알고리즘은 작업증명, 지분증명 등이 있다. (대부분 작업증명, 지분증명을 사용한다)
작업증명(Proof of Work)
목표값 이하의 해시를 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을 증명하는 합의알고리즘이다.
채굴자가 새로운 블록을 생성 및 채굴하며, 채굴자는 블록리워드를 얻는다.
비트코인, 이더리움, 라이트코인 등의 암호화폐가 작업증명 방식을 가지고 있다.
지분증명(Proof of Stake)
생태계의 지분을 얼마 이상 가지고 있으면 투표를 잘 할 수 있을 것이라고 기대된다. 이 지분률에 비례하여 의사결정 권한을 주는 합의알고리즘이 지분증명이다.
카르다노, 큐텀, 피어코인 등의 암호화폐가 지분증명 방식을 가지고 있다.
투표인단을 뽑아 그 집단이 투표를 하는 방법이 있다. 이런 간접 민주주의 방식을 쓰는 코인은 EOS, 이더리움 캐스퍼가 있다. 투표인단을 뽑기위해 가장 많이 쓰이는 건 지분증명이다.
(돈을 주고 표를 사는 느낌이 있다)
블록 리워드
투표 알고리즘은 굉장히 복잡하다. 블록체인 생태계를 유지하는 데 필요한 투표를 하는 등의 서비스를 자신의 시간, 전기, 컴퓨터 리소스를 들여서 할 사람들이 필요하다.
이를 위해 대부분의 암호화폐 알고리즘에서는 블록을 생성, 저장, 투표하는 일을 할 시 블록리워드를 제공한다. 투표 서비스를 하여 블록 리워드를 챙기는 것을 채굴이라고 부른다.
ICO(Initial Coin Offering)
IPO는 회사가 어느정도 궤도에 올라가면 주식회사가 되어 상장하게 된다. 이것을 IPO라고 한다.
iCO는 이와 비슷한 뜻으로, 어떤 사업에 투자하면 코인을 주는 투자이다.
ICO 예시: 파일코인
파일코인을 사용하는 예시는 다음과 같다.
나는 내 컴퓨터의 50기가를 백업 스토리지로 제공한다.
구매자는 컴퓨터 5기가를 한 달에 얼마의 코인을 내고 사용하는 걸 약속한다.
입찰 내용은 블록체인에 다 기록이된다. 5기가를 제공한 후 코인을 받을 수 있다.
이 예시는 채굴이 없다.
블록체인에 사적인 정보들을 올리면 모든 사람들이 그 내용을 볼 수 있다. 그래서 데이터를 올리되, 암호화를 하거나 익명성 있게 처리하도록 하는 연구가 계속 이뤄지고 있다고 한다.
정리
블록체인은 디지털 거래 장부
블록체인의 특징 (1)탈중앙화 (2)불변성 (3)합의
합의알고리즘에는 작업증명, 지분증명이 있다.
참고자료
https://www.youtube.com/watch?v=kl5pkhbqz3k
https://namu.wiki/w/%EB%B9%84%EC%9E%94%ED%8B%B0%EC%9B%80%20%EC%9E%A5%EA%B5%B0%20%EB%AC%B8%EC%A0%9C
http://wiki.hash.kr/index.php/%EB%B9%84%EC%9E%94%ED%8B%B4_%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9
'블록체인' 카테고리의 다른 글
[블록체인] DID란? (Decentralized Identifier, 탈중앙화 신원증명) (0) | 2023.12.02 |
---|---|
블록체인 기술을 활용한 분산형 웹 IPFS (0) | 2023.09.20 |