BLOCKCHAIN/BlockChain

블록체인의 원리 _ 비트코인의 원리

yuujoeng 2022. 5. 24. 14:25

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라 함