비트코인 코어
비트코인의 규칙은 법전처럼 한 문서에만 적혀 있지 않습니다. 실제로 무엇이 유효한지는 노드 소프트웨어가 코드를 통해 검증합니다. 비트코인 코어는 사토시 나카모토가 처음 내놓은 프로그램에서 이어져 온 대표적인 노드 소프트웨어입니다.
누구나 내려받아 실행할 수 있고, 소스 코드가 공개되어 있습니다. 그래서 비트코인 코어는 글로 적힌 공식 규격을 대신해 규칙을 구현하는 사실상의 기준 가운데 하나로 기능합니다.
코드로 구현된 규칙
보통의 제도에는 법전이 있습니다. 어떤 일이 허용되고 금지되는지 조문을 확인하고, 다툼이 생기면 그 문장을 근거로 판단합니다. 비트코인에는 모든 합의 규칙을 완결적으로 규정하는 단일한 공식 명세가 따로 있는 것은 아닙니다. 비아이피 같은 기술 문서는 설계와 변경 사항을 설명하지만, 실제로 거래와 블록이 유효한지는 각 노드의 구현이 검증합니다.
다른 사람이 만든 노드 소프트웨어를 사용해도 같은 규칙을 따르면 문제가 없습니다. 다만 규칙을 미세하게 다르게 구현하면 서로 다른 블록을 인정해 사슬이 갈라질 수 있습니다. 이런 이유로 많은 참여자가 비트코인 코어를 사용하고, 다른 구현도 서로 맞추려 노력합니다.
표준이 된 사전과 같은 역할
비트코인 코어는 법으로 정해진 유일한 소프트웨어가 아닙니다. 여러 사람이 기준으로 삼아 사용하면서 사실상 표준처럼 자리 잡은 프로그램에 가깝습니다.
국어사전을 만드는 사람들이 언어 자체를 소유하지 않는 것처럼, 코어 개발자도 비트코인을 소유하지 않습니다. 사람들이 더 이상 그 소프트웨어를 사용하지 않으면 그 영향력도 약해집니다. 다른 출판사의 사전이 존재할 수 있듯이, 같은 규칙을 따르는 다른 노드 소프트웨어도 존재할 수 있습니다.
비트코인 코어가 하는 일
비트코인 코어는 다음과 같은 역할을 합니다.
- 전체 장부를 내려받고 규칙에 맞는지 대조합니다.
- 네트워크에서 전달되는 거래를 받아 대기 상태로 관리합니다.
- 이웃 노드에 거래와 블록을 전달합니다.
- 거래에 서명하는 기능을 제공합니다.
- 채굴과 관련된 기능도 포함하지만, 현재는 채굴에 주로 사용되는 소프트웨어는 아닙니다.
노드는 장부 전체를 확인하면서 다른 참여자가 보낸 거래와 블록이 규칙에 맞는지 검증합니다. 단순히 장부를 보관하는 프로그램이 아니라, 규칙을 적용하고 네트워크에 전달하는 참여자입니다.
한 회사가 만드는 프로그램이 아니다
비트코인 코어는 한 회사가 독점적으로 만드는 제품이 아닙니다. 전 세계 개발자들이 개선안을 제안하고, 여러 사람이 코드를 검토하고 반박합니다. 검토를 통과한 변경만 실제 코드에 들어갑니다.
코드를 합치는 권한을 가진 사람이 몇 명 있기 때문에 겉으로는 이들이 결정권자처럼 보일 수 있습니다. 하지만 그들이 넣은 코드도 아무도 실행하지 않으면 규칙으로 작동하지 않습니다. 개발자는 제안하고 코드를 작성할 수 있지만, 실제로 어떤 소프트웨어를 돌릴지는 노드 운영자가 정합니다.
이 구조는 포크와도 연결됩니다. 소프트웨어가 바뀌어도 참여자들이 어떤 규칙을 선택하는지에 따라 사슬이 하나로 유지되거나 나뉠 수 있습니다.
내려받을 때 확인할 점
비트코인 코어를 내려받을 때는 파일이 진짜인지 확인하는 절차가 중요합니다. 배포된 파일의 서명을 대조하면 파일이 공식적으로 만들어진 것인지 확인하는 데 도움이 됩니다.
공식 배포처가 아닌 낯선 곳에서 파일을 받거나, 확인 없이 곧바로 서명 장치를 연결하는 일은 피해야 합니다. 프로그램을 실행하기 전에 배포처와 파일의 진위를 확인하는 것이 첫 단계입니다.
개발자가 주인이라는 오해
코어 개발자가 비트코인을 좌우한다고 생각하기 쉽습니다. 개발자가 코드를 작성하고 변경 사항을 제안하기 때문입니다. 그러나 이들이 할 수 있는 일은 제안을 만들어 내놓는 것까지입니다.
어떤 노드 소프트웨어를 실행할지는 노드 운영자가 결정합니다. 개발자가 만든 제안이 실제로 받아들여지지 않고 거부된 일도 있었습니다. 코드를 작성하는 권한과 그 코드를 사용하는 선택은 서로 다른 영역입니다.
마찬가지로 비트코인 코어만 반드시 사용해야 하는 것도 아닙니다. 같은 규칙을 따르는 다른 소프트웨어를 사용할 수 있습니다. 다만 구현에 미세한 차이가 있으면 문제가 생길 수 있으므로, 어떤 프로그램을 선택하는지와 그 규칙이 다른 노드와 맞는지를 신중하게 살펴봐야 합니다.
오래된 코드가 주는 무게
비트코인 코어는 십수 년 동안 고침과 검토가 쌓여 온 소프트웨어입니다. 작은 실수 하나가 전 세계의 돈과 네트워크에 닿을 수 있기 때문에 변경을 서두르기 어렵습니다.
소스 코드가 공개되어 있다는 점도 중요한 성질입니다. 누구나 코드를 읽을 수 있고, 직접 읽지 못하는 사람도 다른 개발자와 검토자의 확인을 통해 공개된 과정을 지켜볼 수 있습니다. 감춰진 변경이 오래 남기 어려운 구조는 프로그램을 검토하는 많은 눈과 연결됩니다.
비트코인 코어는 가장 널리 쓰이는 노드 소프트웨어 가운데 하나이며, 공개된 코드로 비트코인의 규칙을 구현합니다. 개발자는 개선안을 제안하지만, 그 코드를 실제로 실행할지는 각자가 선택합니다. 결국 규칙의 영향력은 코드를 작성한 사람만이 아니라, 그것을 검토하고 실행하는 참여자들에게도 달려 있습니다.