블록체인 생태계

Knave·2021년 7월 26일

BC

목록 보기
1/10

블록체인 생태계

블록체인 생태계에서 비즈니스 모델이나 수익성을 창출하는 방식은 기존의 비즈니스 생태계와 많이 다르다. gitcoin.co 등을 통해 개발자의 역량에 따라 수익을 낼 수 있는 곳이 있고, 기존 비즈니스 생태계에 블록체인을 적용하려한다면 적요하려는 것이 적합한지, 블록체인이 필요한지, 수익창출 방안은 있는지 등에 대해 추가적인 연구가 필요하다.
⇒ 기존 생태계에 적용할 알맞는 BC 비즈니스 개발의 필요성 이 존재한다.

블록체인이란.

블록체인에 할 수 있는 것은 입력을 통해 체인에 무엇을 쓰고, 쓴것을 불러오는 것. 이 두가지. BC에서는 이를 트랜잭션이라고 한다.

이러한 과정이 web이나 현실에서는 관리자나 담당자가 대신 해주는 과정이 있는데 BC에서는 체인상에 여러명이 직접 올리고 불러오는 행위가 가능해지면서 관리자, 담당자의 위변조 리스크가 줄어들게 된다. 다만 그래도 중앙화된 시스템을 이용하는 이유는 관리의 속도 측면에서의 장점이 있기 때문.

비트코인 트랜잭션

Apply(S, trx) ⇒ s' or Error

일단 위의 표현이 이해가 가지 않아도 트랜잰션이라는 것을 통해 어떠한 것의 상태를 바꾸는 것이라고 이해해도 좋다.

S는 State, 기록된 상태를 의미하고, tx 트랜잭션은 송금과 같은 것이다.

trx를 통해 S가 바뀌게 되는데

비트코인에서 S는 수많은 각기 다른 크기의 UTXO(Unspent TX output)로 이루어져있다.

수많은 UTXO들이 담긴 S는 웹에서 본다면 DB(데이터베이스)부분,
mariaDB와 같은 존재로 데이터를 담아놓는 부분과 유사하다.

일정 코인을 A에서 B에게 전송하는 예시를 들어보자

만약 A가 B에게 5BTC를 보낸다면

5BTC보다 큰 UTXO를 가져와서 tx에 인풋.

B에게 5BTC 생성, A에게서 5BTC 제거, 하는 과정을 통해

기존의 S가 5BTC가 전달되는 위의 과정을 통해 S'로 바뀐다. (?)

이 과정 속에서 TX는 생성, 서명, 전송의 과정을 거치는데
생성과 서명은 오프라인에서도 가능하지만, 전송 과정이 노드를 통해 네트워크 상에서 이루어진다. 개개인이 이러한 TX를 생성후 네트워크로 전송하게 되면 여러곳에서 생성된 tx들이 "노더" 라는 사람들의 노드의 tx pool에 담기게 된다. 노드에서는 서명된 TX에 대해 여러 유효성 검사를 진행하고, 검사를 마치면 다른 노드에서도 검사를 마친 결과를 TX pool에 담게 된다. 결과적으로 노드별로 여러 검사결과를 담은 TX pool을 하나씩 각각 다 소지 하고있는 상황이 된다.

이후에 각 노드에서 가상의 블록만든후, 안에서 문제해결(nonce를 맞추는 작업)을 하는 과정을 거치게 되고, 문제해결을 끝내게 된다면, 문제해결을 먼저 끝낸 노드에서 해당 TX pool을 본래의 블록에 업로드하게 된다.

블록이 업로드 된다면 그 결과가 새로운 S로 업데이트가 된다. 문제해결에 실패한 노더들은 다름 문제해결을 준비하게되고, 그 과정속에서 해결한 노더의 tx pool에 존재하던 tx들은 제외하고, 미해결된 tx들은 그대로 보유한채 다음 블록에 올리기 위해 마이닝을 진행한다.

마이닝이란?

노더와 마이너는 유사하지만 차이점을 쉽게 구분짓는다면, 문제해결의 과정까지 하느냐 안하느냐의 차이이다. 문제해결의 과정, nonce값을 맞추는 과정이 마이닝이라고 불리고, 이 과정에서는 막대한 연산능력이 필요하다. 반면에 노드를 보유하고 tx의 유효성 검사를 진행하는 것은 마이닝과 같은 연산능력이 필요하지는 않다. 그래서 마이너는 노더가 맞지만, 모든 노더가 마이너가 되는 것은 아니다. 마이너가 되기 위해서는 추가적인 장비라던지, 해야할 것이 추가된다.

블록

마이닝 과정을 통해 생성된 블록의 헤더에는 각 블록의 해시값과 , timestamp, txroot 등이 들어가고, 바디 부분에는 여러 tx들이 들어가 있게 된다.

블록 갱신

위는 간단한 블록 갱신의 과정인데 마이너는 채굴에 성공할시 노더에게 다시 보낸후에 노더들의 재검증 과정을 통해 본래의 블록에 새로운 블록으로 추가되게 되고, 그 새로운 블록에는 그간에 이루어진 기록들이 담겨져있게된다. 이더리움의 경우 이러한 새 블록 갱신, 추가과정이 20초 남짓인데, 블록의 갱신 과정이 빠를 수록 해당 체인의 처리속도가 빠르다고 말할 수 있다. 블록 생성의 난이도는 nonce값을 맞추는 난이도와 같고, 이 난이도 조절을 통해 블록 생성의 속도 또한 조절이 된다. 예를 들어 0x000@@@@ 여기서 특정 @자리 4자리보다 낮은 수의 nonce를 찾는것 보다,
0x000000@@@@ 이러한 형태에서 낮은 수를 찾는 것이 훨씬 어렵기 때문에, 아래의 경우로 마이닝을 진행한다면 마이닝의 난이도가 상승하게되고 블록생성 속도 또한 느려지게 된다.

아래는 간단한 스마트 컨트랙트 진행방식의 모습이다. ↓

이더리움 생태계

이더리움에서 s.c(스마트 컨트랙트)를 배포한다는 것은 웹에서 본다면 새로운 함수를 node.js에 넣는 느낌이고, 이를 웹이 아닌 체인네트워크에 접근이 가능한 타인이면 누구나 불러와서 실행할 수 있다는 점이 특징이다.

다만 현재의 웹과 다른점은 로그인 등을 할떄 개인키를 가지고 해야한다는 점과 이러한 체인의 구조와 작동방식을 사용자 개개인이 어느정도 인지를 하고 있어야 사업의 서비스 등이 원활하게 이루어 질 수 있는데, 아직까지는 대다수의 대중들에게는 낯설고, 쉽게 이해되지 못하는 상황이라고 생각한다.

지갑

MetaMask와 같은 가상 지갑은 위의 State에 있는 정보를 가시화 시켜주는 것이고

지갑의 가장 주요한 기능은

  • 개인키 관리
  • 노드 주소

간단한 개인키, 공개키 원리와 함께 설명하면

이런식으로 지갑이 형성되어 있는데, 하나의 개인키를 가지고 여러개의 공개키를 만들고,지갑은 이를 사용을 위해 서명하거나 하는 것을 편리하게 만들어준다.

이더리움 블록에 들어가 있는 S의 상태는 비트코인과 다른데,

이더리움은 오른쪽과 같은 account 방식으로 들어가 있어서 비트코인의 UTXO방식에 비해 효율적이고 S.C를 사용하기에 적합하다. 비트코인의 UTXO 방식은 생소하고 어려웠지만, 이더리움의 account 방식은 그냥 평상시 사용하는 은행계좌의 방식과 같다고 보면 된다.

profile
Hello

0개의 댓글