들어가기 전, 이 포스팅은 책의 내용을 그대로 베낀 것이 아니라 책을 바탕으로 공부하고 찾아본 것들을 정리한 내용임을 밝힌다.
왜 이 책을 선택하게 되었는가?
스터디 멤버들의 직무가 다양했고 콘텐츠 관련 직군이 더 많았기에, 기술에 대해 심도있게 다루는 책 보다는 블록체인에 대한 기본적인 이해를 다지는 것이 더 옳은 방향이라고 보았다. 스터디를 시작하며 오프라인으로 만나 스터디 방향을 의논했는데, 지나치게 심도 있는 내용 보다는 기술에 대한 소개와 기초를 다지고, 블록체인 기술이 어떻게 응용될 수 있는지를 아는 것이 더 중요하다는 것에 의견이 일치했다.
이 책은 총 5개의 stage, 25개의 step으로 구성되어 있다.
stage 1 : 용어 및 기술 기초
stage 2 : 왜 블록체인이 필요한가
stage 3 : 블록체인은 어떻게 작동하는가
stage 4 : 한계와 극복 방안
stage 5 : 블록체인 이용, 요약, 그리고 전망
이렇게 5개의 stage가 존재하고, 그 하위에 step으로 더 세부적인 구분을 하고 있다.
2018 – 2019년, 블록체인 열풍의 해
2018년 1월 암호화폐 열풍이 불면서 블록체인에 대한 관심도 급증했다. 다니던 회사에도 암호화폐 열풍이 불어서, 하루종일 시세 차트만 보는 사람도 있었고, 암호화폐 시세에 따라 기쁨과 슬픔이 교차하는 풍경이 흔했다. 뉴스에는 연일 암호화폐 관련 소식이 보도되었고, 수많은 거래소가 생겼다. 연일 새로운 암호화폐가 출시되어서 이 글을 쓰는 2019.01.20 기준으로 Coinmarketcap에 등재된 코인 개수만 해도 2,116개에 달한다.
그런데 이렇게 블록체인 열풍이 불었음에도 불구하고, 정작 블록체인 기술에 대해 공부하는 사람은 얼마나 될까? 블록체인 기술 보다는 투기용으로 더 많이 사용되는 것 같다. 정작 나만 해도 암호화폐를 몇 종류 가지고 있지만 ‘블록체인이 무엇인가?’라고 묻는다면 명쾌하게 답하지 못한다.
블록체인이란 무엇인가?
A blockchain, originally block chain, is a growing list of records, called blocks, which are linked using cryptography. Each block contains a cryptographic hash of the previous block, a timestamp, and transaction data (generally represented as a merkle tree root hash). |
위키피디아에 따르면 블록체인이란 ‘블록’ 이라고 불리는, 점점 증가하는 기록들의 리스트이다. 이 블록들은 암호화되어 연결되어 있다. 각각의 블록들은 이전 블록의 암호화된 해시(hash), 타임스탬프, 거래내역 데이터를 가진다.
Blockchain Basics에 따르면, 블록체인이라는 용어는 문맥에 따라 여러가지를 의미할 수 있다. 데이터 구조, 알고리즘, 기술, 공통 어플레케이션 영역을 가진 순수한 P2P 시스템의 그룹 등을 의미할 수 있다고 한다.
블록체인은, 말 그대로 ‘블록’들을 체인처럼 연결한 것이다. 각 블록에는 여러가지 정보가 들어있으며, 위/변조가 매우 어렵다. 각 블록은 1) 데이터, 2) 그 데이터의 해시값, 그리고 3) 바로 이전 블록의 해시값을 가지고 있다.
1) 데이터
– 하나의 블록에 저장된 데이터는 블록체인의 종류에 따라 다르다.
– 비트코인을 예시로 들자면, 비트코인 블록 안에는 수신자, 발송자, 금액에 대한 데이터를 가지고 있다.
2) 해시값
– 해시는 지문 같이, 블록을 식별할 수 있는 고유값이다.
– 블록이 생성될때마다 해시값이 계산된다.
– 블록 내에 뭔가가 변경이 되면, 해시값은 완전히 다른 값으로 바뀐다.
– 그렇기 때문에 해시는 블록의 데이터가 변경되었는지를 알 수 있는 좋은 수단이다.
– 해시값이 변경되면, 그 볼록은 더 이상 같은 블록이 아니게 된다. (완전히 다른 블록이라고 인식하게 됨)
3) 이전 블록의 해시값
– 블록은 이전 블록의 해시값을 가지기 때문에, 서로 무결하게 연결될 수 있다.
– 예를 들어 블록체인에 3개의 블록이 있다고 치자. 3번은 2번 해시값을 물고 있고, 2번은 1번 해시값을 물고 있는 방식으로 연결되어 있다.
– 만약 2번 블록의 데이터를 변경한다면, 2번 블록의 해시값이 변경되고, 이 변경된 해시값은 3번 블록이 가지고 있던 원래의 2번블록 해시값과 일치하지 않기 때문에, 무엇인가 잘못되었다는 것을 감지할 수 있다.
– 블록체인에 3개 이상의, 아주 많은 블록들이 있다고 친다면, 2번 블록의 해시값과 3번이 가진 2번의 해시값이 일치하지 않기 때문에, 3번 블록 이후가 다 무효가 된다.
– 즉, 블록체인에서는 하나의 블록을 변경하면 이후의 모든 블록들이 무효화되기 때문에, 데이터가 변경되는 것을 막을 수 있다.
소프트웨어 구조의 2가지 타입 :
중앙화 시스템 vs 분산화된 시스템
(Centralized system vs Distributed system)
소프트웨어의 구조에는 분산화된 시스템과 중앙화 시스템 두 가지가 있다.
중앙화 시스템에서는 하나의 중앙 구성 요소가 존재하며, 다른 모든 구성요소들은 이 중앙 구성요소에 연결되어 있다. 이와 다르게 분산형 시스템에서는 특정 중앙 구성 요소가 존재하지 않으므로 특정 하나가 나머지를 조정하거나 통제하지 않는다. 다만 각자가 연결된 요소들의 네트워크를 형성한다.
개념적으로 헷갈렸던 게, 이 장을 읽기 전까지 나는 Centralized vs Decentralized (=Distributed)라고 생각을 했었는데, Decentralized와 Distributed는 동일한 개념이 아니었다.
decentralized 시스템은 distributed 시스템의 부분집합이다.
이 책에서 distributed vs centralized로 구분한 이유가 있었나보다.
이에 관해 잘 설명한 글이 있어 첨부한다.
Centralized vs Decentralized vs Distributed
블록체인의 특징 중 하나는 분산화된 시스템인데, 분산화된 시스템은 다음과 같은 장/단점을 가진다.
분산화된 시스템의 장점
– 높은 컴퓨팅 성능 (컴퓨터가 여러대니까?)
– 비용 절감 (운영주체가 다르니까? 중앙화된 슈퍼컴퓨터는 비싸니까?)
– 높은 신뢰성 (여럿이서 검증해주니까?)
– 자연적으로 성장하는 능력 (더 많은 애들이 시스템에 조인할테니까?)
분산화된 시스템의 단점
– Cooordinatino overhead
– 커뮤니케이션 overhead
– 네트워크에 대한 종속성
– 높은 프로그램 복잡성
– 보안 이슈
여기서 overhead가 정확히 어떤 개념을 의미하는지 이해하지 못했다.
분산화된 P2P 시스템
P2P 네트워크는 분산화된 시스템의 특별한 종류이다. 이들은 ‘노드’라고 불리는 각각의 컴퓨터로 구성되어 있다. P2P 네트워크를 통해 각각의 개별 컴퓨터는 다른 모든 모든 구성원들의 계산 자원(예: 처리 능력, 저장 용량, 데이터 또는 네트워크 대역폭)을 바로 이용할 수 있으며, 모든 노드는 시스템 내에서 동일한 권한과 역할을 가진다. 또한, 이들은 네트워크의 공급자이자 소비자로써 기능한다.
쓰다보니 글이 너무 길어져서, P2P 시스템에 대해 잘 정리한 글이 있어 링크로 대체하고자 한다.
[투이컨설팅] 블록체인은 어떻게 탈중앙화를 가능하게 하는가: P2P의 출현과 노드의 탄생 배경
'Programming > Blockchain' 카테고리의 다른 글
NFT의 구조: NFT Media Data, Meta Data, Smart Contract (0) | 2021.12.07 |
---|---|
가상자산 과세 (0) | 2021.12.03 |
Articles to read (0) | 2021.10.27 |
페이스북 암호화폐 지갑 Novi의 파일럿 출시 (0) | 2021.10.26 |
[NFT 사전] NFT Drops란? (0) | 2021.10.26 |
SSO (Single Sign-On) (0) | 2021.10.18 |
[0회차] 블록체인 스터디 시작 (0) | 2019.06.26 |
마이크로비트코인 예전 지갑 앱에서 신규 지갑 앱으로 옮기기 (불러오는 방법) (2) | 2018.11.13 |