블록체인 개념 - NomadJin/Blockchain-Study GitHub Wiki

암호학

  • 데이터 구조 : Chain of Blocks
  • 해시 함수 : SHA-256
  • 디지털서명(전자서명) : ECDSA
  • 머클 트리

합의 알고리즘

  • BFT : Byzantine Fault Tolerance(비잔틴 장애 허용) 작업증명 알고리즘과 지분증명 알고리즘이 적용된 블록체인이 작동하기 위해서는 내부 가상화폐 등의 보상 시스템이 꼭 필요(에너지 낭비 방식의 채굴 수행하는 이유)

  • PBFT 분산시스템이 약속된 행동을 하지 않는 비잔틴 노드가 존재할 수 있는 비동기 시스템일 때 해당 분산시스템에 참여한 모든 노드가 성공적으로 합의를 이룰 수 있도록 개발된 합의 알고리즘.

    1. 리더가 클라이언트들의 요청을 수집하여 정렬하고 다른 노드에 전파
    2. 리더의 메시지를 받은 노드들은 다른 노드들에서 받은 메시지를 다시 한번 나머지 노드에 전파
    3. 모든 노드는 자신이 다른 노드에서 가장 많이 받은 같은 메시지(정족수 이상의)가 무엇인지 다른 노드들에게 전파
    4. 위의 과정이 끝나면 모든 노드들은 정족 수 이상이 동의한, 즉 합의를 이룬 같은 데이터를 가지게 됨. 두 번의 브로드캐스트 과정을 이용해 비잔틴 리더나 비잔틴 검증 노드가 네트워크 분기를 위해 이상한, 혹은 임의의 메시지를 보내도 네트워크의 모든 노드는 같은 메시지를 가질 수 있게 함


머클트리(해시트리)

  • 여러 블록으로 나누어진 데이터의 정합성을 검증하는 효율적인 방법(토렌트, Git에서 사용)
  • 머클루트만 있으면 네트워크를 통해 머클트리의 중단 해시데이터를 받아 무결성을 검증 가능함. -> 라이트노드도 운영 가능


가십프로토콜

  • 분산 컴퓨팅 환경에서 데이터의 일관성을 유지하고 집계하는데 많이 사용되는 통신 방식(NoSQL Database에서 많이 사용됨)
  • 블록체인 내부의 정보 전달(거래 기록, 블록), Liveness 체크(내 주변에 어떤 노드가 있는지)
  • 비트코인에서 블록이 생성되고 40초 후면 네트워크의 95%에 블록이 전파됨

합의 알고리즘

  • 누가 블록생성 권한을 가지는가(Database 업데이트 권한)
  • 악의적인 공격으로부터 어떻게 블록체인 네트워크를 보호할지?
  • P2P 네트워크에서 단일 상태의 블록체인 생태계를 어떻게 유지?
  • 경쟁방식 : POS, POS
  • 비경쟁방식 : PBFT, DPoS, PoET

블록의 구성요소(순서대로)

블록헤더

  • 버전 : 버전에 따라 블록 검증 룰이 달라짐
  • 이전 블록 해시 : 이전 블록 헤더의 SHA256 해시값
  • 머클 루트 : 블록에 포함된 거래내역으로 만든 머클 트리의 루트 해시값
  • 타임스탬프 : 채굴자 블록 채굴을 시작한 Unix 시간
  • Bits : 블록해시의 목표값, 채굴한 불록해시 <= 목표값 일 때 채굴 성공
  • 논스 : 채굴자가 조건을 만족하는 블록해시를 찾기 위해 입력한 임의의 수

블록사이즈 : 블록 전체 바이트 수

거래내역 수 : 블록에 포함된 거래 내역 수

거래내역 : 블록 생성 보상이 기록된 거래내역과 채굴자가 블록에 포함하고자 선택한 거래 내역


에스크로

상거래 시에 판매자와 구매자의 사이에 신뢰할 수 있는 중립적인 제 삼자가 중개하여 금전 또는 물품 거래를 하도록 하는 것 또는 그러한 서비스.


합의 알고리즘 : 체인의 분기와 관리

  • 더블 스펜딩 문제 발생(네트워크 지연 또는 동시에 문제를 푸는 경우에 체인의 분기 발생)
  • 난이도가 더 높은 체인을 정규 체인(Canonical Chain)으로 인정
  • 정규 체인에 포함되지 못한 블록을 고아 블록 또는 엉클 블록(Stale Block, Uncle Block)

51% 공격 : 채굴 업체의 이해관계에 따라서 얼마든지 네트워크가 좌지우지(?) 메인 체인의 역전, 특정 거래내역의 거부, 이중 지불 등


지분증명(Proof of Stake)

지분을 많이 확보한 사람이 블록생성 권한을 갖는다

대전제 : 네트워크에 자산을 많이 보유한 사람은 네트워크의 가치에 반하는 결정을 하지 않을 것이다.

지분증명도 경쟁방식 합의 알고리즘이기 때문에 체인의 분기가 발생

자상증명을 제출하는 것에 제한이 없다면 검증자 입장에서 여러 블록에 동시에 서명하는 것이 경제적인 이득(블록 생성에 대한 보상 획득) -> 이더리움의 캐스퍼 : 자산증명에 참여하기 위해 보증금을 예치하고 Fork가 발생하는 경우 보증금을 몰수하는 방식


블록체인과 암호경제학

암호학적인 요소 : 해시함수(SHA256), 디지털 서명(알고리즘, 멀티서명), 영지식증명, 타임락 경제적 인센티브 : 보상(블록생성 보상) , 불이익(체인 분기, Dos 공격)


UTXO

Unspent Transaction Output 블록에 있는 비트코인 거래들의 구성은 '소비되지 않은 거래 출력값(UTXO)로 이루어진다.

비트코인 지갑상에서는 계좌라는 개념, 잔액이라는 개념을 UTXO 데이터로 대체한다.

간단히 정리하자면 비트코인 거래를 할 수 있는 데이터이자 잔액의 데이터 덩어리