블록체인 개발 - 1

김성진·2021년 9월 13일
0

이 글의 목적은 블록체인의 '블'자도 모르는 사람들이 블록체인개발을 할 수 있도록 돕게 하는 것이다. 그렇다면 블록체인 개발을 하려면 무엇을 알아야 할까? 나의 생각을 적어본다. 저자 또한 이 블로깅을 하면서 완벽하게 이해가 되도록 노력해볼 것이다.

자산 (가치)

이 부분은 어디서 레퍼런스를 얻어 온 것이 아닌, 지금까지 내가 블록체인 개발 공부를 하며 느낀 한 부분이다. 우리는 블록체인을 이해하기 전에 자산이라는 것에 대해 재정의가 필요한 것 같다. 현대사회에서 우리는 이 자산물질로 밖에 인식하지 못 하고 있는 거 같다. 예를 들어 화폐(현금), 차, 집, 유명한 화가의 그림 등.. 블록체인 세상 속에서의 자산은 가상공간에서의 물건이다. 그 예로 NFT(Non Fungible Token)가 있다. 그 고유의 토큰 속에 그림, 영상, 문서 등등의 것을 넣어두는 것이다. 누군가가 나에게 이런 질문을 했다, "아니 그깟 실존하지도 않는 이미지 한장을 왜 굳이 돈을 주고 사?"라고, 그에 나는 반문했다. "그러면 우리는 구글 이미지 검색 창에 모나리자라고 치면 수천 수만가지가 나오는 사진을 왜 굳이 돈 주고 비행기표를 끊어서 파리까지 가서 그 사진을 볼까?" 이유는 간단하다. 유일무이한 원본(originality)이기 때문이다. NFT가 가치가 없다면, 사람들이 사는 조각상이나 그림이나 그 모든 것들도 가치가 없다고 해도 마찬가지이다. 우리는 그림이나 조각상을 보기는 하지만 실제로 그것들로 놀이를 한다던가 무언가 행위를 하지 않기 때문이다. 블록체인 네트워크는 어쩌면 인류가 가상현실 속에서의 가치를 찾는 첫 발판이 될지 모른다.


목차

  1. 가상화폐 & 블록체인의 이해
  2. 스마트 컨트렉트
  3. web 3의 이해

아래 내용들은 간략한 정의다. 읽어도 그만 안 읽어도 그만, 불필요하면 스킵하고 다음 글로 넘어가자.

블록체인이란?

데이터를 안전하게 저장하고, 온전히 보관하는 기술.
누구나 열람할 수 있는 디지털 장부에 거래 내역을 투명하게 기록하고, 여러 대의 컴퓨터에 이를 복제해 저장하는 분산형 데이터 저장기술. 2009년 초 '나카모토사토시'라는 가명의 인물이 비트코인 거래의 방법으로 내놓은 기술.

노드란?

블록체인에서 네트워크 참여자들이 사용하는 기계를 노드라 칭한다. 즉 블록체인의 네트워크란 각 노드 들의 네트워크라 할 수 있다. 여기서 노드는 스마트폰이나 PC 등 데이터를 다운 받을 수 있는 모든 기계면 가능.
보유한 데이터의 양에 따라 풀노드, 라이트 노드로 나뉜다.

풀노드: (채굴 가능 노드)

모든 데이터를 보유 하는 것을 말한다. 풀노드는 본인의 거래를 검증할 수 있고 믿을만 하다. 하지만 방대한 양의 데이터를 보유하고 있어야 한다.

라이트노드: (거래만 가능 노드)

데이터의 일부분만, 거래는 가능하지만 자료검증은 불가능하다. 하려면 풀노드에게 확인이 필요하다. 대신 적은양의 데이터이기에 저장 공간은 크게 필요하지 않다.

비잔틴 장애 허용 알고리즘

장애가 있더라도 전체의 3분의 1을 넘지 않는다면, 시스템이 정상 작동하도록 허용하는 합의 알고리즘이다.
반대로 말하면, 전체의 2/3은 정상(기존방침)을 지지한다면 시스템이 작동하도록 허용.

  • 의문 1: 동일한 내용의 장애가 3분의 1을 넘지 않아야 하는가? 혹은 동일하지 않은 내용의 "모든 문제"가 3분의 1을 넘지 않아야 하는가?

두 장군의 문제 (Two Generals Problem)

1972년 등장한 일종의 가상 실험이다. 이 실험에서의 가정은 두 아군 부대의 장군 A와 B가 적군이 점령한 도시 양옆에 주둔한 상황이며 두 장군은 적군을 점령하기 위해 두 부대가 같은날, 같은 시각에 공격하려 한다. 이때 연락을 주고 받아야 하는데 이를 담당하는 연락병은 직접 적군의 도시를 통과해야 하며 이러한 연락병이 가진 메시지는 항상 적군에게 뺏길 위험이 존재한다는 가정하에 진행이 된다.
장군 A는 B에게 메시지를 보냈지만 잘 전달됐는지 확신을 못 한다.
이에 B가 메시지를 잘 받았다면 A에게 확인 답장을 보내야 하는데 B도 만찬가지로 이 메시지가 A에게 무사히 도달했는지 확신을 못 한다. 이에 B를 안심시키고 함께 공격하기 위해 A가 답장을 받았다고 재 답장을 해야 하지만 이 역시 B에게 잘 도달했는지 모른다.
결국 두 장군이 같은 수준의 합의에 도달할 수 없고 이러한 불확실성은 결국 함께 적군의 도시를 공격할 수 없다는 의미이다. 이 문제는 실제로 해결할 수 없는 것으로 증명됐으며 비트코인으로 치면 잠재적인 배신자들이 섞여 있는 한 참여자들은 같은 내용의 거래기록을 갖는 데까지 도달하지 못 한다는 의미다.

합의 알고리즘

블록체인 네트워크에서 합의를 달성하는 매커니즘으로 정의한다. 가장 일반적인 예로 비트코인의 작업증명(PoW, Proof of Work)을 들 수 있다. 블록체인 중 가장 처음 제시된 비트코인의 합의 알고리즘 중 작업증명방식(PoW)는 타임 스탬프(Timestamp)와 서명(Sign, 블록체인에서는 Key)을 통해 이 문제를 해결한다. 위에서 말한 장군 상황으로 돌아가면, '장군은 메시지를 보내기 위해 10분의 시간을 가지며, 메시지는 모든 장군의 메시지와 메시지를 보내기 위해 10분을 들였다는 증거를 포함한다.'라는 규칙이 추가됨에 따라 중간의 비잔틴 장군이 존재하더라도 다른 장군들은 이 장군이 거짓임을 밝혀낼 수 있다.

profile
multi-national communicator with programming (back-end)

0개의 댓글