3강 비트코인 네트워크 기초 | 4강 비트코인 전자 화폐 거래 개념
제3강 비트코인 네트워크 기초
-
기존 금융 네트워크
- 중앙 기관(금융결제원)에 의해 구축되고 운영
- 클라이언트 - 서버(client-server) 네트워크
-
비트코인 네트워트
- 참여자들에 자발적으로 구축되고 운영되는 네트워크
- 인터넷 상에서 비트코인 참여자들의 컴퓨터를 연결하는 네트워크 구축 - P2P 네트워크
- 인터넷 상에서 비트코인 참여자들 간에 자율적으로 구축되고, 운영되는 네트워크를 통해 모든 비트코인 거래 정보 교환
- 누구나 비트코인 프로토콜을 구현한 소프트웨어를 설치한 컴퓨터를 사용하여 비트코인 네트워크의 하나의 구성 단위인 노드(node)로 참여가능
-
비트코인 P2P네트워크
- 비트코인 네트워크를 운영하는 별도의 운영 주체 없음
- 자발적인 참여를 유도하는 인센티브 활용(기여도가 높을수록 참여자에게 이익이 되는 구조)
- 채굴자(miner) : 자발적으로 블록을 생성하고, 생성한 블록을 배포, 연결하면 그 해당하는 코인은 채굴자에게 줌(인센티브)
- 기존에 네트워크에 연결되어 있는 하나 이상의 이웃 노드(neighbor node)들과 연결함으로써 비트코인 네트워크에 가입
- 8개 이상의 이웃노드와 항상 연결되도록 권고(일부 비정상 노드 존개 가능성 고려)
-
비트코인 네트워크의 전송
- 방송(broadcasting)형태의 전송
- 기본적으로 모든 참여자에게 정보(거래, 블록) flooding
- 목적지 IP주소 지정 불필요(지불 상대방을 식별하는 비트코인 주소 정보만 필요)
- 방송(broadcasting)형태의 전송
-
비트코인 네트워크의 익명성
- 네트워크 참여자는 기본적으로 익명성을 보장
- 암호학적으로 생성되는 비트코인 주소(공개키를 해시값으로 만든)사용 (신원 정보와 결합 과정이 없다)
-
비트코인 네트워크의 불완전성
- 비정상적인 참여자 존재 가능
- 불안정하고 속도가 느린 부실하 컴퓨터 노드
- 악의적 사용자에 운영되는 악성 컴퓨터 노드
- 비정상적인 참여자 존재 가능
제4강 비트코인 전자화폐 거래의 개념
-
비트코인 전자 화폐 거래의 목표
- P2P 거래
- 비트코인 발행, 비트코인 이전 등 모든 가치의 교환은 거래(transaction)을 통해 이루어지고
- 모든 거래는 당사자간에 P2P방식으로 직접 이루어짐
- 안전하고 투명한 거래
- 전자 화폐 발행을 포함한 모든 지불거래 내역이 안전하고 공개된 원장(public ledger)인 블록체인에 기록
- 블록체인을 검색함으로써 발행되고 지불된 모든 전자화폐에 대한 존재와 소유 증명 가능
- P2P 거래
-
비트코인 전자 화폐 발행
- 화폐 발행 주체
- 채굴자 : 블록을 생성하여 블록체인에 체인으로 연결하는 참여자
- 채굴자의 결정 : 채굴자들 중에서 채굴 역량(해시 파워)에 비례하는 확률로 임의의 채굴자가 자동으로 선정됨(작업 증명 알고리즘) - Proof of Work(PoW)
- 발행 방식
- 비트코인 시스템이 채굴자의 주소로 블록 보상(12.5BTC)를 송신하는 지불거래(코인베이서 거래- Coinbase Transaction)를 자동으로 생성
- 채굴자가 생성한 블록의 첫 지불 거래로 기록되어 블록 체인에 포스팅
- 모든 블록의 첫번째 거래는 송신자는 없고, 수신자만 있음 : 첫번째 거래는 네트워크가 채굴자에게 12.5 BTC를 채굴자의 주소로 보내기 때문에
- 존재 확인
- 공개 원장인 블록체인상의 지불 거래 검색
- 비트코인 금액 : 비트코인 지불 거래에서 지불된 금액
- 금액의 소유자 : 비트코인 지불거래에서 기록된 수신자 주소
- 예, (12.5BTC, 채굴자 주소)
- 소유자 증명 방식
- 지불 거래 생성시 비트코인 소유자 증명 방식 명시(프로그램 형태로 지불 거래 정보의 일부로 삽입)
- 주소에 대해 공개키에 대응되는 개인키 서명을 증명 할 수 있는 사람이 해당 주소에 대한 비트코인의 주인
- 예, “비트코인 수신자 주소에 대응되는 서명 제시를 요구하는 프로그램(잠금 스크립트 - locking script)”
- 지불 거래 생성시 비트코인 소유자 증명 방식 명시(프로그램 형태로 지불 거래 정보의 일부로 삽입)
- 소유자 증명
- 사용하고자 하는 비트코인이 기록된 거래의 수신자 주소에 대응되는 서명 제시
- 요구된 소유자 증명 프로그램에 대한 입력 형태의 간단한 프로그램으로 제시(해제 스크립트- unlocking script)
- 화폐 발행 주체
-
비트코인 전자 화폐 지불 거래
-
지불 거래
- 비트코인 소유자 이전
- 현재 소유자의 금액을 입력으로 다음 소유자와 소유금액을 출력하는 형식으로 지불 거래 구성
- 입력값과 출력값의 차이로 수수료 표시
1 2 3
거래 1 ( 코인베이스 거래 ) 입력값 : 금액, 이전 거래 출력값에 대한 해시값(해시 포인트), 서명 출력값 : 거래금액(여러개의 출력값이 있을 수 있음), 서명
-
지불 거래의 성립
- (입력) 사용 대상 비트코인 지정 : 블록체인상에서 비트코인이 저장된 특정 지불 거래에 대한 해시 포인터
- (입력) 소유자 증명 : 지정된 거래로 지불된 비트코인의 수신자임을 증명
- (출력) 새로운 수신자 지정 : 지불될 비트코인의 금액, 새로운 소유자 주소와 소유자 증명 방식 지정
-
지불 거래의 일반적인 형식
-
-
블록체인상의 전자 화폐
- UTXO(Unspent Transction Output)
- 지불거래(화폐 발행 포함)에 의해 송신된 후 사용되지 않은 화폐
- 새로운 지불 거래에 의해 해시포인터(거래 ID)로 지정되지 않은 지불 거래의 수신자 주소에 기록된 비트코인
- STXO(Spent Transction Output)
- 지불거래(발행 포함)에 의해 송신된 후 이미 사용된 화폐
- 다음 지불 거래에 의해 해시포인터(거래 ID)로 지정된 지불 거래의 수신자 주소에 기록된 비트코인
- 비트코인의 발행 총액 == UTXO ?
- 발행된 비트코인 총액 = 블록체인상의 UTXO의 총합
- 내 지갑의 비트코인 총액
- 내 지갑이 보유하고 있는 주소들에 대응되는 UTXO의 총합
- UTXO(Unspent Transction Output)
-
비트코인 이중 지불 거래 방지
- 이중 지불(double speding)
- 이미 사용된 비트코인(STXO)을 다시 사용하는 지불 거래
- 지불한 비트코인의 복제본을 다시 사용하는 것과 동일
- UTXO 전체 단위(지불 거래로 수신된 비트코인의 일부만 사용하는 것은 불가)
- 이중 지불(double speding)