Block chain
은행에서 업무를 보기 위해서는 장부가 필수적이다. 내가 입금을 하면 장부에 그 기록이 기입되고, 다시 출금을 할 때는 장부에서 입금된 내역을 확인하고 난 뒤에 가능하다. 은행은 업무의 핵심 요소인 장부를 안전하게 보관하기 위해, 보안에 굉장히 많은 투자를 한다.
블록 체인은 이와 반대로 특정 데이터를 안전하게 관리하는 방법이다. 기존의 방식이 중앙 서버에 데이터를 집중시키고, 이를 백업해 관리하면서 방화벽과 보안 프로그램을 가동해 해커와 같은 위험 요소로부터 보호해왔다. 블록체 인은 중앙 서버나 보안 프로그램이 필요 없이, P2P를 활용해 모든 사용자가 같은 데이터를 공유하는 방식이다.
비트 코인이 블록 체인의 대표적인 예이다. 모든 비트 코인 사용자는 P2P 네트워크에 접속해 똑같은 거래 장부 사본을 나눠 보관한다. 새로 생긴 거래 내역을 거래 장부에 써넣는 일도 사용자 몫이다. 이들은 10분에 한 번씩 모여 거래 장부를 최신 상태로 갱신한다. 모든 비트 코인 사용자는 가장 최근 10분 동안 돈을 주고받은 내역을 갖고 있던 거래 장부 끝에 추가한다. 기존 장부가 손상되면, 다른 사람이 가진 멀쩡한 장부를 복제해 복구한다. 이때 몇몇 사람이 멋대로 장부를 조작할 수 없도록 과반수가 인정한 거래 내역만 장부에 기록한다. 최근 거래 내역을 적어 넣었으면, 새로 만든 거래 장부를 다시 모든 비트 코인 사용자가 나눠 가져간다. 이런 작업을 10분에 한 번씩 반복한다. 이 때 10분에 한 번씩 만드는 거래 내역 묶음을 ‘블록(block)’이라고 부른다. 블록 체인은 블록이 모인 거래 장부 전체를 가리킨다.
이를 프로그램이 관리하기 때문에 실제로 사용자는 편리하게 비트 코인을 활용할 수 있다.
이런 특징으로 분산 컴퓨팅의 문제점을 해결할 수 있다. P2P에서는 특정 사용자들이 자신의 이익을 위해 다른 사용자에게 해를 끼칠 수 있다. 토렌트에서 바이러스가 포함된 파일이 공유되는 경우가 그 예이다. 즉 사용자끼리 서로 믿을 수 없다는 것이다. 비트 코인에서도 일부 사용자들이 거래 내역을 조작하려 할 수 있다.
이런 문제를 ‘비잔틴 장군의 딜레마’라고 하는데, 이를 따로 설명하지는 않겠다.
비트 코인에서 특정 사용자들이 거래 장부를 조작하려면, 똑같이 조작된 장부를 비트 코인 네트워크의 절반 이상의 자원을 통해 투입시켜야 한다. 하지만 이런 방식으로는 상위 500대의 슈퍼 컴퓨터의 자원으로도 불가능하다고 한다. 따라서 블록 체인 시스템은 대다수의 사용자에 의해 안전해진다는 것이다.
만약 비트 코인이 중앙 서버를 운영했다면 해커들이 중앙 서버를 공격할 가능성이 있지만, 모든 데이터가 일반 사용자들에게 공유되어 있다면 공격할 구심점이 사라진다. 또한 다른 사용자의 저장공간을 활용하기 때문에 무한에 가까운 자원을 쓸 수 있으며, 중앙 서버가 없으니 이를 관리하는 비용이 없다.
블록 체인은 단순히 장부를 기록하는 것이 아니라 데이터를 보관하는 시스템이기 때문에 비트 코인뿐만 아니라, 다양한 서비스에서도 블록 체인을 활용하고 있다. 특정 사용자에게만 유효한 암호화된 메시지를 모든 사용자에게 보내 통신 감시를 피하거나, DNS를 대신하는 서비스도 등장하고 있다. IBM은 IoT 솔루션의 일루로 블록 체인을 활용할 예정이라 한다. 블록 체인의 P2P 메시징, 안전한 분산 데이터 공유, 확장이 편한 디바이스 조정이 대표적인 이유다.