ABOUT ME

-

Today
-
Total
-
  • [Bitcoin] 비트코인 합의 알고리즘 PoW / 채굴 / 노드
    Study/Blockchain 2019. 8. 30. 11:00
    반응형

     

     

     

    비잔틴 장군 문제

     

    비잔틴 장군 문제는 1982년 처음 제기된 문제이다.
    비잔티움 장군 문제 내용을 요약해보면, 지리적으로 떨어진 부대에서 어떠한 전령을 주고받을 때
    통신의 문제가 발생하거나 악의적으로 전령을 조작하여 가짜 정보를 전달할 경우
    부대의 장군들은 어떻게 올바른 정보를 가져올 수 있는지 문제를 제기한 것이다.

    즉, 블록체인에서 생각해보면 이는 블록체인 네트워크에 연결된 전세계에 흩어진 노드가 

    악의적으로 데이터를 변경했을 때 시스템에 치명적인 오류가 발생할 수 있다는 것이다.
    이를 방지하기 위해 만들어진 것이 바로 합의 알고리즘이다.

    블록체인은 중앙화된 서버 대신에 분산된 전 세계의 노드에 데이터를 보관하기 때문에, 

    데이터에 대한 신뢰를 구축하는 방법이 필요하다.
    그래서 블록에 기록하는 데이터가 악의적으로 위변조되지 않은 원본이라는 것을 

    다수의 노드들이 함께 검증하는 알고리즘을 합의 (Consensus) 알고리즘 라고 한다.

     

     


    PoW ( Proof of Work : 작업 증명)

     

    - 사토시 나카모토가 제안한 합의 알고리즘

    - 작업증명이란 목표값 이하의 해시를 찾는 과정을 반복함으로써 작업에 참여했음을 증명하는 방식

    - 블록 생성 시간 동안 가장 많은 해시파워를 제공한 노드가 블록을 생성할 수 있도록 설계

    - 서로 다른 브랜치가 생겼을 겨우 가장 긴 블록체인이 남을 때 까지 경쟁하여 긴 브랜치가 최종 채택

     


    PoW 의 장점

    1) 현재 높은 시장 가치를 형성하고 있는 주류 코인들이 채택
    2) 강력한 보안성을 제공
    3) 서비스 남용 방지 가능

    PoW 의 단점


    1) 높은 전력 소모를 통해 자원을 낭비
    2) 지속적으로 해시파워를 유지해야 함
    3) 특정 마이닝 세력의 해시 독점으로 인한 생태계 교란 우려가 있음

     

     

     

    채굴 mining

     

    블록을 생성하기 위해 mining(채굴)을 하는데, 채굴은 수학 문제를 푸는 것과 같다.
    임의의 nonce값을 대입해서 특정 목표값 이하의 값을 찾아내는 것인데, nonce값을 0부터 1씩 증가시키면서 작업을 반복한다.
    이 작업을 1초에 몇번이나 수행할 수 있는지를 해시파워라고 하며, 
    해시파워가 높으면 더 많은 문제를 풀 수 있고 새로운 블록을 찾을 확률이 높다.

    블록을 찾고 새롭게 생성하는 작업을 통해 비트코인이라는 보상이 주어진다. 
    더 많은 작업을 한 사람에게 보상이 주어지기 때문에 작업 증명 합의알고리즘이라고 한다 

    그리고 블록체인에서는 긴 블록 선호 정책이 있어서 
    블록의 branch가 2갈래로 나뉘면 채굴자들이 더 긴 블록에 붙어서 결국 하나의 branch만 살아남게된다 

     


    노드 node

     

    노드 : 블록체인 P2P 네트워크에 접속한 컴퓨터

    - 블록 전파, 거래 검증 등 블록체인 네트워크에서 필요한 작업 수행
    - 전세계에 노드들이 퍼져있고 인터넷을 통해 연결
    - 노드들이 연결되어 관계를 맺었을때 Peer가 되고 P2P를 의미

    1) 풀노드(full node) 

    - 비트코인 코어, 모든 비트코인 거래를 기록
    - 지갑생성, 채굴, 네트워크 등 포함한 노드

    2) 풀 비트코인 노드 

    - 지갑과 채굴 기능이 빠진 노드
    - 단순하게 블록체인 유지 기능

    3) 마이너 

    - 솔로 마이너 : 자신이 채굴한 블록을 자신의 블록체인 노드에 저장하고 이웃에 전파
    풀 마이너 : 풀을 만들어서 여러 노드로 채굴

    4) Light-Weight (SPV)Wallet 

    - 지갑 기능과 네트워크 기능 있는 노드
    - 블록 헤더만 포함

     

    5) Light-weight Startum wallet 

    - 지갑 기능과 네트워크 기능 없는 노드
    Startum 프로토콜 사용
    - 블록 헤더만 포함


    6) Light-weight

    - 모든 데이터를 저장하지 않고, 거래에 확인이 필요하면 외부 풀노드에게 연결하여 확인
    블록 검증에 참여하지 않는 노드

     

    SHA(Secure Hash Algorithm)


    - 한 방향 계산은 쉬운데 역으로 계산하기는 어려운 계산식
    - X→Y 는 쉬운데 Y-X 방향으로 X를 구하는 것은 어려운 방식

     

     

    비트코인 Hashcash

     

    - 비트코인의 화폐는 10 분에 한 번씩 일정량이 생성되며 마이닝에 참여한 사용자 중 한 명에게 지급 됨 .
    - 참여자들은 Hashcash 라는 문제를 풀어야 하는데 , Hashcash 는 특정한 조건을 가지는 해시값을 찾는 것 
    특정한 해시값이 나오는 데이터를 찾는 것은 너무 어려우니 특정한 범위의 해시값이 나오는 데이터를 찾도록 난이도를 낮춘 것
    - 즉 비트코인에서 사용하는 Hashcash 문제란 이처럼 몇 개 이상의 0 으로 시작하는 해시값을 찾으라는 문제

    반응형

    댓글