블록체인 3강, 4강

비트코인

Posted by 동식이 블로그 on June 4, 2019

3강 비트코인 네트워크 기초 | 4강 비트코인 전자 화폐 거래 개념

제3강 비트코인 네트워크 기초

  • 기존 금융 네트워크
    • 중앙 기관(금융결제원)에 의해 구축되고 운영
    • 클라이언트 - 서버(client-server) 네트워크
  • 비트코인 네트워트
    • 참여자들에 자발적으로 구축되고 운영되는 네트워크
    • 인터넷 상에서 비트코인 참여자들의 컴퓨터를 연결하는 네트워크 구축 - P2P 네트워크
    • 인터넷 상에서 비트코인 참여자들 간에 자율적으로 구축되고, 운영되는 네트워크를 통해 모든 비트코인 거래 정보 교환
    • 누구나 비트코인 프로토콜을 구현한 소프트웨어를 설치한 컴퓨터를 사용하여 비트코인 네트워크의 하나의 구성 단위인 노드(node)로 참여가능
  • 비트코인 P2P네트워크
    • 비트코인 네트워크를 운영하는 별도의 운영 주체 없음
    • 자발적인 참여를 유도하는 인센티브 활용(기여도가 높을수록 참여자에게 이익이 되는 구조)
    • 채굴자(miner) : 자발적으로 블록을 생성하고, 생성한 블록을 배포, 연결하면 그 해당하는 코인은 채굴자에게 줌(인센티브)
    • 기존에 네트워크에 연결되어 있는 하나 이상의 이웃 노드(neighbor node)들과 연결함으로써 비트코인 네트워크에 가입
    • 8개 이상의 이웃노드와 항상 연결되도록 권고(일부 비정상 노드 존개 가능성 고려)
  • 비트코인 네트워크의 전송
    • 방송(broadcasting)형태의 전송
      • 기본적으로 모든 참여자에게 정보(거래, 블록) flooding
      • 목적지 IP주소 지정 불필요(지불 상대방을 식별하는 비트코인 주소 정보만 필요)
  • 비트코인 네트워크의 익명성
    • 네트워크 참여자는 기본적으로 익명성을 보장
    • 암호학적으로 생성되는 비트코인 주소(공개키를 해시값으로 만든)사용 (신원 정보와 결합 과정이 없다)
  • 비트코인 네트워크의 불완전성
    • 비정상적인 참여자 존재 가능
      • 불안정하고 속도가 느린 부실하 컴퓨터 노드
      • 악의적 사용자에 운영되는 악성 컴퓨터 노드

제4강 비트코인 전자화폐 거래의 개념

  • 비트코인 전자 화폐 거래의 목표
    • P2P 거래
      • 비트코인 발행, 비트코인 이전 등 모든 가치의 교환은 거래(transaction)을 통해 이루어지고
      • 모든 거래는 당사자간에 P2P방식으로 직접 이루어짐
    • 안전하고 투명한 거래
      • 전자 화폐 발행을 포함한 모든 지불거래 내역이 안전하고 공개된 원장(public ledger)인 블록체인에 기록
      • 블록체인을 검색함으로써 발행되고 지불된 모든 전자화폐에 대한 존재와 소유 증명 가능
  • 비트코인 전자 화폐 발행
    • 화폐 발행 주체
      • 채굴자 : 블록을 생성하여 블록체인에 체인으로 연결하는 참여자
      • 채굴자의 결정 : 채굴자들 중에서 채굴 역량(해시 파워)에 비례하는 확률로 임의의 채굴자가 자동으로 선정됨(작업 증명 알고리즘) - Proof of Work(PoW)
    • 발행 방식
      • 비트코인 시스템이 채굴자의 주소로 블록 보상(12.5BTC)를 송신하는 지불거래(코인베이서 거래- Coinbase Transaction)를 자동으로 생성
      • 채굴자가 생성한 블록의 첫 지불 거래로 기록되어 블록 체인에 포스팅
      • 모든 블록의 첫번째 거래는 송신자는 없고, 수신자만 있음 : 첫번째 거래는 네트워크가 채굴자에게 12.5 BTC를 채굴자의 주소로 보내기 때문에
    • 존재 확인
      • 공개 원장인 블록체인상의 지불 거래 검색
      • 비트코인 금액 : 비트코인 지불 거래에서 지불된 금액
      • 금액의 소유자 : 비트코인 지불거래에서 기록된 수신자 주소
      • 예, (12.5BTC, 채굴자 주소)
    • 소유자 증명 방식
      • 지불 거래 생성시 비트코인 소유자 증명 방식 명시(프로그램 형태로 지불 거래 정보의 일부로 삽입)
        • 주소에 대해 공개키에 대응되는 개인키 서명을 증명 할 수 있는 사람이 해당 주소에 대한 비트코인의 주인
      • 예, “비트코인 수신자 주소에 대응되는 서명 제시를 요구하는 프로그램(잠금 스크립트 - locking script)”
    • 소유자 증명
      • 사용하고자 하는 비트코인이 기록된 거래의 수신자 주소에 대응되는 서명 제시
      • 요구된 소유자 증명 프로그램에 대한 입력 형태의 간단한 프로그램으로 제시(해제 스크립트- unlocking script)
  • 비트코인 전자 화폐 지불 거래
    • 지불 거래

      • 비트코인 소유자 이전
      • 현재 소유자의 금액을 입력으로 다음 소유자와 소유금액을 출력하는 형식으로 지불 거래 구성
      • 입력값과 출력값의 차이로 수수료 표시
      1
      2
      3
      
      거래 1 ( 코인베이스 거래 )
      입력값 : 금액, 이전 거래 출력값에 대한 해시값(해시 포인트), 서명
      출력값 : 거래금액(여러개의 출력값이 있을 수 있음), 서명
      
    • 지불 거래의 성립

      • (입력) 사용 대상 비트코인 지정 : 블록체인상에서 비트코인이 저장된 특정 지불 거래에 대한 해시 포인터
      • (입력) 소유자 증명 : 지정된 거래로 지불된 비트코인의 수신자임을 증명
      • (출력) 새로운 수신자 지정 : 지불될 비트코인의 금액, 새로운 소유자 주소와 소유자 증명 방식 지정
    • 지불 거래의 일반적인 형식

    1

  • 블록체인상의 전자 화폐
    • UTXO(Unspent Transction Output)
      • 지불거래(화폐 발행 포함)에 의해 송신된 후 사용되지 않은 화폐
      • 새로운 지불 거래에 의해 해시포인터(거래 ID)로 지정되지 않은 지불 거래의 수신자 주소에 기록된 비트코인
    • STXO(Spent Transction Output)
      • 지불거래(발행 포함)에 의해 송신된 후 이미 사용된 화폐
      • 다음 지불 거래에 의해 해시포인터(거래 ID)로 지정된 지불 거래의 수신자 주소에 기록된 비트코인
    • 비트코인의 발행 총액 == UTXO ?
      • 발행된 비트코인 총액 = 블록체인상의 UTXO의 총합
      • 내 지갑의 비트코인 총액
        • 내 지갑이 보유하고 있는 주소들에 대응되는 UTXO의 총합
  • 비트코인 이중 지불 거래 방지
    • 이중 지불(double speding)
      • 이미 사용된 비트코인(STXO)을 다시 사용하는 지불 거래
      • 지불한 비트코인의 복제본을 다시 사용하는 것과 동일
        • UTXO 전체 단위(지불 거래로 수신된 비트코인의 일부만 사용하는 것은 불가)