[블록체인의 원리] 3. 비트코인의 원리 (1)
자산의 디지털화가 힘든 이유
1. 디지털 데이터는 복사와 조작이 쉽다.
2. 화폐 및 증권의 필요조건: 위변조가 어려워야 한다.
1. 신원인증을 없앰
-> 전자 서명을 통해
2. 이중지불 문제
->어떤 자산 거래 시 그 소유주가 같은 자산을 송금하는 트랜잭션을 두번 이상 발생 시 둘 중 뭘 인정할 것인가?
-> (-) 자기가 갖고 있는 자산을 통해 시스템을 공격 가능
트랜잭션(transaction)=금융 거래
:전자 서명 방식으로 신원 인증 과정을 제거
1. 트랜잭션은 자산의 상태를 변화시키는 단위
2. 트랜잭션에 디지털 자산의 거래에 대한 데이터(송금 및 결제)를 담을 수 있음
3. 디지털 자산을 거래할 때 그 자산에 대한 소유권을 가진 참여자만 해당 트랜잭션을 발생시킬 수 있음
-> 이 때 필요한 것이 전자 서명 기술, 공개키 암호화 방식을 주로 사용
4. 공개키 암호화 알고리즘에 비밀 키를 시드로 하여 공개 키를 얻을 수 있음
5. 비밀 키를 사용하여 원본 데이터의 전자서명을 얻을 수 있고, 그 전자서명의 유효성을 원본 데이터와 공개 키로 검증
공개키 암호화 방식=타원곡선을 이용해 개발
cf. 자세한 내용을 알고 싶으면 밑바닥부터 시작하는 비트코인 by. 지미송 추천
암호학적 해시 함수
: 임의의 데이터를 일정한 길이의 문자열로 바꿔주는 단방향 함수
단방향 함수란?
:input을 통해 output을 도출하기는 쉽지만 output으로 input을 찾기는 매우 어려운 함수
왜냐면, m을 아주 조금 변화시키더라도 digest는 전혀 다른 값을 출력하기 때문에!
같은 입력값은 항상 같은 출력값을 출력하기에 결정적이며 검증이 쉽다.
비밀키를 통해 유저가 자산에 대한 소유권을 증명할 수 있음
-:> 자산의 상태를 변환시키는 단위는 트랜잭션
: 전자서명만으로 막을 수 없는 이중 지불 문제
-> 어떤 트랜잭션을 맞는 것으로 인정(합의)할 것인가에 대해 문제 발생
-> 이런 문제를 해결하는 알고리즘 =
합의 알고리즘
ex. 비잔틴 장군 문제(BGP)
: 이중지불문제-비잔틴 장군 문제
-> 전체 장군 중 일부는 배신자이며 충직한 장군들이 합의에 도달하는 것을 방해할 수 있음
Q. 충직한 장군들이 서로 합의에 도달하기 위한 조건은?
조건 1. oral message를 사용한다면 배신자의 수가 전체 장군의 수의 1/3 미만일 때 (n>3t)
합의에 도달할 수 있다는 것을 밝힘
조건 2. 모든 메세지가 올바르게 전달되고 믿을 만한 채널을 사용하며, 모든 메세지가 동기적으로 전달
let. 배신자의 수가 전체 장군의 수의 1/3일 경우,
-> 합의에 도달할 수 없음
let 2. 배신자의 수가 전체 장군의 수의 1/3 미만일 경우,
-> 합의에 도달할 수 있음
메세지 패싱 방식의 합의 알고리즘의 단점
: (-) 계속 메세지를 주고받아야 하기 때문에 합의에 필요한 메세지의 수가 기하급수적으로 증가
1. 시간 복잡도 O(n)=> n을 일정 수준 이상 늘릴 수 없음
2. 시스템 부하 => 새로운 노드가 자유롭게 들어올 수 없음
=> 폐쇄적 시스템임
=> 개방형 시스템에 적합한 새로운 합의 알고리즘이 필요함!!!
=PoW