[블록체인] 합의 알고리즘

2022. 4. 22. 17:31·IT/블록체인

블록체인 개념

 - 거래가 담긴 블록이 사슬 모양으로 늘어선 것

 - 각 거래에는 거래 생성자의 서명이 포함된다.

 

* P2P 네트워크에서는 클라이언트 서버 구조와 달리, 정보의 지연과 미도달 사태를 피할 수 없음

* 데이터를 변조할 의도가 없다 해도, 이중송신에 따른 처리 중복(멀티체인 문제)이나 잘못된 정보에 의한 오작동 등의 위험이 있어 정확한 정보를 공유하는데 어려움이 있음

-> 합의 알고리즘이 필요해짐

 

 

합의 알고리즘(Concensus)

 - 데이터 처리를 중앙화하지 않고, 분산화하는데에 있어서 검증하는 절차

 - 데이터 처리를 해줄 노드를 선택하거나, 검증하는데에 사용된다.

 - P2P 네트워크 시스템에서 각 노드간 정보 도달의 시간 차이가 있음

 - 생성된 블록의 정당성을 검토하고 해당 블록을 블록체인에 연결하기 위해 네트워크 참가자들의 합의를 위한 알고리즘이 필요

 - 종류: PoW, PoS, PoET, ...

 

작업증명 PoW

1) 작업증명(Proof of Work, PoW)

 - 블록체인에서 가장 보편적으로 사용 중인 합의 알고리즘으로, 컴퓨팅 파워를 이용하여 특정 난이도의 해시값을 역함수를 해시화하여 Nonce 값을 계산해내고 이를 검증하는 것으로 합의를 도출한다.

 - 해시 함수는 단방향 암호화 기술이므로 결과값으로 입력값을 찾을 수 없음

 - 블록 해쉬값이 특정 숫자보다 작아지게하는 Nonce값을 찾는 것이 마이닝

 - PoS의 마이너: CPU, GPU 같은 장비를 통해 해시 함수의 출력값을 구함. 결과값이 나올 때까지 입력값을 바꿔 지속적으로 실행해야함. Nonce값을 구해서 블록해쉬값을 구하고 이 블록해쉬값을 식별자로 가지는 유효한 블록을 만들어 내야함

 

2) 지분증명(Proof of Stake, PoS)

 - PoW의 컴퓨팅 파워 낭비 문제를 해결하고자 개발된 합의 알고리즘으로, 노드가 보유한 자산을 기준으로 권한을 분배하여 합의를 도출하고 보상을 분배하는 알고리즘이다.

 - PoS의 마이너: (Staking)지분을 동결시켜놓는 사람. 동결시켜놓고 이자를 받아감. 블록을 생성시켜 보상과 수수료를 받기 때문.

 

 

마이닝

 - 블록(B)의 해쉬값은 Hash(B) <= M / D 로 정의

 - D: 난이도(Difficulty)

 - M: 난이도 D의 최대값(2^256 - 1)

 

 

보상

 - Nonce 값을 구하기 위해서는 많은 작업 비용이 들며, 이러한 행위의 보상이 없다면 아무도 채굴하지 않을 것

 - 비트코인에서 보상은 새로 발행되는 비트코인과 해당 블록에 포함된 거래의 거래 수수료의 합

 - 인플레이션을 방지하기 위해, 여태까지 마이닝한 블록의 개수에 대해 보상을 반으로 줄여나가는 반감기가 있음(Bit Coin 1개 -> 0.5개 -> 0.25개 -> 1.25개 -> ...)

 - 수수료가 높아진다는 것은 트랙젝션 처리 비용이 높아진다는 것을 의미한다. 이는 Application을 사용해서 트랙젝션을 전송하는 사람들이 지불한다.

 

 

PoW의 특징

 - 블록 거래 내용 변경을 위해 많은 자원이 필요해, 위/변조가 사실상 어려워 보안성이 좋다고 할 수 있음

 - 채굴 난이도가 높아질수록 연산에 고사양의 장비들이 필요하게됨

 - 반복적인 연산을 통해 불필요한 연산을 하게되면 전기와 CPU와 같은 리소스 낭비가 심함

 - 노드들이 트랜젝션을 검토해야 하기 때문에 모든 블록 정보를 보유해야 하며, 이를 통해 이중 지불 문제를 해결

 

PoW의 문제점

 - 51% 공격: PoW의 경우, 악의적인 참여자가 절반 이상의 해시 파워를 가지게 된다면 블록 내용의 조작이 가능

 - 현재는 전세계의 마이너가 너무 많아 현실적으로 불가능하지만, 이후 2100만개의 블록이 모두 채굴된 이후 마이너가 줄어들게 되면 어떨지 모른다.

 

 * PoW는 뛰어나지만, 성능의 한계는 있다! 그리고 자원 낭비가 심하다!

 

 

지분증명(PoS, Proof of Stake)

 - 블록체인 기술에서 일반적으로 사용되는 합의 프로토콜

 - 지분증명은 암호화폐가 블록을 검증하는데 사용하는 합의 알고리즘

 - 2011년에 처음 제안되었으며, 2012년 Peercoin이 최초

 - 주요 장점은 에너지 효율성과 보안

 - 참여자의 코인 지분을 기준으로 블록을 생성

 - 참여자의 코인 지분이 많을수록 유리해지는 방식

 - 다음 블록의 생성자는 부분적으로 사용자가 보유(동결)하고 있는 암호화폐의 수량 또는 어떤 경우에는 그 특성을 보유하고 있는 기간에 의해 무작위 시스템에 의해 결정

 - 무작위 추출은 중앙 집중화를 예방할 수 있음

 - 시스템의 부유한 개인이 항상 다음 블록을 만들고 지속적으로 부를 창출하면 결과적으로 시스템을 통제하게됨

-> 악용될 수 있다.

 

 

PoS의 특징

 - 해시 파워가 필요하지 않아 경제적이다

 - PoW보다 훨씬 적은 에너지를 사용하여 효율적

 - 알고리즘이 복잡하다 -> 버그의 위험성이 높아진다

 - 중앙집권화가 더 어려워 분산화가 보장됨

 

PoS의 문제점

 - 참여한 노드들이 이자를 받으려고 코인을 묶어두려 할 경우, 시중 코인의 유통량 감소로 이어질 수 있음

 - 코인을 많이 보유한 사람이 너무 강한 권력을 가지게 됨

 

 

BFT algorithm기반 PoS

 - 네트쿼트의 1/3보다 적은 노드가 적대적이라도 합의가 가능

 - chain 기반이 아니므로 합의 및 검증이 매라운드마다 이루어짐

 - BFT Consensus 알고리즘은 일관성있게 가용성을 유지하기 때문에, 비동기 네트워크 모델로 관리할 수 있음

 - 프라이빗 블록체인인 Tendermint, Ripple, Stellar 등이 해당됨

 

 

위임 지분 증명(DPoS, Delegated Proof of Stake)

 - 특정 인원에게만 PoS를 할 수 있도록 권한을 위임하는 알고리즘

 - 네트워크상 노드들의 투표 결과로 선출된 상위 노드에게 권한을 위임하여 일종의 대표자의 역할 수행

 - 위임한 대표자와 수익을 배분 

'IT > 블록체인' 카테고리의 다른 글

[블록체인] Docker  (0) 2022.04.28
[블록체인] 체인코드  (0) 2022.04.23
[블록체인] 정보 보안  (0) 2022.04.22
[블록체인] NFT  (0) 2022.04.18
[블록체인] 블록체인의 분류/적용분야  (0) 2022.04.18
'IT/블록체인' 카테고리의 다른 글
  • [블록체인] Docker
  • [블록체인] 체인코드
  • [블록체인] 정보 보안
  • [블록체인] NFT
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (572) N
      • 혼잣말 (87)
      • TIL (2)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (167) N
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (38) N
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    핀토스
    pintos
    위상정렬
    자바스크립트
    MailBadara
    크래프톤정글
    글리치해커톤
    나만무
    사이드프로젝트
    파이썬
    Flutter
    알고리즘
    해커톤
    딥러닝
    OS
    블록체인
    react
    졸업과제
    코드프레소
    니어프로토콜
    JavaScript
    docker
    Pint OS
    RNN
    부산대
    NEAR Protocol
    리액트
    numpy
    머신러닝
    프로그래머스
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
[블록체인] 합의 알고리즘
상단으로

티스토리툴바