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

내위키
(새 문서: Blockchain.<ref>원래는 block chain이었는데 아예 그냥 blockchain이라는 단어가 되어 버렸다.</ref> 말 그대로 풀어보면 block + chain, 즉 블록이 사슬...)
 
편집 요약 없음
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
1번째 줄: 1번째 줄:
Blockchain.<ref>원래는 block chain이었는데 아예 그냥 blockchain이라는 단어가 되어 버렸다.</ref>
Blockchain.<ref>원래는 block chain이었는데 아예 그냥 blockchain이라는 단어가 되어 버렸다.</ref>


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


거래 기록을 만들고 보관하는 과정에서 가장 중요한 것은 '무결성', 즉 결함이 없어야 한다. 예를 들어, 사업을 하는 갑돌이가 은행에 1천만 원이 있다고 가정하자. 갑돌이는 다음과 같은 거래를 했다.
거래 기록을 만들고 보관하는 과정에서 가장 중요한 것은 '무결성', 즉 결함이 없어야 한다. 예를 들어, 사업을 하는 갑돌이가 은행에 1천만 원이 있다고 가정하자. 갑돌이는 다음과 같은 거래를 했다.
9번째 줄: 9번째 줄:
! 순서 !! 이유 || 입출금 액수 !! 잔액
! 순서 !! 이유 || 입출금 액수 !! 잔액
|-
|-
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
| 0 || 첫거래 감사합니다 || || 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
|-
|-
| 5 || 작업 비용 입금 || 5,000,000 || 9,700,000
| 5 || 작업 비용 입금 || 2,000,000 || 6,700,000
|}
|}


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


{| class="wikitable" style="text-align: right;"
{| class="wikitable" style="text-align: right;"
28번째 줄: 28번째 줄:
! 순서 !! 이유 || 입출금 액수 !! 잔액
! 순서 !! 이유 || 입출금 액수 !! 잔액
|-
|-
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
| 0 || 첫거래 감사합니다 || || 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
|-
|-
| 5 || 작업 비용 입금 || 5,000,000 || 2,500,000
| 5 || 작업 비용 입금 || 2,000,000 || -500,000
|}
|}


순서 1이 잘못되었으므로 이후의 거래들은 어그러진 것이다. 진짜 심각한 문제는 순서 3부터다. 아무런 문제가 없었다면 갑돌이의 통장이 마이너스 통장이 아닌 한은 순서 3의 거래는 잔액 부족으로 거부되었어야 한다. 결과론으로 보면 순서 5의 입금 때문에 잔액은 이러나 저러나 플러스가 되었지만 그렇다고 해서 일어나지 말았어야 할 거래가 일어난 것에 면죄부는 되지 않는다. 만약 통장 잔액이 부족한데 카드 대금 결제를 한다면 갑돌이는 돈을 빌리든지 해서 결제 금액을 충당해야 한다. 그런데 위와 같이 거래 내역에  결함이 있어서 실제로는 결제에 부족한 잔액이 결제에 충분한 잔액으로 잘못 기록되고 이에 따라 출금 거래가 이루어졌다면 갑돌이는 대출에 들이는 수고와 이자 비용을 아낄 수 있다. 그러나 잘못된 거래 내역 이후의 거래들은 줄줄이 사탕으로 시한폭탄을 안고 있다. 만약 갑돌이의 계좌가 끝끝내 텅텅 비었다면?
순서 1이 잘못되었으므로 이후의 거래들은 어그러진 것이다. 진짜 심각한 문제는 순서 3부터다. 아무런 문제가 없었다면 갑돌이의 통장이 마이너스 통장이 아닌 한은 순서 3의 거래는 잔액 부족으로 거부되었어야 한다. 기록으로는 잔액이 플러스 270만 원이지만 실제로는 마이너스 50만 원이다. 쉽게 말해서 '금융사고'가 난 것이다. 이 사고는 사실 갑돌이가 해킹을 해서 거래 내역을 변조한 것이다. 갑돌이는 800만 원을 출금한 다음 은행 서버에 침입해서 거래 내역 중 순서 1의 출금액을 80만 원으로 고치고 그 이후의 잔액들을 재계산해서 밀어 넣어 놓았다.
 
이런 문제를 막기 위해서 전통적으로 사용하는 방법은 온갖 보안 장치들을 붙여서 [[해킹]]을 막는 것이었다. 그만큼 비용이 많이 들어간다. 정기적으로 거래내역에 문제가 없니지 정산도 하고 감사도 한다. 은행들은 이러한 방법으로 거래 안전성을 보장하면서 수수료를 챙긴다.
 
블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 위의 거래내역에서 이유, 입출금 액수, 잔액 항목을 그냥 붙여서 문자열로 만든 다음, 가장 간단한 해시값인 MD2 알고리즘을 사용해 보면,
 
{| class="wikitable" style="text-align: right;"
|-
! 순서 !! 이유 || 입출금 액수 !! 잔액 !! 해시값
|-
| 0 || 첫거래 감사합니다 || 0 || 10,000,000 || 4223F822708D7DFB5B51608F07FA4F94
|-
| 1 || 거래처 결제 || -1,000,000 || 9,000,000 || CD63FE3F74308F98D6BD988432DCF215
|-
| 2 || 카드 대금 결제 || -3,000,000 || 6,000,000 || 94F9FA9035493B1AE3171DABA7FA2DEA
|-
| 3 || 갑돌이가 출금 || -8,000,000 || -2,000,000 || AC587A11600FC5882981F9B9700C51F7
|-
| 4 || 공과금 납부 || -500,000 || -2,500,000 || 546585418099F3C24FF5E2FCD4E6B19B
|-
| 5 || 작업 비용 입금 || 2,000,000 || -500,000 || 7046C8325A8C444FACEA99E48746B5D9
|}
 
도대체 저놈의 해시값이 뭐가 뭔지 모르겠지만 중요한 것은 각 해시값이 완전히 다르기 때문에 해시값으로부터 개별 내용을 알아내는 건 불가능한 수준이라는 점만 기억하자. 여기서 사용한 MD2 알고리즘은 간단한 거라서 실제 블록체인은 SHA256과 같이 훨씬 복잡하고 해시값이 긴 알고리즘을 사용한다.


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

2020년 1월 29일 (수) 17:50 기준 최신판

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

그런데, 갑돌이가 출금을 할때 (순서 3) 찾은 금액이 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만 원으로 고치고 그 이후의 잔액들을 재계산해서 밀어 넣어 놓았다.

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

블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 위의 거래내역에서 이유, 입출금 액수, 잔액 항목을 그냥 붙여서 문자열로 만든 다음, 가장 간단한 해시값인 MD2 알고리즘을 사용해 보면,

순서 이유 입출금 액수 잔액 해시값
0 첫거래 감사합니다 0 10,000,000 4223F822708D7DFB5B51608F07FA4F94
1 거래처 결제 -1,000,000 9,000,000 CD63FE3F74308F98D6BD988432DCF215
2 카드 대금 결제 -3,000,000 6,000,000 94F9FA9035493B1AE3171DABA7FA2DEA
3 갑돌이가 출금 -8,000,000 -2,000,000 AC587A11600FC5882981F9B9700C51F7
4 공과금 납부 -500,000 -2,500,000 546585418099F3C24FF5E2FCD4E6B19B
5 작업 비용 입금 2,000,000 -500,000 7046C8325A8C444FACEA99E48746B5D9

도대체 저놈의 해시값이 뭐가 뭔지 모르겠지만 중요한 것은 각 해시값이 완전히 다르기 때문에 해시값으로부터 개별 내용을 알아내는 건 불가능한 수준이라는 점만 기억하자. 여기서 사용한 MD2 알고리즘은 간단한 거라서 실제 블록체인은 SHA256과 같이 훨씬 복잡하고 해시값이 긴 알고리즘을 사용한다.

각주

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