개발 일기

블록체인 등장 본문

Block Chain/TECHIT 블록체인 온보딩 트랙

블록체인 등장

개발 일기장 주인 2024. 7. 10. 23:37

탈 중앙화 된 비트코인의 등장

비트코인 백서가 등장한 배경은 바로 2008년 10월에 발생한 '리먼브라더스 사태'이다. 2008년 9월 15일 미국의 투자은행 리먼브러더스 파산에서 시작된 글로벌 금융위기를 칭하는 말로 리먼 파산은 미국 역사상 최대 규모의 기업 파산으로, 파산 보호를 신청할 당시 자산 규모가 6390억달러(700조원)였다고 한다.

그 결과 사람들이 중앙화된 금융 기관을 불신하기 시작했다. 그래서 중앙화 된 기관을 거치지 않고 거래 가능한 비트코인이 등장하게 된 것이다.  익명의 비트코인 개발자 사토시 나카모토는 2008년 논문과 함께 비트코인 코어를 처음 공개했고 분산화된 네트워크를 통해 제3자가 필요 없는 P2P 거래를 구현했다.

 

이중 지불 문제

이러한 비트코인이 나오기 위해서 이중 지불 문제가 해결되어야 했다.

 

이중 지불 문제(Double spending problem)란 말 그대로 이중으로 지불되는 상황이 발생하는 문제를 말한다.

오프라인에서 현금을 지급하는 경우 현금이 한 손에서 다른 손으로 직접 이동하기 때문에 이동 과정에서 지폐가 갑자기 복제되는 문제가 발생하지 않지만 온라인의 경우 모든 거래가 데이터, 즉 컴퓨터 코드로 이뤄졌기 때문에 코드의 수정으로 이미 거래된 돈을 거래되지 않은 것처럼 속일 수 있기 때문이다. 보통은 이러한 상황을 막기 위해 중앙화 된 기관인 금융 기관이 존재하는 것이다.

 

 예를 들어 A의 잔액이 10000원 B의 잔액이 0원인 상황에서 A가 B에게 10000원을 지불하는 거래를 실행하다면, 거래 이후 A는 0원  B는 10000원이 되어야 합니다. 그런데 만약 거래시간의 차이나 해킹 등으로 A에 지갑에 여전히 10000원이 존재한다면, 두 사람 모두 잔액이 10000원이 되는 이상한 상황이 발생하게 됩니다. 이 상황에서 A는 이 10000원을 이용해 다른 거래를 할 수 있게 됩니다. 이것이 같은 금액을 여러 차례 지불하는 이중 지불 문제입니다.

 

 

비트코인의 개발자 사토시 나카모토는 다음과 같이 온라인 세상에서 제3자 없이 거래가 가능한 전자화폐를 만들고자 했고 그래서 개발된 것이 바로 비트코인이다. 비트코인은 이중 지불 문제를 현재 우리가 블록체인이라고 부르는 기술로 해결한 것이고 그래서 비트코인하면 블록체인이 계속 언급된 것이다.

 

블록 체인

그럼 이제 블록 체인에 대해 이해해보자.

  • Block(블록): Data
  • Chain(체인): Link

블록체인에서 중요한 점이 바로 중앙 집권화 되지 않고 탈 중앙화 된 개인과 개인 간의 거래 시스템이라는 것이다. 즉, 노드만 있으면 이 블록 체인 시스템에 참여할 수 있다.

중앙화 된 시스템과 달리 악의적인 의도를 가지고 하나의 노드에서 현재 블록 체인에 기록된 정보와 다른 정보를 심고자 할때 나머지 노드 들과 다른 정보이기 때문에 이러한 공격이 어려우며 배제 될 것이다(보안성).

대신에 51% Attack으로 51%의 네트워크를 차지하면 이러한 공격을 펼칠 수는 있다. 이론적으론 가능하지만 실제론 거의 불가능에 가깝다고 한다.

 

누구나 참여할 수 있다는 것은 누구나 블록을 볼 수 있다(투명성). 또한 블록체인 기술은 발전을 거듭하며 각 세대는 기존 기술의 한계를 극복하고 새로운 기능을 추가하면서 발전한다(확장성).

블록 체인 구조

해시(Hash)란?
해시 함수 또는 해시 알고리즘 또는 해시함수알고리즘은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
- 즉 입력한 값의 길이가 달라도 출력된 값을 길이는 항상 동일하다.
- 입력값이 조금만 값이 달라져도 전혀 다른 출력값이 나온다.
- 결과 값으로 입력 값을 얻어낼 수 없다.(역산 불가능)

 

블록 생성 과정 - Proof of Work(PoW) 작업 증명 방식

하나의 블록이 생성되는 과정을 정리해보자.

    1. 다양한 거래 요청들이 발생한다.
    2. 각각의 거래를 해시함수를 통해 거래 내역에 대한 해시값을 얻는다.
    3. 각 거래 해시 값들을 2개씩 묶어서 다시 해시 함수를 적용한다.
      이때, 거래 데이터 수가 홀수라면 그 마지막 값을 복사해 다시 해싱을 진행한다.
    4. 3번 과정을 반복하면 결국 하나의 해시값만 남는데 그 값을 머클루트 해시값이라고 한다.
    5. 이때 머클루트 해시값은 소프트웨어 버전, 이전 블록 해시값, 블록 생성 시간, 난이도, Nonce값과 함께 하나의 블록을 구성한다.
채굴(Mining)
블록은 채굴이라는 과정을 통해서 검증 절차에 들어간다.
블록 생성시간, Nonce, 난이도에 영향을 받아 채굴에 들어간다.

블록안의 값들을 해시를 돌리면 해시값이 나올텐데 특정 target값보다 해시값이 작게 만드는 Nonce 값을 찾는데, 0부터 놓고 값을 증가시키며 찾게된다.

블록 생성 시간이 10분이 되도록 2016번째 블록이 생성될때마다 난이도를 조절하며
target 값은 중앙에서 지정되는 것이 아니라 네트워크의 합의 알고리즘에 따라 동적으로 결정된다.

이 채굴 과정을 거쳐야지 새로운 블록으로 인정되고 블록체인에 안착되고 각 노드들로 전파된다.

이러한 과정을 Proof of Work(PoW) 작업 증명 방식이라고 한다.

 

위와 같은 채굴 방식은 개발자의 의도와 다르게 CPU가 아닌 GPU의 사용으로 이어졌고 그에 따라 막대한 양의 CO2 배출(비트코인의 경우 한 국가가 배출하는 양)로 인해 다른 증명 방식인 Proof of Stake(PoS) 지분 증명 방식을 도입하게 된다.

 

비트코인의 한계

실생활에 결제 수단으로 사용하기에 TPS(Transaction per Second), 초당 거래 처리량을 따져봐야한다. 즉, 초당 처리할 수 있는 거래량이다.

우리가 실생활에 쓰는 VISA는 24000TPS이지만 그에 비해 비트코인은 너무 작다.

그 이유도 있다. 비트코인 네트워크는 누구나 참여가능하고 블록을 채굴할 수 있다. 그래서 그에 따라 어떤 노드의 블록을 정식으로 채택할지에 대한 기준이 필요한데 블록 길이가 가장 긴 노드 블록을 채택한다.(Longest Chain)

Longest Chain 이외의 블록들은 고아 블록이라고 부른다.

 

'Block Chain > TECHIT 블록체인 온보딩 트랙' 카테고리의 다른 글

ERC-20  (0) 2024.07.15
[챕터3] 스마트 컨트랙트(Smart Contract)  (0) 2024.07.15
[챕터2] 블록체인과 지갑  (0) 2024.07.14