비트코인과 블록체인 (2) - 사용자 관리와 인증 및 블록체인 기술
5. 사용자 관리와 인증
비트코인은 사용자를 관리하는 중앙의 서버가 없습니다. 거래에 사용되는 계좌와 이를 이용하는 주체 인증에 공개키 암호화 방식을 사용합니다.
- 공개키 방식의 원리
- ECDSA 알고리즘 사용
다음 그림과 같이 특정한 메시지에 대한 서명을 자신만이 알고 있는 개인키로 서명하면, 제삼자는 공개키를 이용해 그 서명이 이 공개키의 짝에 해당하는 비밀키로 서명한 것인지 확인할 수 있습니다.
이 공개키와 개인키의 짝은 암호화 알고리즘을 이용해 누구나 생성할 수 있다. 비트코인에서는 이 공개키를 일종의 일회용 계좌번호처럼 사용합니다.
누구나 스스로 만들 수 있기 때문에 사용자나 계좌를 등록하는 절차가 필요 없고, 공개키 암호화 알고리즘을 이용해 계좌의 소유자가 맞는지를 인증할 수 있습니다.
- 블록체인 구조 이용
다음으로 비트코인의 흐름에 대해 알아보도록 하겠습니다.
위 다이어그램에는 4개의 거래 혹은 수표가 있습니다. 'Transaction C'가 C라는 사람이 발행한 수표 라고 가정을 합니다.
이 수표에는 2개의 입력, 즉 과거에 발행된 2개의 수표를 참조하는 링크가 존재합니다. 하나는 A로부터 받은 100BTC를 참조하는 링크고, 다른 하나는 B로부터 받은 50BTC를 참조하는 링크 입니다.
C는 150BTC 까지 사용할 수 있는데, 이 중 101BTC를 D에게 주겠다는 수표가 'Transaction C‘ 입니다.
C에게서 101BTC를 받은 D는 이 101BTC를 누군가 다른 사람에게 전부 제공하는 수표인 'Transaction D'를 발행하였습니다.
모든 수표가 그 이전 수표에서 나온다면 링크를 계속 따라가다 보면 결국엔 이전 수표가 없는 수표가 존재할 것입니다.
다이어그램에서 'Transaction B'가 바로 이전 수표가 없는 수표입니다.
이 수표는 채굴을 통해 자동으로 발행된 비트코인을 담고 있습니다.
채굴로 발행된 비트코인은 지급받은 본인만 사용할 수 있으므로 C가 비트코인을 지급받은 사용자 입니다.
C는 자신이 채굴로 얻은 50BTC와 A에게서 받은 100BTC를 합쳐서 150BTC의 잔고를 만든 다음, D에게 101BTC를 준다는 수표를 발행한 것입니다.
나머지 49BTC는 거스름돈에 해당하며, 다른 거래에 사용할 수 있습니다.
6. 블록체인 위조 방지
개인이 임의로 발행한 모든 수표를 어떻게 보관하는가 하는 문제가 발생합니다.
비트코인에서는 네트워크상의 모든 피어가 이 수표를 모두 보관합니다.
요즘 PC의 용량과 하드디스크의 비용을 고려하면 데이터의 양은 큰 문제가 아닐 것입니다. 문제는 위조의 방지다.
비트코인은 수표 즉 거래 위조 방지를 위해 링크드 리스트로 구성된 블록체인을 활용합니다.
블록에 앞선 블록의 해시 값을 담고 있습니다.
- 링크드 리스트로 구성된 블록체인
- 블록을 위조하기 위해서는 블록체인의 모든 블록을 위조해야하는 어려움이 존재
Block 1 거래를 위조하기 위해 Block 1의 내용을 수정하면, Hash 1이 바뀌게 되어 Block 2가 담고있는 Hash1과 일치하지 않게됩니다. 따라서 Block 2도 수정해야 합니다.
마찬가지로 이후의 모든 블록도 수정해야 할 것입니다.
만약 블록 하나를 위조하는데 한 달이 걸린다면 이후의 n개 블록까지 새로 만드는 데는 n개월이 소요될 것입니다.
그 시점엔 이미 훨씬 더 많은 블록이 Block n 이후에 리스트를 이루며 생성되어 있을 것입니다.
따라서 블록체인의 위조는 거의 불가능합니다.
7. 블록체인 원본 유지 원칙
아무도 블록을 위조할 수 없다고 하더라도 아직 한 가지 문제가 남게 됩니다.
수 많은 사람들이 비트코인 채굴에 참여하고 있습니다.
여러 대의 사용자가 비슷한 시점에 각각 해답을 찾을 수도 있을 것입니다.
이에 따라 비트코인에서는 가장 길이가 긴 블록체인을 원본으로 받아들이자는 원칙을 제시하였습니다.
다음은 블록 체인이 나눠질 경우를 간략화 한 예시입니다.
- 가장 길이가 긴 블록체인을 원본으로 간주
맨 밑에 있는 블록부터 시작해서 위로 블록체인을 만들어 나갑니다.
특정 시점에 여러 블록이 동시에 생성되어 블록체인이 나눠질 수 있지만, 곧 어느 한 블록체인이 더 길어질 것이고 짧은 블록체인은 버려집니다.
가장 긴 블록체인이 원본이 되고 네트워크의 모든 피어가 동일한 블록체인을 유지할 수 있게 됩니다.