어떻게 비트코인을 소유할 수 있을까?
비트코인을 받기 위해서는, 나만의 키 한 쌍을 소유해야 합니다. 이 키 세트는 은행 계좌번호, 비밀번호와 같습니다. 단지 비트코인 환경에서는 공개키(Public key), 비밀키 또는 개인키(Private Key) 라고 부릅니다.
예를 들어, 제가 당신에게 비트코인을 전송하고싶다고 가정합시다. 당신은 먼저 나에게 당신의 공개키(Public key)를 나에게 줘야만 합니다. 내가 트랜잭션을 만들 때, 당신이 준 퍼블릭키를 이용하여 아웃풋 (전편에서 나온 금고)을 잠글 때 사용합니다. (이해가 안된다면 이전 게시글 3편을 참고해주세요)
그 다음 당신이 그 비트코인을 다른 누군가에게 보내고 싶을 때, 당신은 개인키와 쌍을 이루는 당신의 비밀키(Private Key)를 사용하여 그 아웃풋을 잠금 해제할 수 있습니다.
그러면 어디서 공개키와 비밀키를 얻을 수 있을까요? 바로 암호화(cryptography) 기술을 통하여 당신 스스로 생성할 수 있습니다.
요컨대, 당신의 비밀키는 단지 아주 큰 임의의 수(Random number)이고, 공개키는 비밀키로부터 계산된 하나의 수입니다. 여기서 아주 기발한 부분이 있는데요. 앞서 설명한 내용과 반대로 공개키로부터 비밀키를 알아낼 수는 없습니다.
이제, 당신이 당신의 공개키로 잠겨진 비트코인을 잠금 해제하려고 할 때, 비밀키를 사용하여 디지털 서명(Digital signature)을 생성합니다. 그리고 이 디지털 서명은 당신의 비밀키를 드러내지 않고도 해당 공개키의 주인이라는 것을 증명해줍니다! 따라서 당신의 비트코인의 잠금을 해제할 수 있습니다.
이 디지털 서명은 잠금 해제하고자하는 하나의 트랜잭션에만 유효하므로, 동일한 공개키로 잠긴 다른 비트코인의 잠금을 해제하는 데 사용할 수는 없습니다.
이 시스템은 "공개키 암호학(Public key cryptography)"으로 알려져 있으며, 1978년부터 사용 가능했습니다.(RSA)
비트코인은 이 시스템을 사용함으로써, 계좌와 비밀번호를 발행해주는 중앙 기관 없이도 누구나 공개키/비밀키를 만들어 비트코인을 안전하게 전송/수신할 수 있습니다.
자 이제 1~4편 내용을 모두 합쳐 총 정리를 해봅시다!
비트코인을 사용하기 위해서, 당신은 당신만의 개인키/공개키(Private key & Public key) 세트를 하나 생성해야합니다. 개인키는 아주아주 큰 임의의 수(very large random number)이고, 공개키는 이 개인키로부터 계산된 하나의 수입니다. 이 키 세트는 당신의 컴퓨터에서도 아주 쉽게 생성할수 있습니다. 심지어 계산기에서도 생성할 수 있습니다. 대부분의 사람들은 앞서 말한 키들을 생성하고 관리하는데 큰 도움을 주는 비트코인 지갑 어플리케이션을 사용합니다.
비트코인을 전송받기 위해서는, 당신은 당신의 공개키를 당신에게 비트코인을 보내고 싶어하는 A라는 사람에게 줘야합니다. 그러면 A는 트랜잭션을 만들고 본인(A)이 가진 비트코인을 잠금 해제한 뒤, 다시 새로운 금고를 만들고 보낼 비트코인을 담은 뒤, 당신이 보내준 공개키로 그 상자를 잠궈버립니다.
이제 이 트랜잭션은 비트코인 네트워크에 있는 모든 노드에 전송되어 공유되고, 여기서 네트워크의 모든 노드가 트랜잭션의 복사본을 가질 때 까지 노드끼리 공유 릴레이가 이어집니다. 여기서 각 노드는 블록체인에서 받은 최신 트랜잭션을 채굴(mining)할 수 있는 기회를 가집니다.
채굴 프로세스는 노드가 블록에 넣을 트랜잭션을 메모리풀에서 고르고, 해당 블록 데이터에 약간의 조정값과 함께 해시 함수를 반복적으로 실행하여 목표값(target) 이하의 블록 해시를 얻으려고 시도하는 과정을 포함합니다.
목표값(target)보다 낮은 블록 해쉬를 찾은 첫번째 채굴자는 블록을 블록체인에 추가하고, 이 블록을 네트워크의 다른 노드들에게 알립니다(broadcast). 알림을 받은 다른 노드들도 채굴자 노드와 마찬가지로, 이 블록을 블록체인에 추가하고 각자의 메모리 풀에서 방금 쌓은 블록 내의 트랜잭션과 충돌되는 트랜잭션을 제거합니다. 그리고 방금 쌓은 이 블록의 위에 다시 블록을 쌓기위해 채굴 과정을 재시작합니다.
마지막으로, 블록 채굴에 성공한 채굴자는 블록 보상(Block reward)으로 소정의 비트코인을 신규 발행받는 특별한 트랜잭션(코인베이스 트랜잭션)을 블록 내에 가장 처음으로 배치할 수 있습니다. 이 블록 보상은 노드들이 계속해서 블록체인을 구축하는 동시에 새로운 코인을 네트워크에 배포하게 하는 인센티브로 작용합니다.
- 키 세트를 생성합니다.
- 트랜잭션을 생성합니다.
- 트랜잭션을 네트워크의 한 노드에게 보냅니다.
- 트랜잭션은 네트워크를 통해 전파됩니다.
- 트랜잭션이 채굴자에 의해 블록에 모아집니다.
- 블록이 채굴되어 블록체인에 올라갑니다.
- 채굴된 블록이 다른 나머지 노드들에게 공유됩니다.
- 노드들은 새로은 블록을 블록체인에 추가합니다.
- 노드들은 채굴을 다시 시작합니다.
결론
비트코인은 전 세계의 다른 컴퓨터들과 안전한 파일을 공유하는 컴퓨터 프로그램입니다. 이 보안 파일은 트랜잭션으로 구성되며, 이러한 거래는 암호화를 사용하여 사람들이 디지털 금고를 주고 받을 수 있도록 해줍니다. 이에 따라, 누구나 이용할 수 있는 전자결제 시스템이 구축되고, 이는 중앙 통제점 없이 운영됩니다.
비트코인 네트워크는 2009년 1월 출시된 이후 중단된적 없이 운영되고 있습니다. 2019년 Bitcoin 네트워크는 1억 1,200만 건 이상의 거래를 처리하여 총 $15,577,763,114,629.34 (15.58조 달러) 를 이동했습니다.
비트코인 프로그램 자체도 적극적으로 개발 중이며 600명 이상의 개개인이 릴리스 이후 코드에 기여했습니다. 비트코인 소프트웨어는 오픈 소스(Open source)이기 때문에, 누구나 코드를 개선하고 개선에 기여할 수 있습니다.
마무리
4편을 마지막으로 learn me a bitcoin 의 How does bitcoin work? 번역을 마무리합니다.
어색한 번역과 오역이 있을 수도 있지만, 최대한 이해하기 쉽도록 작성해보았습니다.
이 글을 정리하면서 해결한 궁금증도 여럿 있었고, 어렴풋이 알고 있던 과정도 더 뚜렷하게 이해할 수 있는 계기가 되어 좋았습니다. :)
앞으로는 learn me a bitcoin 의 Technical Guide 페이지의 기술적인 부분들을 설명하는 포스팅을 올릴 예정입니다. (해당 가이드 1~4편 내에 나오는 부분부분 기술적인 단어들에 대한 링크를 모두 삽입할 예정입니다. 트랜잭션, 노드, 네트워크, 코인베이스 트랜잭션 등등)
'블록체인 > 비트코인' 카테고리의 다른 글
노드 (Nodes) (0) | 2023.04.07 |
---|---|
비트코인 네트워크 (Bitcoin Network) (0) | 2023.04.07 |
비트코인은 어떻게 작동하는가? (3) (0) | 2023.04.06 |
비트코인은 어떻게 작동하는가? (2) (0) | 2023.04.06 |
비트코인은 어떻게 작동하는가? (1) (0) | 2023.04.06 |