블록체인: 두 판 사이의 차이

내위키
편집 요약 없음
편집 요약 없음
11번째 줄: 11번째 줄:
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
|-
|-
| 1 || 갑돌이가 출금 || -800, 000 || 9,200,000
| 1 || 거래처 결제 || -1,000,000 || 9,000,000
|-
|-
| 2 || 거래처 결제 || -1,000,000 || 8,200,000
| 2 || 카드 대금 결제 || -3,000,000 || 6,000,000
|-
|-
| 3 || 카드 대금 결제 || -3,000,000 || 5,200,000
| 3 || 갑돌이가 출금 || -800,000 || 5,200,000
|-
|-
| 4 || 공과금 납부 || -500,000 || 4,700,000
| 4 || 공과금 납부 || -500,000 || 4,700,000
30번째 줄: 30번째 줄:
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
|-
|-
| 1 || 갑돌이가 출금 || -8,000,000 || 2,000,000
| 1 || 거래처 결제 || -1,000,000 || 9,000,000
|-
|-
| 2 || 거래처 결제 || -1,000,000 || 1,000,000
| 2 || 카드 대금 결제 || -3,000,000 || 6,000,000
|-
|-
| 3 || 카드 대금 결제 || -3,000,000 || -2,000,000
| 3 || 갑돌이가 출금 || -8,000,000 || -2,000,000
|-
|-
| 4 || 공과금 납부 || -500,000 || -2,500,000
| 4 || 공과금 납부 || -500,000 || -2,500,000
42번째 줄: 42번째 줄:


순서 1이 잘못되었으므로 이후의 거래들은 어그러진 것이다. 진짜 심각한 문제는 순서 3부터다. 아무런 문제가 없었다면 갑돌이의 통장이 마이너스 통장이 아닌 한은 순서 3의 거래는 잔액 부족으로 거부되었어야 한다. 기록으로는 잔액이 플러스 270만 원이지만 실제로는 마이너스 50만 원이다. 쉽게 말해서 '금융사고'가 난 것이다. 이 사고는 사실 갑돌이가 해킹을 해서 거래 내역을 변조한 것이다. 갑돌이는 800만 원을 출금한 다음 은행 서버에 침입해서 거래 내역 중 순서 1의 출금액을 80만 원으로 고치고 그 이후의 잔액들을 재계산해서 밀어 넣어 놓았다.
순서 1이 잘못되었으므로 이후의 거래들은 어그러진 것이다. 진짜 심각한 문제는 순서 3부터다. 아무런 문제가 없었다면 갑돌이의 통장이 마이너스 통장이 아닌 한은 순서 3의 거래는 잔액 부족으로 거부되었어야 한다. 기록으로는 잔액이 플러스 270만 원이지만 실제로는 마이너스 50만 원이다. 쉽게 말해서 '금융사고'가 난 것이다. 이 사고는 사실 갑돌이가 해킹을 해서 거래 내역을 변조한 것이다. 갑돌이는 800만 원을 출금한 다음 은행 서버에 침입해서 거래 내역 중 순서 1의 출금액을 80만 원으로 고치고 그 이후의 잔액들을 재계산해서 밀어 넣어 놓았다.
이런 문제를 막기 위해서 전통적으로 사용하는 방법은 온갖 보안 장치들을 붙여서 해킹을 막는 것이었다. 그만큼 비용이 많이 들어간다. 정기적으로 거래내역에 문제가 없니지 정산도 하고 감사도 한다. 은행들은 이러한 방법으로 거래 안전성을 보장하면서 수수료를 챙긴다.
블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 거래가 일어날 때마다 이전 거래의 내역과 현재 거래의 내역을 붙여서 해시값을 만들어서 함께 기록한다면 어떻게 될까?


{{각주}}
{{각주}}

2019년 12월 28일 (토) 03:29 판

Blockchain.[1]

말 그대로 풀어보면 block + chain, 즉 블록이 사슬 혹은 줄줄이 사탕처럼 이어져 있는 것을 뜻한다. 실제로 그렇다. 계속 쌓여가는 기록이 '블록' 단위로 '체인'으로 이어져 있으며, 암호학을 활용하여 보안성을 구현한다. 그리고 이러한 블록체인을 세상 천지에 분산시킴으로써 보안을 극대화한다. 비트코인을 필두로 한 암호화폐가 이러한 블록체인 기술을 활용한 대표 사례이며, 블록체인 자체가 비트코인에서 나온 개념이다.

거래 기록을 만들고 보관하는 과정에서 가장 중요한 것은 '무결성', 즉 결함이 없어야 한다. 예를 들어, 사업을 하는 갑돌이가 은행에 1천만 원이 있다고 가정하자. 갑돌이는 다음과 같은 거래를 했다.

순서 이유 입출금 액수 잔액
0 첫거래 감사합니다 10,000,000
1 거래처 결제 -1,000,000 9,000,000
2 카드 대금 결제 -3,000,000 6,000,000
3 갑돌이가 출금 -800,000 5,200,000
4 공과금 납부 -500,000 4,700,000
5 작업 비용 입금 2,000,000 6,700,000

그런데, 갑돌이가 출금을 할때 (순서 1) 찾은 금액이 80만 원이 아니라 800만 원이라는 사실이 뒤늦게 밝혀졌다. 그렇다면 거래는 아래와 같았어야 했다.

순서 이유 입출금 액수 잔액
0 첫거래 감사합니다 10,000,000
1 거래처 결제 -1,000,000 9,000,000
2 카드 대금 결제 -3,000,000 6,000,000
3 갑돌이가 출금 -8,000,000 -2,000,000
4 공과금 납부 -500,000 -2,500,000
5 작업 비용 입금 2,000,000 -500,000

순서 1이 잘못되었으므로 이후의 거래들은 어그러진 것이다. 진짜 심각한 문제는 순서 3부터다. 아무런 문제가 없었다면 갑돌이의 통장이 마이너스 통장이 아닌 한은 순서 3의 거래는 잔액 부족으로 거부되었어야 한다. 기록으로는 잔액이 플러스 270만 원이지만 실제로는 마이너스 50만 원이다. 쉽게 말해서 '금융사고'가 난 것이다. 이 사고는 사실 갑돌이가 해킹을 해서 거래 내역을 변조한 것이다. 갑돌이는 800만 원을 출금한 다음 은행 서버에 침입해서 거래 내역 중 순서 1의 출금액을 80만 원으로 고치고 그 이후의 잔액들을 재계산해서 밀어 넣어 놓았다.

이런 문제를 막기 위해서 전통적으로 사용하는 방법은 온갖 보안 장치들을 붙여서 해킹을 막는 것이었다. 그만큼 비용이 많이 들어간다. 정기적으로 거래내역에 문제가 없니지 정산도 하고 감사도 한다. 은행들은 이러한 방법으로 거래 안전성을 보장하면서 수수료를 챙긴다.

블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 거래가 일어날 때마다 이전 거래의 내역과 현재 거래의 내역을 붙여서 해시값을 만들어서 함께 기록한다면 어떻게 될까?

각주

  1. 원래는 block chain이었는데 아예 그냥 blockchain이라는 단어가 되어 버렸다.