오픈소스
오픈소스는 소스 코드를 공개하고, 라이선스 조건에 따라 누구나 사용·수정·재배포할 수 있도록 허용하는 방식입니다. 따라서 코드를 볼 수 있다는 사실만으로는 충분하지 않습니다. 소스 공개와 이용·수정·재배포 권리를 함께 규정하는 라이선스가 중요합니다. 자세한 정의는 오픈소스 이니셔티브의 오픈소스 정의에서 확인할 수 있습니다.
비트코인 소프트웨어는 오픈소스 라이선스 아래 공개되어 있습니다. 발행 규칙과 총량의 상한 같은 핵심 규칙이 코드에 공개되어 있고, 어떤 수정이 언제 들어갔으며 무엇이 달라졌는지도 공개된 이력으로 확인할 수 있습니다.
확인할 수 없는 약속과 공개된 규칙
은행 전산 안쪽의 소스 코드와 처리 절차를 외부 사람이 직접 들여다보며 검토하기는 어렵습니다. 이것은 공개된 비트코인 검증 코드와 대비되는 차이입니다. 다만 은행의 통화·금융 관련 통계나 정책이 모두 확인 불가능하다는 뜻은 아닙니다. 공개 통계와 정책 자료를 통해 확인할 수 있는 영역과, 내부 소프트웨어를 독립적으로 검토하기 어려운 영역은 구분해야 합니다.
은행 내부 코드의 세부 동작을 이용자가 직접 검사하기 어려운 경우에는 해당 기관의 설명과 제도적 절차에 의존하게 됩니다. 반면 공개된 비트코인 코드는 코드를 읽고 실행할 수 있는 사람이 규칙의 구현을 직접 살펴볼 수 있습니다.
이를 비밀 레시피로 만든 음료에 비유할 수 있습니다. 맛은 볼 수 있지만 안에 무엇이 들었는지는 회사만 알고, 재료를 슬쩍 바꾸어도 마시는 사람은 알기 어렵습니다. 음식이라면 비밀 레시피에도 매력이 있을 수 있지만, 소프트웨어의 규칙은 공개되어야 독립적인 검토가 가능하다는 점에서 사정이 다릅니다.
반대로 공개 레시피에는 재료와 분량, 조리 순서가 적혀 있습니다. 누구든 읽어 보고 똑같이 만들어 볼 수 있으며, 이상한 재료가 섞이면 지적할 수 있습니다. 비트코인은 어떤 재료와 순서로 움직이는지 누구나 살펴볼 수 있는 공개 레시피에 가까운 돈입니다.
공개된 코드와 검증
비트코인 프로그램의 소스 코드는 공개되어 있습니다. 코드를 읽을 줄 아는 사람은 내려받아 한 줄씩 살펴볼 수 있고, 그 안에서 새 비트코인이 언제 얼마나 만들어지는지와 총량이 2,100만 개에서 멈추도록 설계된 규칙을 확인할 수도 있습니다.
이 확인에는 신청서나 자격 증명이 필요하지 않습니다. 코드를 읽는 데서 끝나지 않고, 각자 컴퓨터에서 프로그램을 실행해 규칙이 실제로 그대로 작동하는지 검사할 수도 있습니다. 여러 참여자가 각자의 컴퓨터에서 실행하며 서로 확인할 수 있는 구조입니다.
그래서 비트코인의 믿음은 믿어 달라는 부탁보다 직접 확인해 보라는 초대에 가깝습니다. 모든 사용자가 코드를 읽을 수 있어야 한다는 뜻은 아닙니다. 읽을 줄 아는 사람이 언제든 규칙을 확인할 수 있다는 사실 자체가 규칙을 붙잡는 역할을 합니다.
공개된 것은 설계도만이 아닙니다. 설계도를 고쳐 온 역사도 공개되어 있습니다. 어떤 수정이 언제 들어갔고 무엇이 달라졌는지 기록으로 남아 있으므로, 규칙을 고치는 과정도 지켜보는 자리에서 이루어집니다. 이것이 규칙이 슬그머니 바뀌기 어렵게 만드는 한 요소입니다.
공개와 보안
코드를 모두 공개하면 해커에게 유리하지 않느냐는 걱정이 있을 수 있습니다. 그러나 보안 분야에서는 설계를 숨기는 것보다 공개된 설계가 검토를 견디는지가 중요하다는 관점이 있습니다.
설계를 숨겨서 지키는 시스템은 설계가 알려지는 순간 약해질 수 있습니다. 반면 설계가 공개된 채로도 버티는 시스템은 많은 사람이 코드를 살펴보고 약점을 지적할 수 있습니다. 숨겨 둔 금고보다 모두가 지켜보는 유리 금고가 오히려 지키기 쉬울 수 있다는 비유입니다.
비트코인에서는 2010년에 값 오버플로 버그로 불린 결함이 발견되어 비정상적으로 많은 비트코인이 만들어진 사건이 있었습니다. 코드와 장부가 공개되어 있었기 때문에 이상한 거래가 눈에 띄었고, 문제가 수정되었습니다.
다만 공개가 모든 문제를 없애 주는 것은 아닙니다. 코드를 읽을 수 있는 사람은 여전히 소수이고, 코드가 열려 있다고 해서 반드시 충분히 많은 사람이 살펴본다는 보장도 없습니다. 새로운 결함이 드러난 순간에는 고칠 사람과 공격하려는 사람이 같은 정보를 동시에 얻게 될 수도 있습니다. 따라서 공개 자체뿐 아니라 실제로 코드를 검토하는 사람이 있는지도 중요합니다.
오픈소스는 소스 코드를 공개하는 데 그치지 않고, 라이선스 조건에 따라 사용·수정·재배포할 수 있도록 하는 방식입니다. 비트코인 소프트웨어는 발행 규칙과 총량의 상한, 그리고 규칙을 고쳐 온 역사까지 공개해 왔습니다. 이 구조는 막연한 믿음 대신 확인을 가능하게 하지만, 공개되어 있다는 사실만으로 안전이 자동으로 보장되는 것은 아닙니다.