블록체인은 사용자들의 거래내역과 지갑 상태를 저장하는 거대한 데이터 장부입니다.
만약 A가 B에게 10ETH를 보냈다고 트랜잭션을 작성하게 되면
"A라는 사람이 B라는 사람에게 10 ETH를 보냈다"라는 거래내역과 "A 잔액 : 0 ETH , B 잔액 10 ETH"라는 지갑 상태를 블록에 저장하게 됩니다.
이때 블록이 체인에 연결되면, 저장된 데이터는 누구도 수정 할 수 없고, 다음 블록에도 저장되기 때문에, 데이터가 조작되고나 위조될 수 없습니다.
이 부분이 블록체인을 이용하는 가장 큰 이유이자, 가장 큰 장점입니다.
하지만 블록이 체인에 연결되더라도, 트랜잭션이 완전히 처리가 된 것은 아닙니다.
블록이 체인에 올라가더라도, 만약 체인이 두 갈래로 갈라진 상태로 블록이 추가가 되었다면, 체인 재구성이 일어나 나의 트랜잭션 데이터가 저장된 블록이 고아 블록이 되어 블록체인 네트워크에 없는 데이터가 될 수도 있습니다.
> 체인 재구성 , 고아 블록 이란?
블록체인에서 컨펌이란?
체인재구성이 발생할 때, 재구성되는 블록의 범위에 포함되지 않고, 메인넷에 나의 트랜잭션이 지속되어야만 완전한 트랜잭션이라고 할 수 있습니다.
실제로 트랜잭션이 온전히 완료되는 시점은 블록이 체인에 올라가고 자신의 트랜잭션이 저장된 블록 뒤에 일정 개수 이상이 연결된 시점입니다. 이때 연결되는 일정 개수가 컨펌입니다. 만약 내 블록 뒤로 5개의 블록이 이어진 시점을 컨펌 횟수 5회 라고 합니다.
이러한 컨펌이 왜 나의 데이터가 온전히 저장되는 시점의 지표가 되는 걸까요?
📜 컨펌이 적용되는 과정
(1) 블록에 저장되는 과정은 채굴자들의 채굴작업에 의해 진행됩니다. 채굴자들은 네트워크에서 제공하는 블록체인 네트워크 소프트웨어 프로그램을 통해 채굴을 할 수 있는 환경을 구축합니다.
이때 프로그램은 블록체인의 초기 블록부터 현재 블록까지 연결된 네트워크 체인을 제공합니다.
채굴자들은 추가로 발생하는 트랜잭션을 블록에 저장하여 제공받은 네트워크 체인에 해당 블록을 연결을 하게 됩니다.
(2) 채굴자 3명 중, Alice의 데이터가 검증이 완료되었고, 이와 같은 데이터를 가져온 채굴자들이 많아, 네트워크에는 Alice의 블록이 체인에 연결되었습니다.
그리고 그 블록에는 A가 B에게 10 ETH를 보냈다는 정보가 들어가 있습니다. 네트워크에 블록이 체인에 연결되었으니, 실제로 반영이 된 데이터입니다.
이후 블록은 계속해서 생성되며 체인은 계속해서 이어져 갑니다. 하지만 이 데이터는 완전하게 블록체인에 저장된 데이터일까요?
(3) 채굴자들 중 Bob은 좋은 컴퓨터 스펙과 높은 파워를 가진 채굴 장비를 갖고 있다 예를 들어 보겠습니다.
좋은 채굴 장비를 갖추게 되면, 블록 생성 속도가 기존 네트워크보다 빠릅니다. 때문에 다른 형태의 네트워크 체인이 생성될 수도 있습니다.
기존의 네트워크 체인과 다르다고 해서, 메인 네트워크에 저장이 안 되는 건 아닙니다.
만약 Bob이 주장하는 네트워크 체인과 같다고 주장하는 사람의 지분이 51%를 넘게 되면 기존 네트워크의 체인은 다시 구성될 수 있습니다.
이를 체인 재구성(chain reconfiguration)이라고 합니다.
체인 재구성이 발생하게 된다면, A가 B에게 10 ETH를 보냈다는 데이터는 블록체인에서 없는 데이터가 되고 고아 블록(orphan blocks)으로 변하게 됩니다.
때문에 우리의 트랜잭션이 메인 네트워크 체인에 연결이 되어도 온전히 저장된 데이터라고 하지 않습니다.
네트워크마다 다르지만, 컨펌 횟수를 적용하여 5회 또는 10회 컨펌이 확인되면 온전한 데이터로 생각합니다.
(4) 체인 재구성은 자주 일어나는 일은 아니지만,
비트코인에서는 5개의 블록 내에 발생 할 수 있다 하고, 이더리움은 10개 블록내에 체인 재구성이 발생할 수 있다고 얘기합니다.
나의 트랜잭션이 저장된 블록 뒤로 5개의 블록이 생성이 되면 체인 재구성으로부터 안전하다고 판단되며, 온전한 데이터가 됩니다.
이런 과정을 컨펌 횟수 5회라고 합니다.
컨펌을 받은 후, 발생하는 체인 재구성은 나의 데이터에 영향을 주지 않을 확률이 아주 높습니다.
체인재구성이 발생하게 되면, 가장 피해를 많이 보는 곳은 중앙화된 코인거래소입니다.
업비트, 빗썹 등 중앙화된 코인거래소는 사용자의 코인을 실제 돈으로 바꿔줍니다.
사용자가 거래소로 코인을 보내고, 거래소 지갑에 해당 코인이 들어오는걸 확인하면, 거래소는 사용자의 계좌로 코인가격 만큼 현금을 보냅니다.
만약 이때 체인재구성이 발생하게되면, 사용자가 거래소로 코인을 보냈다는 정보는 고아블록이 되고, 거래소 지갑에 있던 코인은 원래 사용자의 지갑으로 다시 돌아옵니다. 하지만 거래소가 사용자의 계좌로 보낸 현금은 블록체인에서 발생하는 일이 아니기에, 현금은 돌아오지 않습니다.
때문에 중앙화된 거래소는 사용자가 보낸 코인 트랜잭션이 컨펌 횟수 5회 또는 10회를 확인한 후, 계좌로 현금을 보내게 됩니다.
지금까지 블록체인 컨펌에 대해 알아봤습니다.
감사합니다.
댓글