비트코인 : 개인 대 개인 전자 화폐 시스템

강나현·2022년 9월 19일
0

SKKRYPTO

목록 보기
1/9
post-thumbnail

2008년 나카모토 사토시는 비트코인 블록체인을 최초로 고안하였다. 비트코인은 디지털 거래에서 제 3의 금융기관 등에 의존하지 않고, 개인과 개인이 안전하게 거래할 수 있는 시스템을 실현하였다. 기존의 거래는 분쟁 중재 등의 문제로 비가역적이지 않으며, 제 3자를 항상 신뢰할 수 있어야 한다는 단점이 있었다. 그는 암호학적 작업 증명에 기반하여 제 3자에 의존하지 않고도 안전한 거래를 할 수 있음을 보여주었으며, 이중지불과 네트워크 공격 등의 문제를 해결하였다. 블록체인 백서는 디지털 화폐와 차별화되는 비트코인의 특성을 소개한다.

주요 용어

1) 해시 함수: 임의의 길이의 문자열을 동일한 길이의 출력 값으로 변환하는 함수. 단방향 함수 로 보안성이 높다.
2) 공개 키: 암호 방식에서 개인이 소유한 키 중 공개되는 키. 공개 키로 암호화 한 내용은 비공개 키로 복호화 할 수 있다.
3) 비공개 키: 암호 방식에서 개인이 소유한 키 중 공개되지 않는 키. 비공개 키로 암호화 한 내용은 공개 키로 복호화 할 수 있다.
4) 이중 지불: 디지털 화폐 시스템에서 동일한 자산을 두 명의 송금자에게 전송하는 것

1. 기존 결제 방식과 그 문제점

기존의 전자 화폐는 화폐 송금 시 이전 거래 내역과 다음 소유자 공개키 해시에 서명을 하고, 그 정보를 화폐 끝에 첨가한다. 거래가 완료되면 그 화폐는 조폐국으로 회수되며, 새로운 화폐로 발행된다. 이 방식의 문제점은 수금자가 소유자의 이중지불 여부를 직접 검증할 수 없다는 것이다. 수금자가 아닌 조폐국이 모든 거래를 확인하여 이중지불을 확인하고, 조폐국에서 발행한 화폐만이 이중지불되지 않았음을 검증받을 수 있다. 이는 개인 간의 거래에 항상 조폐국이 개입하여 전체 통화 체계가 조폐국에 의존할 수 밖에 없다는 것을 의미한다.

2. 타임스탬프와 작업증명

제 3자에 의존하지 않고 이중지불 문제를 해결하기 위하여, 수금자는 화폐의 이전 소유자가 이전의 거래에 서명하지 않았음을 확인할 수 있어야 한다. 이때, 소유자가 가장 먼저 서명한 거래만이 유효한 거래로 인정되며, 나머지는 이중지불 거래로 분류된다. 조폐국 없이 이중지불을 확인하기 위해, 거래 내역을 모두가 공유하고 참가자는 그 순서를 기록한다. 이는 타임스탬프를 활용해 실현할 수 있다.
타임스탬프 서버는 블록의 타임스탬프 해시값을 배포한다. 각 타임스탬프는 이전의 타임스탬프를 포함하며 무한히 연결된다. 타임스탬프 서버에는 작업증명 기술이 활용된다. 작업 증명은 해시 연산을 거친 결과가 0 비트로 시작할 수 있는 특정 값을 찾는 과정이다. 이때 그 값을 구하는 연산 작업은 요구되는 0 비트의 수에 따라 지수적으로 달라진다.

작업증명 네트워크의 과정

1) 새로운 거래가 모든 노드에 배포되면, 각 노드가 그 거래를 블록에 수집한다.

2) 각 노드는 블록에 맞는 작업증명을 찾는다.

3) 한 노드가 작업증명을 찾았다면, 그 블록을 다른 노드로 배포한다. (두번째 노드가 가장 빨리 작업증명을 찾아냄.)

4) 모든 거래가 유효하고, 이중지불 되지 않았음이 입증되면 그 블록을 승인한다.

5) 이전에 승인된 블록의 해시가 포함된 새로운 블록을 생성해 체인에 연결한다.

6) 두 노드가 동시에 다음 블록을 배포한다면, 노드는 먼저 받은 블록을 우선 작업하지만 다른 사슬이 더 길어진다면 그 사슬로 전환한다.

7) 만약 한 노드가 블록을 받지 못할 경우, 그 다음 블록을 받을 시점에 블록이 누락되었음을 인지할 수 있으며 다른 노드에게 누락된 블록을 요청한다.

공격자가 거래 조작을 시도하는 경우

1) 공격자가 다음과 같은 사슬에서 블록을 수정하려 한다고 가정하자.

2) 공격자가 블록 4를 수정하려고 할 때, 블록 4에는 직전 블록인 블록 3에 대한 해시가 포함되어 있다. 블록 4가 수정되면 블록에 포함된 직전 블록의 해시에 대한 내용이 달라진다.

3) 공격자가 블록 4의 내용을 바꾸면 그 블록은 양옆의 블록인 블록 3, 5와 연결되지 않으며, 조작된 블록이라는 것이 바로 밝혀질 것이다. 이는 사슬 내 어떤 블록에서도 마찬가지이다.

4) 즉, 공격자가 블록 하나를 수정하려면 이전의 모든 블록을 수정해야 한다. 각 블록은 이전 블록의 해시를 기록하며 연결되기 때문에, 조작한 블록이 이전 블록의 내용을 담고 있지 않다면 그 블록은 유효한 블록으로 인정되지 않는다. 만약 공격자가 이전 블록을 모두 수정하였더라도, 그 블록을 다른 노드에 보내며 다른 노드의 작업을 더 빠르게 수행해 그들을 앞질러야 한다. 이것은 수학적으로 불가능에 가까운 작업으로 타임스탬프 서버 상의 거래는 절대 조작될 수 없다.

3. 인센티브

블록체인은 제 3자에 의존하지 않는다. 그러나 아무도 작업증명을 수행하지 않고 블록체인의 안정적 운영에 기여하지 않는다면, 서버는 정상적으로 운영되지 않는다. 이를 해결하기 위해, 작업증명에 성공해 새로운 블록을 만든 노드에게 인센티브를 부여한다. 이 인센티브는 작업증명에 사용된 CPU 시간과 전력에 대한 일종의 보상이다. 비트코인 거래에는 거래 수수료가 발생하는데, 인센티브는 이 거래 수수료에서 충당된다.

인센티브 구조는 노드의 정직한 행동을 유도한다. 한 사람이 많은 CPU 파워를 모을 수 있다면, 그는 사슬을 조작해 부당 이익을 얻거나 새로운 블록을 빠르게 만들어 인센티브를 얻을 수 있다. 이때 후자의 경우가 더 많고, 더 정직한 이익을 주기 때문에 그는 공격보다는 작업증명에 집중할 것이다.

4. 머클트리와 작업 간소화

블록 안에 거래 내역이 많이 쌓이면, 디스크 공간을 절약하기 위해 각 거래의 해시를 합칠 수 있다. 각 거래는 짝지어 해시되며, 이 과정을 반복해 루트 해시가 블록에 저장된다. 이때, 결제 검증은 젠체 네트워크 노드를 구동하지 않아도 이루어질 수 있다. 검증할 거래의 해시를 그 거래가 포함된 블록의 루트 해시에 연결했을 때, 네트워크 노드가 그 해시를 받아들인다면 결제검증이 완료된다.
그러나 이는 네트워크의 신뢰 가능성에 의존하는 검증 방식이다. 공격자의 CPU가 네트워크를 과점하면 조작된 거래 내역에 이용자가 속을 수 있다. 해결책은 네트워크가 유효하지 않은 블록을 탐지할 때, 사용자가 그 블록에서 부정한 거래를 직접 확인하게 하는 것이다.

5. 프라이버시

기존의 은행 모델에서는 공중이 거래 정보에 접근할 수 없게 한다. 그러나 비트코인 거래에서는 거래 내역이 공중에게 공개된다. 그러나 그 거래가 누구의 거래인지는 공개되지 않는다. 만약 누군가 여러 거래에서 사용된 공통된 키를 발견한다면, 그 키로 거래 당사자를 추정할 수 있다. 이를 막기 위해 각 거래마다 다른 키를 사용해야 한다는 의견이 있다.

6. 계산

공격자가 조작된 거래내역을 만들어내려면 공격자는 블록의 내용을 조작함과 동시에 다른 노드가 수행하고 있는 작업증명을 따라잡아야 한다. 공격자가 뒤쳐질 수록 그가 다른 노드를 앞질러 조작에 성공할 확률은 더 낮아진다.

7. 결론

비트코인 네트워크는 더이상 제 3자의 신뢰에 의존하지 않는 획기적인 방식이다. 비트코인은 국가에 의해 통제되지 않으며 알고리즘에 의해 정해진 양만큼만 발행 되며 의도적인 환율 조작 등에서 자유로운 가장 투명한 화폐라고 할 수 있다. 다만 비트코인은 그 가치가 매우 빠르게 변하기 때문에 당장의 대중화는 어려울 수 있다. 비트코인이 투자의 한 수단이 된 이유도 이 때문이라고 생각한다. 비트코인의 특징과 장단점을 잘 알지 못하고 투자 대상으로만 바라보는 것은 비트코인이 가져올 사회경제적 파장을 무시한 채 당장의 이익만 바라보는 행위이다. 비트코인의 긍정적 효과를 잘 이용하고 부정적 효과를 대비하기 위해서는 비트코인을 잘 알고 이해해야 할 것이다.

profile
SKKRYPTO Dev Team Leader

0개의 댓글