아무튼, 비트코인 동작 원리는 '연쇄적 암호화, 쪽수로 밀어붙여' 이렇게 두 가지로 보면 된다. 지금부터 이 두 가지를 최대한 쉽게 설명하겠다. 기술 용어 사용은 자제할텐데, 나오더라도 일단은 그냥 그런게 있나보다 하고 넘어가도 무방하다.
기존 금융 시스템이 그러하듯, 비트코인 시스템도 거래 내역을 데이터 베이스에 기록한다. 비트코인 시스템의 DB는 순차적으로 연결된 블록들로 구성된다. 하나의 블록에 50건의 거래가 기록된다고 한다면, 첫 번째 블록인 A 블록에는 1~50번 거래가 기록되겠지. B 블록에는 51~100번 거래가 기록될테고.
비트코인 시스템은 보안을 위해 각각의 블록마다 해쉬라는 암호키를 부여한다. 이 해쉬 값이 있어야 해당 블록의 데이터에 접근할 수 있다. 해쉬 함수에 입력값을 넣으면 그것에 해당하는 256 글자로 된 결과 값을 생성하는데 이것이 바로 해쉬 값이다. 해쉬 함수는 너무 복잡해서 생성된 해쉬 값을 가지고 거꾸로 입력값을 도출할 수는 없다. 해쉬 값을 역산하는 방법은 가능한 모든 경우의 수를 일일히 대조하는 것 뿐이다. 다음 블록을 생성하려면 이전 블록의 암호값을 맞춰야 한다. B블록을 만들려면 A블록 암호 값을 역산해야 한다.
그럼 A 블록 암호 값은 어떻게 생성될까? A 블록에 기록된 모든 거래 정보에 몇 가지 정보를 더하여, 해쉬 함수에 입력값으로 넣어서 구한다. 몇 가지 정보중 하나가 바로 직전 거래들이 기록된 바로 전 블록의 해쉬 값이다. 이처럼 블록들이 해쉬값을 기준으로 순차적으로 연결되는 구조라 블록체인이라 부른다. 다음 블록을 생성하기 위해 이전 블록의 암호값을 역산하는 행위를 작업 증명이라 하며, 작업 증명 과정에 참여하고 보상으로 비트코인을 획득하는 것을 채굴이라 한다.
51~100번 거래가 기록된 B 블록의 해쉬값은 B 블록에 기록된 50건의 거래 정보와 직전 블록인 A 블록 해쉬값을 조합하여 도출한 데이터를 SHA-256 함수에 입력하여 구한다. 따라서 특정 블록의 암호화가 이후 연결되는 다른 블록들의 암호화에도 영향을 준다. 이것이 바로 첫번째 원리인 '연쇄적 암호화'.
만일 누군가 A 블록을 해킹하여 거래 정보를 변경하면, 거래 정보를 입력하여 생성한 A 블록의 해쉬 값도 바뀐다. 해쉬 값이 바뀌면 A 블록의 해쉬값을 저장하고 있던 B 블록은 해킹으로 조작된 A 블록을 유효한 데이터로 인정하지 않는다. B 블록에 저장된 A 블록의 해쉬값을 바꾸면 B 블록의 해쉬값도 바뀐다. 따라서 비트코인 시스템의 거래 정보를 위조하려면 해당 블록과 이후에 이어지는 모든 블록들을 전부 조작해야 한다. 이러한 성질 덕분에 블록체인은 보안성이 뛰어나다.
비트코인 시스템은 블록체인들을 체굴에 참여한 여러 컴퓨터에 백업한다. 그래서 비트코인 시스템이 분산화된 거래 원장이라 일컫는다. 비트코인 시스템은 과반수가 넘는 체인의 기록과 일치하는 블록체인 기록만 진본으로 인정하기 때문에, 체굴에 참여한 전 세계의 모든 컴퓨터들에 복제되어 있는 체인들을 일일히 찾아서 싹 다 바꿔야 한다.
이런 짓도 하려면 할 수는 있지만, 이렇게 해서 얻는 이득보다 비용이 훨씬 크다. 이것이 바로 두 번째 원리 '쪽수로 밀어붙여'. 정식 명칭은 비잔틴 장군 문제 해결인데, 간단히 말하면 거래 정보가 서로 다른 블록체인이 존재할 경우 사본 개수가 많은 쪽을 진본으로 인정하는 것이다. 이러한 성질 덕분에 별도의 중앙 통제 시스템 없이도 강력한 보안성을 가진다.
지금까지 비트코인 채굴과 블록체인 생성 원리를 설명했다. 말했듯이 최대한 쉽게 설명하려고 노력했다. 보다 정확한 설명을 원한다면 이 글로는 부족할 것이니 따로 찾아보시길. 위 설명 조차 어렵다면 일단 '연쇄적 암호화, 쪽수로 밀어붙여' 이 두 가지만 기억하자. 그리고 이것 저것 보고 듣다 보면 결국 이해가 될 것이다.
댓글 없음:
댓글 쓰기