공대생 정리노트

블록체인 이해하기 본문

블록체인

블록체인 이해하기

woojinger 2021. 11. 21. 15:35

출처 : 처음 배우는 블록체인 (한빛미디어)


타임스탬프

화폐 거래에서 거래 사실을 증명하기 위해서 필요하다. 각 거래의 앞 뒤 관계를 알리고, 사실을 증명하는데 사용함

 

중앙 집중형 시스템의 경우 중앙에서 관리하는 타임스탬프를 사용하면 되니 비교적 관리하기가 쉬움

절대 시각을 사용하지 않고 앞뒤 순서를 구분할 수 있는 상대시각을 사용하게 된다

블록체인은 암호화 해시 함수를 사용해 데이터 저장 순서를 정의한다. 해시 함수는 입력값을 구하기 어려운 일방향 함수를 사용

 

블록체인에서는 해시 트리와 해시 체인으로 블록을 만든다

해시 트리 기반의 블록을 해시 체인으로 묶는 것이다.

 

하지만 이렇게 구성한 타임스탬프 서버는 모든 노드가 항상 최신 타임스탬프를 확인할 수 없음

새로 만든 블록의 정보를 모든 노드가 공유할 때까지 다음 블록을 만들지 않아야 최신 타임스탬프라는 것을 보장하기 때문

 

작업 증명 알고리즘

블록체인에서는 위 문제점을 작업 증명 알고리즘을 통해 해결함

비트코인은 암호화 해시 함수의 특정 해시값 이하인 입력값(논스) 찾기를 알고리즘으로 사용

비트코인은 블록체인 안 모든 노드가 특정 타깃 이하인 해시값을 찾게 한다

 

작업 증명 알고리즘을 올바르게 풀었을 때 보상으로 새 블록을 주는 것을 채굴이라고 하는 것. 채굴하는 노드는 채굴자라고 함

 

비트코인에서는 모든 채굴자가 채굴한다고 가정했을 때 평균 10분에 1회 정도 새 블록을 생성하도록 타깃을 조정

 

블록의 해시값 계산이 끝나면 블록 타임스탬프를 블록에 설정함. 비트코인은 블록 타임스탬프와 네트워크 조정 시간을 이용해 실제 시간을 블록체인의 타임스탬프 서버에 저장한다.

이때 채굴자가 블록 타임스탬프를 마음대로 설정할 수 없도록 몇 가지 조건을 둔다

- 앞에 있는 11개 블록 타임스탬프 값의 중앙값 보다 커야함

- 네트워크 조정 시간은 P2P 네트워크에서 자신과 연결된 모든 노드가 반환한 블록 타임스탬프의 중앙값

- 네트워크 조정 시간보다 2시간(11개 이상의 블록을 생성할 수 있는 시간) 이상 지난 시각은 블록 타임스탬프 값으로 설정할 수 없음

 

이 조건을 지키더라도 블록 타임스탬프는 실제 시간과 1~2시간 오차가 가능함. 이는 나카모토 합의로 블록의 순서를 결정할 수 있음

 

나카모토 합의

블록을 생성했을 때 보상을 지급해 P2P 네트워크 전체에 최신 블록 정보를 안정적으로 공유하나 앞에 말한 블록 스탬프의 오차로 인해 최신 블록 정보가 도달하기 전 새 블록을 생성할 수 있음

 

이를 해결하기 위한 것이 나카모토 합의. 나카모토 합의는 블록의 높이임

- 블록 높이가 같은 2개의 블록에 서로 다른 정보가 있다면 생성 시 작업 증명 알고리즘을 푸는 난이도가 높았던 블록을 선택한다

- 블록 높이가 다른 블록 2개가 있다면 더 많은 블록이 연결된 블록을 선택한다

- 앞에 있는 블록은 뒤에 연결한 블록이 선택받지 못하더라도 블록에 있는 정보를 저장해 둔다. 선택하지 못한 블록과 같은 블록 높이를 갖는 새 블록이 생성되면 선택받지 못한 블록에 있는 데이터를 블록에 저장하지 않은 데이터로 취급해 새 블록에 저장한다

 

이러한 특성은 블록의 정보 유실을 막고, 이중 지급을 막는다

 

-> 아직은 잘 이해가 안된다... 실제로는 엄청 정교하고 복잡하지 않을까

 

UTXO

비트코인은 해시 트리를 구성 후 해시 루트를 블록의 해시값 계산에 사용. 이를 블록에 저장해 새 블록을 생성한 시점 이전과 현재의 거래 내역이 있음을 보장한다. 이때 블록에 저장한 거래 데이터를 누구나 볼 수 있는데, 자신이 소유한 암호화페를 다른 사람이 사용할 수 없게 하는 구조가 UTXO이다

- 다른 사람에게 일정량의 암호화폐를 받을 때 생성

- 받은 금액 그대로 각각의 UTXO로 저장

- UTXO 안 일부 금액을 송금 시 기존 UTXO는 파기하고 새 UTXO를 생성

 

공개키 암호화 방식을 이용해 암호화폐의 이용 권한을 관리함

공개키로 이용 권한을 잠그면 비밀키를 가지고 있는 사용자만 해제해 사용할 수 있는 것

이때 공개 키를 바탕으로 만든 문자열을 주소라고 한다

 

A가 100만원이 있는데 B에게 50만원을 송금하는 상황을 생각해보자

A는 자신의 비밀 키로 100만원 잠금을 해제한다. 그 후 B의 공개 키로 50만원을 잠그고, 50만원은 자신의 공개 키로 잠근다.

이때 이전에 기록되어 있는 A의 100만원은 잠금 해제가 되었으므로 다시는 사용할 수 없다.

UTXO는 잠겨서 사용하지 않은 암호화폐를 말한다

 

비트코인은 새 블록을 생성한 채굴자에게 보상으로 첫 번째 인덱스에 들어가는 UTXO를 발행한다. 이를 코인베이스 거래라고 한다.

채굴자는 자신이 소유한 UTXO에 거래가 발생했을 때 수수료를 받을 수 있다

 

 

 

Comments