5살도 이해하는 비트코인 이야기 [4부]

안녕하세요. 이번 시간에는 ‘비트코인’을 통해 다수의 사람들이 보유하고 있는 원본 데이터에 어떻게 새로운 정보가 기록되는지 알아보기로 했지요? 그럼, 시작하기 전에 한 가지 단어를 설명하고 넘어갈께요.

그건 바로 ‘원장(Ledger)’이라는 단어에요. 지난 시간에 블록체인이 도입된 시스템의 경우 다수의 사람들이 원본 데이터를 들고있다고 설명해드렸죠?

비트코인의 원본 데이터의 이름이 바로 ‘원장’이랍니다. 원장은 쉽게 생각하면 돈이 얼마나 들어오고 나왔는지를 기록해둔 장부라고 생각하면되요. 즉, 비트코인 블록체인 시스템에 참여한 사람들은 비트코인이 몇 개가 들어오고 나왔는지를 기록한 원장 정보를 가지고 있답니다.

비트코인 블록체인 시스템에 참여한 사람들이 각자 ‘원장’ 정보를 가지고 있기 때문에 비트코인의 원장은 흔히 ‘분산 원장(Distributed ledger)’이라고 불려요.

그럼, 오늘 우리가 알아볼 내용은 비트코인의 분산 원장에 새로운 비트코인 입금 및 출금 정보가 어떻게 기록되는지를 알아보는 것이겠죠?

비트코인의 분산 원장에 새로운 입금 및 출금 정보를 기록하는 일은 매우 중요한 일이에요. 만약, 새로운 정보가 잘못 기록되거나, 모든 분산 원장에 동일한 정보가 기록되어 있지 않으면 더 이상 누구도 비트코인 시스템을 믿지 못하게 될꺼에요.

생각해보세요. 분명 2개의 비트코인을 친구에게 보냈는데 친구에게는 1개의 비트코인만 도착하거나, 어떤 원장에는 2개를 보냈다고 기록되어 있고, 또 다른 원장에는 1개를 보냈다고 기록되어 있으면 우리는 비트코인 시스템을 정상적으로 이용할 수 없게되요.

은행에 돈을 5,000원 입금했는데 다음날 가보니 2,500원이 입금되어 있다면 누구도 그 은행을 이용하지 않을 거에요. 왜냐하면 내 잔액 정보를 올바로 기록하고, 관리하지 못하는 은행이 제공하는 금융 서비스는 누구도 ‘신뢰’하지 못하기 때문이죠.

그러므로! 비트코인의 분산 원장에 새로운 정보가 기록되기 위해서는 반드시 ‘검증’ 과정을 거쳐야해요. 비트코인의 검증 과정은 어떻게 이뤄지는 걸까요? 매우 간단하답니다! 힌트는 ‘비트코인 참여자들이 원장 정보를 가지고 있다는 것’이예요.

예, 맞아요. 원장 정보를 가지고 있는 비트코인 참여자들은 그 동안 몇 개의 비트코인이 생성되었는지, 누가 몇 개의 비트코인을 주고 받았는지 전부 알 수 있어요. 예를들면 조쉬가 친구인 바이올렛에게 비트코인 1개를 전송한 경우 원장을 가지고 있는 다른 참여자들은 조쉬가 가지고 있던 비트코인 1개가 정상적인 방법으로 얻어진 비트코인이 맞는지, 조쉬가 정말 바이올렛에게 비트코인 1개를 보낸 것이 맞는지를 검증해요.

만약, 검증 결과 아무 이상이 없다면 참여자들은 해당 전송 내역을 원장에 기록할 준비를 해둬요. 검증이 끝났는데 왜 기록하지 않고 ‘기록할 준비’를 해두냐고요? 왜냐하면 블록체인은 검증된 정보를 ‘즉시’ 기록하지 않고, ‘블록’ 단위로 기록하기 때문이랍니다.

왜 검증한 내용을 ‘즉시’ 원장에 기록하지 않을까요? 비트코인 원장 정보를 보유하고 있는 참여자들은 전 세계에 흩어져서 있고, 서로 네트워크를 통해 연결되어 있답니다. 이들은 네트워크를 통해 자신에게 전달된 전송 내역을 검증하고, 자신이 검증한 내역을 다른 참여자들에게 전파한답니다.

하지만 만약, 조쉬가 바이올렛에게 1개의 비트코인을 보냄과 동시에 토마스에게도 1개의 비트코인을 보낸 경우에는 어떻게될까요? 그럼, 원장 정보를 가진 참여자의 일부는 조쉬가 바이올렛에게 1개의 비트코인을 보냈다는 전송 내역을 검증해요. 그리도 또 다른 참여자들은 조쉬가 토마스에게 1개의 비트코인을 보냈다는 전송 내역을 검증해요. 이런 상황에서 참여자들이 ‘즉시’ 자신이 검증한 정보를 원장에 기록하면 전체 ‘분산 원장’이 서로 일치하지 않는 일이 발생해요.

이런 경우를 막기 위해 ‘블록’이라는 친구가 등장한거예요. ‘블록’은 말그대로 검증된 전송 내역이 담긴 ‘상자’를 의미해요. 즉, 참여자들이 자신이 검증한 전송 내역을 즉시 원장에 기록하면 전체 분산 원장이 일치하지 않는 사태가 발생할 수 있기 때문에 ‘블록’에 담긴 전송 내역만 원장에 기록하는 방법을 사용하는 거예요.

조쉬가 바이올렛과 토마스에게 동시에 1개의 비트코인을 보낸 경우를 생각해볼께요. 그럼, 일부의 참여자들은 조쉬가 바이올렛에게 1개의 비트코인을 보냈다는 전송 내역을 가지고 있고, 다른 참여자들은 조쉬가 토마스에게 1개의 비트코인을 보냈다는 전송 내역을 가지고 있어요.

이때 참여자들 중 한 명이 ‘블록’을 생성하고, 그 동안 자신이 검증한 전송 내역을 블록이라는 상자에 담아서 다른 참여자들에게 전달해요. 그럼 나머지 참여자들은 ‘블록’이 올바른 방법에 의해서 생성됐는지 검증한 뒤 ‘블록’에 담긴 전송 내역을 원장에 기록해요. 이로써 비트코인 전체 ‘분산 원장’에 동일한 전송 내역이 기록되는 거랍니다.

다시 한번 정리하면, 비트코인 원장 정보는 전 세계에 흩어진 참여자들이 보유하고 있어요. 참여자들은 누군가 비트코인을 전송하면 그 전송 내역을 ‘검증’해요. 그 뒤 검증한 내용을 일단 가지고 있어요. 그러다 참여자 중 한 명이 ‘블록’을 생성해요. 그럼, 그 참여자는 블록에 자신이 그 동안 검증한 전송 내역을 기록하고, 그 내용을 다른 참여자들에게 전파해요. 최종적으로 다른 참여자들은 해당 블록이 올바르게 만들어졌는지 검증한 뒤 해당 블록에 포함된 검증 내역을 자신의 원장에 기록한답니다.

이렇게 검증 후 ‘블록’에 기록된 전송 내역을 원장에 기록하는 방식을 사용하기 때문에 전 세계에 흩어져있는 비트코인의 분산 원장이 모두 동일한 기록을 가질 수 있는 것이랍니다. 이렇게 ‘블록’ 단위로 거래 내역을 원장에 기록하는 방식을 통해 비트코인 시스템은 약 10년의 시간이 흐르는 동안 전 세계적으로 분산되어 있는 원장을 모두 동일하게 유지하고 있답니다.