3 비트코인의 원리
1) 기존의 전자금융거래 시스템
(1) 자산의 디지털화가 힘든 이유
- 디지털 데이터의 특징 : 복사와 조작이 쉬움
- 화폐 및 증권의 필요조건: 위변조가 어려워야 한음
- 따라서 전자금융거래는 자격 있는 금융기관이 금융감독기관의 감시를 받아야 이루어질 수 있음
2) 트랜잭션과 전자서명 기술
(1) 트랜잭션
- 트랜잭션: 자신의 상태를 변화시키는 상태의 변경 단위
- 트랜잭션에 디지털 자산의 거래에 대한 데이터(송금, 결제)를 담을 수 있음
- 디지털 자산을 거래할 때는 그 자산에 대한 소유권을 가진 참가자만 트랜잭션을 발생시킬 수 있어야 함
- 전자서명 기술로 공개키 방식 주로 사용
- 비트코인은 전자서명을 통해 기존의 신원인증 과정을 생략함
(2) 해시 함수
- 임의의 데이터를 일정한 길이의 문자열로 바꾸어주는 단방향 함수
- 단방향 함수란 input->output은 쉽지만 output->input은 어려운 함수를 말함
- 입력값을 아주 조금 변화시켜도 전혀 다른 출력값을 내놓으므로 추론이 어려워짐
- 결정적이며 검증 쉬움
(3) 트랜잭션을 이용한 거래
- 공개키 암호화 방식으로 전자 서명 생성
- 해시 함수를 이용해 트랜잭션의 해시 값을 구함
- 해시 값을 비밀 키로 암호화하여 전자 서명을 만들고 트랜잭션과 함께 전송
- 비트코인 네트워크는 동일한 해시 함수를 사용해 해시 값 구하고 공개키로 전자 서명의 유효성 검증
- 트랜잭션의 유효성 확인되면 비트코인 네트워크는 디지털 자산의 소유권을 변경
3) 이중지불 문제와 PBFT
(1) 전자서명으로 막을 수 없는 문제
- 한 사람이 여러 개의 모순되는 트랜잭션을 발생시키는 것은 막을 수 없음
- 이중 지불 문제는 비잔틴 장군 문제로 치환할 수 있음
- 배신자의 수가 전체 장군의 수의 1/3 미만일 때 합의에 도달할 수 있음
(2) 전통적인 비잔틴 장애 허용 합의 알고리즘(PBFT)
- 배신자의 수와 전체 노드의 수에 따라 합의를 위해 필요한 메세지의 수가 기하급수적으로 증가
- 참여자가 각각 하나의 투표권을 행사하기 때문에 노드가 일정 이상 커질 수 있음
- 과반 이상이 노드에서 나가면 합의에 도달할 수 없고 시스템이 중단될 수 있음
- 개방향 네트워크에 적합하지 않음
4) 비트코인 합의 알고리즘
(1) 블록과 UTXO
- 블록은 합의 및 P2P 네트워크 상태를 동기화 시키는 단위
- 블록에 서로 모순되지 않는 트랜잭션을 모아 처리한 뒤 블록을 만듬
- 블록의 상태는 블록에 명시적으로 기록되지 않고 UTXO의 합으로 표현
(2) 블록체인
- 트랜잭션과 달리 블록은 전역적 순서를 가지고 선형적으롤 진행
- 각 블록은 마치 체인처럼 이전 블록을 참조하여 순서를 명시
- 블록의 상태는 UTXO의 집합이고 새로운 UTXO를 만들어냄으로써 블록 상태를 업데이트함
- 최신 블록 상태를 알기 위해서는 모든 블록을 탐색하며 UTXO 집합을 완성해야 함
(3) 가십 프로토콜
- P2P 네트워크에서 각 노드가 이웃 노드에게 데이터를 전파하는 방법
- 대역폭의 낭비를 줄이면서도 데이터를 빠르고 안정적으로 전파할 수 있음
- 블록체인을 포함한 대부분의 블록체인은 가십 프로토콜을 사용하여 트랜잭션 및 블록을 다른 노드에 전파
- 모든 노드가 같은 금융상태를 가지게 됨
(4) Random Timer
- 전체 노드의 90퍼센트 이상에 블록이 전파되기 전에 새로운 블록이 생성되면 안됨
- Random Timer을 도입하여 블록 생성 속도를 네트워크 전파 속도보다 의도적으로 늦춤으로써 이를 해결함
- 무작위 시간동안 Sleep 후 블록이 생성되도록 함
- Cheat - resistant timer: 각 노드가 random timer를 조작할 수 없어야 함
(5) Proof-of-Work (작업증명)
- 블록을 만들 때 일정량의 컴퓨팅 파워를 소비했다는 증거를 포함시켜 날인하는 방법
- 블록이 어떤 조건을 만족할 때 까지 논스의 값을 찾아감 -> 논스의 값을 찾는 것은 확률적임
- 논스 값을 찾는 과정을 채굴(마이닝) 이라고 함
- 확률을 높이기 위해서는 채굴기가 많아져야 함
- Dos 공격이나 스팸 메일 등 시스템이나 네트워크에 악영향을 끼치는 행위를 방지하기 위한 기술
- 시스템이나 네트워크를 이용할 때 경제적인 비용이 청구되도록 하여 대량의 요청을 할 수 없도록 방지
(6) 체인 선택 규칙
- 타이머를 이용해 블록 생성 속도를 늦춰도 동시에 여러 블록이 생성되 경쟁상태가 될 수 있음
- 이때 비트코인은 가장 긴 체인을 선택하는 규칙(longest chain rule)을 사용함
- 가장 긴 체인은 canonical chain, 규칙에 의해 가장 긴 체인이 바뀌는 현상을 reorg라 함