비트코인 업그레이드, 제안이 규칙이 되기까지

비트코인 송금의 규칙은 장부를 지켜보는 세계 곳곳의 컴퓨터에 있고, 새 판으로 업그레이드할지는 그 컴퓨터를 돌리는 사람이 고릅니다. 한 곳이 혼자 정해서는 바뀌지 않기에, 규칙 하나가 바뀌는 데 몇 년이 걸리기도 합니다.

비트코인 업그레이드로 규칙 하나가 더해진 날

아침에 휴대전화를 열면 앱 하나가 밤사이 새 판으로 바뀌어 있을 때가 있습니다. 버튼 자리가 조금 달라졌어도 우리는 별생각 없이 그대로 씁니다. 앱을 만든 회사가 새 판을 보내 주었기 때문이지요.

비트코인에도 규칙이 하나 더해진 날이 있습니다. 2021년 11월 14일, 한국 시각으로 일요일 오후였어요. 규칙을 이렇게 더하거나 고치는 일을 보통 업그레이드라고 하지요. 비트코인 송금은 수천 건씩 한 묶음으로 모여, 누구나 열어 볼 수 있는 장부 끝에 차례로 이어 붙습니다.

이 장부를 내려받아 지켜보는 컴퓨터가 세계 곳곳에 있어요. 묶음에는 장부의 처음부터 센 번호가 붙는데, 그날 709,632번째 자리의 묶음부터 새 프로그램을 깔아 둔 컴퓨터들의 검사 항목이 하나 늘었습니다. 비트코인을 보낼 때는 내 것이 맞다는 서명을 함께 붙여요. 늘어난 항목은 새로운 방식으로 만든 서명을 붙인 송금에서, 그 서명이 맞는지 따지는 것이에요. 그날도 송금은 평소처럼 오갔고, 장부는 그 앞뒤로 한 줄로 이어졌습니다.

크림색 종이 바탕의 도표. 가로 한 줄로 묶음 카드 세 장이 화살표로 이어져 있고, 왼쪽 끝과 오른쪽 끝에는 점선이 이어진다. 카드마다 굵은 이름과 글자 없는 기록 줄 두 줄이 있다. 왼쪽 카드 "그 앞 묶음"은 갈색 테두리이고 위에 갈색 꺾쇠와 글자 "이전 규칙으로 검사"가 있다. 가운데 카드 "709,632번째 묶음"과 오른쪽 카드 "그 뒤 묶음"은 청록 테두리이고, 두 카드와 오른쪽 점선 위로 청록 꺾쇠와 청록 글자 "새 규칙까지 더해 검사"가 있다. 가운데 카드 아래로 청록 모니터 세 대(화면 안에 펼친 장부)가 놓여 있고, 세 대 모두 청록 점선으로 가운데 카드를 가리킨다. 모니터 아래 회색 글자 한 줄, 맨 아래 청록 굵은 글자 한 줄. 그림 속 글자: 이전 규칙으로 검사 / 새 규칙까지 더해 검사 / 그 앞 묶음 / 709,632번째 묶음 / 그 뒤 묶음 / 새 프로그램을 깔아 둔 세계 곳곳의 컴퓨터 / 장부는 한 줄로 이어지고, 같은 묶음부터 검사가 하나 더해졌습니다(크게 보기, 새 창)
709,632번째 묶음부터, 새 프로그램을 깔아 둔 컴퓨터들이 규칙 하나를 더해 검사했어요. 장부는 그 앞뒤로 한 줄입니다.

이 장부에도 새 판을 내놓는 쪽은 있지만, 앱처럼 새 판을 보내 주지는 않아요. 깔지는 컴퓨터를 돌리는 사람이 저마다 고릅니다. 내 송금이 장부에 오르려면 이 검사를 거쳐야 하고, 그 검사가 곧 장부의 규칙이에요. 비트코인이 모두 2,100만 개까지만 생긴다는 규칙도 그 가운데 하나입니다. 이런 규칙은 누가, 어떻게 바꿀 수 있을까요.

규칙은 노드마다 돌리는 프로그램에 있습니다

앞에서 본 세계 곳곳의 컴퓨터는 비트코인 장부 전체를 내려받아, 새 묶음이 규칙에 맞는지 하나하나 살핍니다. 이런 장부 사본을 가진 컴퓨터를 노드라고 불러요. 노드는 송금마다 주인의 서명이 맞는지, 같은 비트코인을 두 번 쓰지 않았는지를 봅니다. 새로 생기는 비트코인이 정해진 양을 넘지 않는지도 봐요. 이 검사 항목이 비트코인의 규칙이고, 규칙은 노드가 돌리는 프로그램 안에 코드로 적혀 있습니다.

그래서 규칙이 바뀐다는 것은, 검사 항목이 바뀐 새 판 프로그램을 노드들이 깔아 돌린다는 뜻입니다. 대표적인 노드 프로그램인 비트코인 코어(Bitcoin Core)도 2021년 5월 1일 새 판을 내놓았어요. 그 판에는 조건이 채워지면 709,632번째 묶음부터 새 규칙을 적용한다는 내용이 들어 있었습니다.

여는 이야기의 휴대전화 앱과 다른 점이 여기 있습니다. 앱은 만든 회사가 새 판을 보내면 대개 저절로 바뀌지만, 노드의 프로그램은 돌리는 사람이 직접 고르고 깝니다. 옛 판을 그대로 두는 사람도, 같은 규칙을 따르는 다른 프로그램을 쓰는 사람도 있어요.

그래서 비트코인의 규칙을 바꾸는 일은 새 판을 내는 데서 끝나지 않습니다. 장부는 모두가 같은 묶음을 같이 이어 가야 쓸모가 있으니까요. 같은 규칙을 고르는 쪽이 충분해야 끝납니다.

크림색 종이 바탕의 흐름 도표. 왼쪽에 접힌 모서리가 있는 문서 한 장(글자 없는 줄 다섯)이 있고, 갈색 화살표가 가운데 청록 테두리 상자로 이어진다. 상자 위쪽은 옅은 청록 띠이고 안에 점과 줄이 네 줄 있으며 맨 아래 줄만 청록이다. 상자 오른쪽에서 갈색 점선 화살표 두 개가 오른쪽의 모니터 넷으로 향한다. 모니터 넷은 같은 크기로 두 줄 두 칸에 놓여 있고, 왼쪽 위와 오른쪽 아래는 청록 모니터에 청록 글자 "새 판", 오른쪽 위와 왼쪽 아래는 갈색 모니터에 갈색 글자 "옛 판"이다. 세 덩어리 아래에 굵은 이름과 회색 설명이 있고, 맨 아래 청록 굵은 글자 한 줄. 그림 속 글자: 새 판 / 옛 판 / 옛 판 / 새 판 / 바꾸자는 안을 담은 / 공개 문서 / 누구나 낼 수 있음 / 검사 규칙을 담은 / 새 판 프로그램 / 규칙 하나가 더해짐 / 노드마다 / 깔지 고름 / 규칙을 검사하는 것은 노드마다 저마다 고른 프로그램입니다(크게 보기, 새 창)
바꾸자는 안은 문서로 나오고, 그 안을 담은 새 판 프로그램을 깔지는 노드마다 고릅니다. 같은 크기의 모니터 넷 가운데 둘은 새 판, 둘은 옛 판이에요.

바꾸자는 안은 공개 문서로 나옵니다

새 판에 들어갈 규칙은 먼저 공개 문서로 나옵니다. 비트코인 규칙을 바꾸자는 안을 담은 이 문서를 규칙 변경 제안(BIP)이라고 해요. 정해진 형식과 요건을 갖추면 누구나 낼 수 있고, 누구나 읽고 의견을 달 수 있습니다.

709,632번째 묶음부터 더해진 규칙의 이름은 탭루트(Taproot)입니다. 서명을 만드는 새 방식과, 여러 조건을 걸어 둔 송금에서 실제로 쓴 조건만 장부에 드러나게 하는 방식을 담았어요. 서로 이어진 문서 세 편에 적혀 있고, 가운데인 341번 문서는 2019년 5월 개발자들의 메일 모임에 처음 공개됐습니다. 번호를 받은 것은 2020년 1월이에요.

동네 게시판에 “이렇게 바꾸면 어떨까요” 하는 안내문을 붙이는 것과 닮았습니다. 다른 점도 분명해요. 게시판에 붙었다고 효력이 생기지 않고, 붙은 안을 채택할지 정하는 관리사무소도 따로 없습니다. 안내문을 읽은 사람들이 저마다 자기 자리에서, 그 안을 따를지 직접 고를 뿐이에요. 2026년 1월부터 쓰이는 지금의 절차 문서도 “비트코인 개발을 다스리거나 제안의 채택을 정하는 공식·비공식 기구는 없다”고 적었습니다(“No formal or informal decision body governs Bitcoin development or decides adoption of BIPs”).

맑은 낮, 2~3층 집들 사이 동네 골목 어귀를 눈높이에서 본 장면을 그린 삽화. 왼쪽에 작은 지붕이 달린 게시판이 서 있고, 글자 없는 크림색 종이 한 장이 붙어 있으며 종이 아래쪽에 작은 청록 알약 모양이 있다. 서로 다른 자리의 어른 셋이 등을 보이거나 비스듬히 돌아선 채 고개를 숙이고 있다. 앞에 선 두 사람과 오른쪽 화단 곁에 앉은 사람이 저마다 자기 휴대전화 화면의 같은 청록 알약 모양 칸을 누르고 있다. 그림 속 글자는 없다.(크게 보기, 새 창)
안은 누구나 볼 수 있는 곳에 붙고, 따를지는 저마다 자기 자리에서 고릅니다. 고른 것이 같으면 같은 표시가 켜져요.

문서 머리에는 상태 칸이 있고, 초안·완성·쓰이는 중·닫힘 넷 가운데 하나가 적힙니다. 2026년 10월 17일 확인한 341번 문서에는 “쓰이는 중(Deployed)”이 적혀 있어요. 이 표시는 그 규칙이 실제 장부에서 쓰이기 시작한 뒤에 붙었습니다. 상태 칸은 결과를 적는 자리이지, 문서가 규칙을 정하는 자리가 아니에요.

크림색 종이 바탕의 도표. 맨 위에 굵은 글자 "탭루트를 담은 문서의 머리 칸"이 있고, 그 아래 둥근 카드 안에 네 줄의 칸이 있다. 줄마다 왼쪽에 갈색 굵은 칸 이름, 오른쪽에 값이 있고, 마지막 줄 값만 청록 굵은 글자다. 카드 아래에 둥근 상자 셋이 화살표로 이어진다: "초안", "완성", 그리고 청록으로 채운 "쓰이는 중". 오른쪽에 가는 세로선으로 떨어진 갈색 점선 상자 "닫힘"이 있다. 그 아래 회색 글자, 맨 아래 청록 굵은 글자 한 줄. 문서의 영어 원제는 "Taproot: SegWit version 1 spending rules", 상태 이름은 차례로 Draft·Complete·Deployed·Closed다. 그림 속 글자: 탭루트를 담은 문서의 머리 칸 / 번호 / 341 / 이름 / 탭루트 / 번호를 받은 날 / 2020-01-19 / 상태 / 쓰이는 중 / 초안 / 완성 / 쓰이는 중 / 닫힘 / 문서 상태 넷 가운데 하나 / 형식과 요건을 갖추면 누구나 낼 수 있고, 그 안을 쓸지는 저마다 고릅니다(크게 보기, 새 창)
341번 문서의 머리 칸이에요. “쓰이는 중”은 그 규칙이 장부에서 쓰이기 시작한 뒤에 적힌 상태입니다.

옛 판 노드가 받아 주는지로 변경을 가릅니다

놀이공원의 탑승 기준을 떠올려 볼게요. 키 120cm 이상이던 기준을 130cm 이상으로 올리면, 들여보내는 손님의 범위가 좁아집니다. 옛 안내판을 보는 직원도 130cm가 넘는 손님은 그대로 들여보내요. 반대로 110cm 이상으로 내리면 범위가 넓어지고, 옛 안내판을 보는 직원은 115cm 손님을 돌려보냅니다.

비트코인의 규칙 변경도 이렇게 둘로 가를 수 있습니다. 가르는 물음은 하나예요. 새 규칙으로 만든 묶음을, 옛 판 프로그램을 그대로 돌리는 노드도 받아 주는가.

받아 주는 묶음의 범위를 좁히는 변경이면 옛 판 노드도 새 묶음을 받아 줍니다. 받아 주는 범위를 넓히는 변경이면 옛 판 노드가 새 묶음을 받지 않아요. 좁히고 넓히는 것은 묶음에 담는 송금의 양이 아니라, 받아 주는 묶음의 범위입니다. 영어로는 둘 다 ‘포크’라는 말을 붙여 부릅니다.

탭루트는 좁히는 변경이었습니다. 341번 문서는 “옛 프로그램은 고치지 않아도 계속 돌아간다”고 적었어요(“older software will continue to operate without modification”). 새 판을 깔지 않은 노드도 709,632번째 묶음 뒤의 묶음들을 받아, 같은 장부를 따를 수 있다는 뜻입니다.

다만 옛 안내판 직원은 125cm 손님도 들여보내지요. 옛 판 노드는 새 규칙을 어긴 묶음도 받아 줍니다. 그래서 조건이 붙어요. 묶음은 정해진 계산을 먼저 끝낸 쪽이 만들어 붙이는데, 이 일을 채굴이라고 합니다. 노드들은 규칙에 맞는 묶음들 가운데 들인 계산이 가장 많이 쌓인 쪽을 장부로 고르고요. 새 규칙을 지키는 채굴 계산이 다수여야 그쪽 줄이 가장 빨리 자라고, 새 판 노드와 옛 판 노드가 같은 줄을 고릅니다.

이것은 장부가 하나로 이어지는 조건입니다. 묶음이 규칙에 맞는지 검사하는 일은 그때도 노드마다 따로 해요.

크림색 종이 바탕의 표 도표. 맨 위에 굵은 글자 "받아 주는 범위를 좁히는 변경"이 있다. 표 머리 줄 왼쪽에 회색 굵은 글자 "이런 묶음을", 오른쪽 두 열 머리에 작은 갈색 모니터와 갈색 글자 "옛 판 노드는", 작은 청록 모니터와 청록 글자 "새 판 노드는"이 있다. 아래에 둥근 가로 칸 셋이 있고, 칸마다 왼쪽에 작은 묶음 카드 모양과 굵은 글자가 있으며 오른쪽 두 열에 알약 모양 칸이 있다. 청록으로 채운 알약은 크림 글자 "받아 줌", 갈색 점선 알약은 갈색 글자 "안 받음"이다. 첫 칸 "두 규칙 모두에 맞는 묶음"은 받아 줌·받아 줌, 둘째 칸 "옛 규칙에만 맞는 묶음"은 옛 판 받아 줌·새 판 안 받음, 셋째 칸 "어느 규칙에도 안 맞는 묶음"은 안 받음·안 받음이다. 맨 아래 청록 굵은 글자 한 줄. 그림 속 글자: 받아 주는 범위를 좁히는 변경 / 이런 묶음을 / 옛 판 노드는 / 새 판 노드는 / 두 규칙 모두에 맞는 묶음 / 받아 줌 / 받아 줌 / 옛 규칙에만 맞는 묶음 / 받아 줌 / 안 받음 / 어느 규칙에도 안 맞는 묶음 / 안 받음 / 안 받음 / 새 규칙을 지키는 채굴 계산이 다수이면 장부는 한 줄로 이어집니다(크게 보기, 새 창)
좁히는 변경에서는 새 규칙에 맞는 묶음을 옛 판 노드도 받아 줘요. 둘째 줄처럼 옛 판 노드만 받아 주는 묶음이 있어서, 새 규칙을 지키는 계산이 다수여야 합니다.

넓히는 변경은 사정이 다릅니다. 옛 판 노드는 새 규칙으로만 맞는 묶음을 받지 않아요. 그래서 모든 노드가 함께 바꿔야 하나의 장부로 갑니다. 옛 규칙을 지키는 노드와, 그 줄에 묶음을 이어 붙이는 채굴이 남아 있으면 장부는 두 줄이 돼요. 그래도 갈라지기 전까지의 기록은 두 줄이 함께 가집니다.

크림색 종이 바탕의 표 도표. 위 절반은 좁히는 변경 도표와 같은 틀이고, 맨 위 굵은 글자는 "받아 주는 범위를 넓히는 변경"이다. 머리 줄은 "이런 묶음을 / 옛 판 노드는 / 새 판 노드는"이다. 첫 칸 "두 규칙 모두에 맞는 묶음"은 받아 줌·받아 줌, 둘째 칸 "새 규칙에만 맞는 묶음"은 옛 판 안 받음·새 판 받아 줌, 셋째 칸 "어느 규칙에도 안 맞는 묶음"은 안 받음·안 받음이다. 아래에 같은 크기의 둥근 칸 둘이 나란히 있다. 왼쪽 칸 "모두가 바꾸면 한 줄"에는 청록 묶음 카드 다섯이 한 줄로 이어져 있다. 오른쪽 칸 "옛 규칙 쪽을 잇는 채굴이 남으면 두 줄"에는 갈색 묶음 카드 둘 뒤에서 줄이 위아래로 갈라져, 위로는 청록 카드 셋, 아래로는 갈색 카드 셋이 이어진다. 맨 아래 청록 굵은 글자 한 줄. 위 갈래 끝에는 "새 규칙", 아래 갈래 끝에는 "옛 규칙" 이름표가 있다. 그림 속 글자: 받아 주는 범위를 넓히는 변경 / 이런 묶음을 / 옛 판 노드는 / 새 판 노드는 / 두 규칙 모두에 맞는 묶음 / 받아 줌 / 받아 줌 / 새 규칙에만 맞는 묶음 / 안 받음 / 받아 줌 / 어느 규칙에도 안 맞는 묶음 / 안 받음 / 안 받음 / 모두가 바꾸면 한 줄 / 옛 규칙 쪽을 잇는 채굴이 남으면 두 줄 / 넓히는 변경은 모두가 함께 바꿔야 한 줄로 갑니다 / 새 규칙 / 옛 규칙(크게 보기, 새 창)
넓히는 변경에서는 새 규칙에만 맞는 묶음을 옛 판 노드가 받지 않아요. 모두가 함께 바꾸면 한 줄로 가고, 옛 규칙 쪽을 잇는 채굴이 남으면 두 줄이 됩니다.

좁히는 변경에도 대가는 있습니다. 옛 판을 그대로 둔 노드는 같은 장부를 따르지만, 더해진 새 규칙까지는 스스로 검사하지 못해요. 341번 문서도 그런 노드에게 새 판으로 바꾸기를 강하게 권했습니다(“strongly encouraged”).

바꾸는 날은 준비 표시를 세어 맞춥니다

좁히는 변경이라면, 새 규칙을 적용하는 날에 채굴 계산의 다수가 이미 준비돼 있어야 합니다. 그래서 규칙을 일부러 바꿀 때는 모두가 같은 묶음부터 바꾸도록 날을 맞춰요.

탭루트는 이렇게 날을 맞췄습니다. 채굴하는 쪽은 새 묶음을 만들 때, 새 규칙을 지킬 준비가 됐다는 표시를 묶음에 적을 수 있어요. 그 표시를 묶음 2,016개마다 세는 것은 노드들입니다. 2,016개는 약 2주로, 장부가 계산의 어려움을 고치는 주기와 같은 단위예요. 탭루트는 2,016개 가운데 1,815개, 곧 열에 아홉이 표시를 적으면 적용하기로 했습니다. 이 수가 넘어야 하는 수(문턱)입니다.

2021년 5월 1일 새 판이 나온 뒤, 첫 주기에 표시를 적은 묶음은 2,016개 가운데 823개였어요. 둘째 주기에는 1,690개였습니다. 셋째 주기에는 1,983개로 백에 아흔여덟꼴이었고, 넘어야 하는 수는 6월 12일에 채워졌어요.

크림색 종이 바탕의 막대 도표. 맨 위에 굵은 글자 "준비됐다는 표시를 적은 묶음 (2021년, 2,016개 가운데)"이 있다. 그 아래 가로 막대 셋이 있고, 왼쪽에 굵은 주기 이름과 회색 시기가 있다. 막대는 모두 황토색이고, 옅은 바탕 칸이 2,016개까지의 길이를 보여 준다. 첫째 막대가 가장 짧고 셋째 막대는 거의 끝까지 차 있으며 청록 테두리가 있다. 막대 안 왼쪽에 굵은 숫자가 있고, 셋째 막대 숫자만 청록이다. 오른쪽 가까이에 청록 세로 점선이 세 막대를 가로지르고, 그 위에 청록 굵은 글자 "넘어야 하는 수 1,815개"가 있다. 셋째 막대만 이 점선을 넘는다. 오른쪽 아래 회색 글자 "2,016개", 맨 아래 청록 굵은 글자 한 줄. 그림 속 글자: 준비됐다는 표시를 적은 묶음 (2021년, 2,016개 가운데) / 넘어야 하는 수 1,815개 / 첫 주기 / 5월 초 / 823개 / 둘째 주기 / 5월 중순 / 1,690개 / 셋째 주기 / 5월 말~6월 / 1,983개 / 2,016개 / 표시가 열에 아홉을 넘자, 정해 둔 묶음부터 적용하기로 확정됐습니다(크게 보기, 새 창)
2주쯤 되는 주기마다 묶음 2,016개 가운데 준비 표시를 적은 묶음을 셌어요. 셋째 주기에 넘어야 하는 수 1,815개를 넘었습니다.

그 뒤로는 기다림이었습니다. 적용할 묶음의 번호는 5월의 새 판에 이미 709,632번째로 적혀 있었어요. 문턱을 넘은 뒤로 다섯 달 남짓, 묶음 2만 2천여 개가 더 쌓이고서야 그 번호에 닿았습니다.

크림색 종이 바탕의 시간 도표. 가로 시간 축 위에 점 다섯이 있고, 점마다 위에 굵은 날짜, 아래에 회색 설명 두 줄이 있다. 앞의 점 넷은 갈색 테두리의 빈 동그라미이고, 마지막 점은 청록으로 채워져 있으며 그 날짜와 설명은 청록이다. 넷째 점에서 다섯째 점까지 아래에 청록 꺾쇠와 청록 굵은 글자 "다섯 달 남짓 기다림"이 있다. 맨 아래 청록 굵은 글자 한 줄. 그림 속 글자: 2019년 5월 / 메일 모임에 / 처음 공개 / 2020년 1월 / 문서 번호 / 341을 받음 / 2021년 5월 1일 / 새 판 프로그램 / (적용할 번호 적힘) / 2021년 6월 12일 / 넘어야 하는 / 수를 채움 / 2021년 11월 14일 / 709,632번째 / 묶음부터 적용 / 다섯 달 남짓 기다림 / 적용할 묶음의 번호는 반년 남짓 앞서 새 판에 적혀 있었습니다(크게 보기, 새 창)
341번 문서가 처음 공개된 때부터 적용까지 2년 반이 걸렸어요. 적용할 묶음 번호는 5월 새 판에 적혀 있었고, 문턱을 넘은 뒤로 다섯 달 남짓 기다렸습니다.

왜 이렇게 할까요. 표시를 세는 것은 채굴 계산의 다수가 준비됐는지 확인하려는 것입니다. 새 규칙을 지키지 않는 계산이 다수인 채로 적용하면, 그 계산이 잇는 줄을 새 판 노드가 받지 않아요. 그러면 장부가 둘이 될 수 있습니다. 적용할 번호를 미리 정해 두는 것은, 노드를 돌리는 사람들에게 새 판을 깔 시간을 주고 모두가 같은 묶음부터 바꾸게 하려는 것이에요. 노드를 돌리는 쪽에는 개인도 회사도 있어서, 5월 새 판의 안내문은 사용자와 회사, 채굴하는 쪽 모두에게, 탭루트 적용에 반대하지 않는다면 새 판으로 바꾸기를 권했습니다(“All users, businesses, and miners are encouraged to upgrade … unless they object to activation of taproot”).

여러 집이 함께 이사하는 날을 잡는 것과 닮았어요. 이사 날은 미리 정해 두고, 2주마다 짐을 다 싼 집을 세어 열에 아홉이 넘으면 그날 이사하기로 확정하는 식입니다. 다른 점은 둘이에요. 표시를 적는 것은 채굴하는 쪽이지만, 새 규칙으로 검사하는 것은 노드입니다. 그리고 이 표시를 어떻게 볼지는 하나로 정해져 있지 않아요. 대표적인 노드 프로그램 쪽의 채굴자 안내는 이 표시를 채굴하는 쪽이 새 규칙에 대한 준비를 알리는 방법이라고 설명했고, 이 표시에 얼마나 무게를 둘지를 두고는 의견이 갈려 왔습니다.

옛 판과 새 판이 한 묶음을 달리 본 2013년

규칙이 각자의 프로그램 안에 있다는 것을 가장 또렷하게 보여 준 일은, 아무도 규칙을 바꾸려 하지 않았던 때에 있었습니다. 2013년 3월 11일(세계 표준시), 새로 나온 0.8 판 프로그램으로 채굴하던 쪽이 큰 묶음 하나를 만들었어요. 그때까지 본 적 없을 만큼 많은 기록을 한꺼번에 처리해야 하는 묶음이었습니다. 0.8 판 노드들은 문제없이 받았지만, 그 전 판 노드 가운데 일부는 이 묶음을 받지 않았어요.

까닭은 옛 판이 쓰던 데이터베이스 설정이었습니다. 큰 묶음을 처리하기에는 설정된 한도가 모자랐는데, 아무도 그것을 규칙으로 정한 적은 없었어요. 사건 뒤에 나온 보고 문서(50번)는 이 설정이 “사실상 네트워크의 합의 규칙이 되어 있었다”고 적었습니다(“it implicitly had become a network consensus rule”).

장부는 몇 시간 동안 두 줄로 이어졌고, 당시 채굴 계산의 약 60%가 0.8 판 쪽 줄에 있었어요. 다시 한 줄로 모은 것은 큰 채굴 모임 두 곳의 운영자였습니다. 이들은 자기 노드를 옛 판으로 되돌려, 큰 묶음을 받지 않는 쪽으로 계산을 옮겼어요. 옛 판의 규칙이 더 좁았기에 이 방법이 통했습니다. 계산의 다수가 옛 판 쪽 줄로 오자 그쪽이 더 빨리 자랐고, 0.8 판 노드에게도 그 줄은 규칙에 맞는 줄이었어요. 그래서 0.8 판 노드들도 계산이 더 쌓인 그 줄로 옮겨 가, 장부는 다시 한 줄이 됐습니다.

그 사이에 생긴 일도 있습니다. 옮긴 운영자들은 0.8 판 쪽 줄에서 이미 캔 몫을 잃었고, 보고 문서는 그들이 “상당한 돈을 희생했다”고 적었어요. 같은 돈을 두 번 쓴 큰 송금도 한 건 있었는데, 보고 문서는 그것이 되는지 시험해 본 사람의 일이었고 악의는 없었다고 적었습니다.

이 일은 두 가지를 보여 줍니다. 규칙은 문서가 아니라 각자의 프로그램 안에 있다는 것, 그리고 양쪽 규칙 모두에 맞는 줄로 계산의 다수가 모이면 장부가 다시 한 줄로 이어진다는 것이에요. 탭루트가 준비 표시를 세고 적용할 번호를 미리 정해 둔 것도 이 때문입니다. 새 규칙을 지키지 않는 채굴 계산이 다수인 채로 적용되면 장부가 둘로 갈릴 수 있으니까요.

2017년, 서명 자리를 옮긴 변경

탭루트보다 네 해 앞서 적용된 좁히는 변경도 있습니다. 2017년 8월 24일, 481,824번째 묶음부터 적용된 세그윗(SegWit)이에요. 세그윗은 송금 기록에서 서명 부분을 따로 떼어, 옛 판 노드에게는 건네지지 않는 자리로 옮겼습니다.

옛 판 노드가 받는 묶음에는 그 서명 부분이 빠져 있어서, 예전 한도 안의 묶음으로 보여요. 그래서 옛 판 노드도 받아 주고, 이 변경은 좁히는 변경이 됩니다. 새 판 노드는 따로 둔 서명 부분까지 받아 검사하고요. 받아 주는 범위는 좁아졌는데, 한 묶음에 담을 수 있는 송금은 오히려 늘었습니다. 당시 대표적인 노드 프로그램의 안내는, 모든 지갑이 이 방식을 쓰면 송금을 70%쯤 더 담을 수 있다고 내다봤어요.

세그윗이 적용되기까지는 오래 걸렸습니다. 준비 표시는 2016년 11월부터 셌고, 넘어야 하는 수는 2,016개 가운데 1,916개, 스물에 열아홉이었어요. 2017년 5월의 한 주기에는 표시가 663개로, 셋에 하나꼴이었습니다.

한 묶음에 더 많이 담는 방식을 두고 생각이 갈렸어요. 노드를 돌리는 쪽 일부는 8월 1일부터 세그윗 준비 표시가 없는 묶음을 받지 않겠다는 날짜를 정했습니다. 5월 23일에는 여러 채굴·기업 쪽이 합의를 냈어요. 세그윗을 더 낮은 문턱으로 적용하고, 여섯 달 안에 묶음 크기 한도를 2MB로 키우자는 내용이었습니다. 7월 23일부터는 준비 표시가 없는 묶음을 받지 않는 규칙(91번 제안)이 장부에서 작동했고, 표시는 곧 2,016개 모두로 찼어요.

이 91번 규칙은 대표적인 노드 프로그램의 정식판에 들어 있지 않았습니다. 그런데도 그 규칙을 돌린 쪽이 채굴 계산의 다수였기에 장부에서 작동했어요. 세그윗은 8월 9일 적용이 확정됐고, 8월 24일부터 적용됐습니다. 무엇이 이를 이끌었는지는 보는 쪽마다 다릅니다. 5월 합의에서는 세그윗2x라는 움직임이 나왔어요. 그 움직임을 이끈 여섯 사람은 그해 11월 메일에서, 세그윗2x가 “교착을 깼다”고 썼어요. 날짜 지정 방식을 지지하는 쪽은 2021년의 한 제안 문서에서, 서로 다른 방식들이 함께 움직여 같은 때 적용되게 했다고 봤습니다.

규칙을 바꾸는 데 드는 시간, 2017년에 나뉜 길

이 방식은 느립니다. 세그윗은 제안 문서가 번호를 받은 2015년 12월부터 적용된 2017년 8월까지 1년 8개월이 걸렸어요. 탭루트는 341번 문서가 처음 공개된 2019년 5월부터 2년 반 뒤에 적용됐습니다.

2017년 8월 1일에는 정반대 길로 간 변경도 있었습니다. 묶음 크기 한도를 1MB에서 8MB로 키운 넓히는 변경이에요. 그 변경을 고른 노드와 채굴 쪽이 478,558번째 묶음 다음부터 따로 장부를 이었습니다. 그 묶음까지의 기록은 두 장부가 함께 가지기에, 그때 비트코인을 가졌던 주소에는 두 장부 모두에 같은 잔액이 남았어요.

그쪽 첫 묶음은 약 1.9MB로 옛 한도를 넘었고, 옛 규칙의 노드들은 이 묶음을 받지 않았습니다. 이 장부가 비트코인 캐시(Bitcoin Cash)예요. 그쪽 공식 사이트는 이 장부가 “누구나 싸게 쓰는 개인 간 전자 현금”이라는 생각을 이어 간다고 적고 있습니다. 담는 양을 늘린 두 변경이 하나는 좁히는 쪽, 하나는 넓히는 쪽이었던 셈이에요.

합의의 나머지 절반이던 2MB 변경은 그해 11월 8일 거둬들여졌습니다. 거둬들이는 메일은 깔끔하게 한도를 키울 만큼 “충분한 합의를 이루지 못했다”고 적었어요. 같은 규칙을 고를지는 저마다 정하기에, 의견이 갈리면 장부는 둘로 나뉠 수 있습니다. 그래도 나뉘는 묶음까지 가진 비트코인은 두 장부에 모두 남아요. 규칙을 바꿀 때 좁히는 변경으로 짜고 적용할 묶음을 미리 정해 두는 것도, 장부를 한 줄로 이어 가려는 방법입니다.

규칙은 저마다 고르고, 장부는 함께 잇습니다

2021년 11월 14일로 돌아가 볼게요. 그날 709,632번째 묶음부터 더해진 규칙은, 2년 반 전 공개된 문서에서 시작됐습니다. 바꾸자는 안은 정해진 형식을 갖춘 공개 문서로 나오지만, 문서가 규칙을 바꾸지는 않아요. 규칙은 세계의 노드, 곧 장부 사본을 가진 컴퓨터가 저마다 돌리는 프로그램 안에 있습니다. 새 판은 대표적인 노드 프로그램을 만드는 쪽이 내놓고 권하지만, 깔지는 그 컴퓨터를 돌리는 사람이 고릅니다.

그날 장부가 한 줄로 이어진 것은 같은 규칙을 고른 쪽이 충분했기 때문이에요. 탭루트는 받아 주는 범위를 좁히는 변경이었어요. 계산을 겨뤄 묶음을 만드는 채굴 쪽에서 절반 넘는 계산이 새 규칙을 지키면, 옛 판 노드도 같은 장부를 따릅니다. 그래서 묶음을 만든 쪽이 적는 “준비됐다”는 표시를 세어, 2,016개 가운데 열에 아홉이 적은 뒤 미리 정해 둔 번호의 묶음부터 적용했어요. 받아 주는 범위를 넓히는 변경이라면 모두가 함께 바꿔야 하나로 갑니다. 생각이 갈린 2017년에는 한도를 키운 쪽이 따로 장부를 이었지만, 그때까지 가진 비트코인은 두 장부에 모두 남았어요.

그래서 규칙 하나를 바꾸는 데 몇 년이 걸립니다. 한 곳이 정해 내려보낼 수 없기 때문이에요. 같은 까닭으로, 비트코인이 모두 2,100만 개까지만 생긴다는 규칙도 한 회사나 한 나라가 정한다고 바뀌지 않습니다. 바꾸려면 노드를 돌리는 사람들이 새 규칙을 골라야 하고, 그 규칙을 지금까지 지켜 온 것도 같은 규칙을 계속 골라 온 세계의 노드들이에요.

709,632번째 묶음은 지금도 장부의 같은 자리에 있고, 장부를 보여 주는 사이트에서 누구나 열어 볼 수 있습니다. 송금 기록 2,043건이 실린 묶음 하나예요. 거기 적힌 시각은 한국 시각으로 그날 오후 2시 15분쯤입니다. 이 시각은 묶음을 만든 쪽이 적어 넣는 값이에요. 겉으로는 앞뒤 묶음과 다를 것이 없습니다. 그 평범한 묶음이, 저마다 고른 프로그램들이 같은 자리에서 새 규칙을 함께 쓰기 시작한 기록이에요.

띠 그림 하나. 크림색 종이 바탕에 둥근 칸 여섯 개가 세 칸씩 두 줄로 놓여 있다. 윗줄 세 칸은 왼쪽에서 오른쪽으로 작은 화살표로 이어지고, 셋째 칸 아래에서 나온 꺾인 화살표가 왼쪽으로 돌아 아랫줄 첫 칸인 넷째 칸으로 내려간다. 아랫줄 세 칸도 왼쪽에서 오른쪽으로 작은 화살표로 이어진다. 다섯째 칸만 청록으로 채워져 있고 나머지 다섯 칸은 갈색 선만 있다. 그림 속 글자: 보내기 / 기다리기 / 장부에 붙이기 / 굳어지기 / 규칙 정하기 / 작은 돈 보내기(크게 보기, 새 창)
이 시리즈가 따라갈 여섯 편의 차례입니다. 이번 편은 다섯째, 규칙 정하기였어요. 남은 칸 하나는 다음 편이 따라갑니다.

다음 편은 계산대에 놓인 QR 청구서를 휴대전화로 찍자, 곧바로 “보냄”이 뜨는 장면에서 시작합니다. 장부의 다음 묶음을 기다리지 않은 이 송금이 지금의 규칙 위에서 어떻게 오가는지 따라가 봅니다.

먼저 나온 시리즈 「돈을 믿게 하는 것」에는 돈의 양을 정하는 규칙도 결국 사람들이 고른 것이라는 이야기를, 비트코인과 금·달러를 나란히 놓고 본 글이 있습니다. 「돈의 양은 누가 정할까」


용어 풀이

  • 노드(장부 사본을 가진 컴퓨터): 장부 전체 사본을 내려받아 새 기록과 새 묶음이 규칙에 맞는지 직접 검사하는 컴퓨터. 무료 프로그램으로 누구나 돌릴 수 있습니다.
  • 묶음(블록): 기다리던 송금 기록을 평균 약 10분마다 한 묶음으로 모아 앞 묶음에 이어 붙인 것. 처음부터 센 차례 번호(높이)가 붙습니다.
  • 채굴: 차례를 기다리던 기록을 골라 새 묶음을 꾸리고, 정해진 조건에 맞는 값이 나올 때까지 계산을 되풀이해 장부에 붙이는 일. 여러 채굴자가 계산을 합친 곳을 채굴 모임(풀)이라고 합니다.
  • 규칙 변경 제안(BIP, Bitcoin Improvement Proposal): 비트코인을 바꾸자는 안을 정해진 형식으로 적은 공개 문서. 형식과 요건을 갖추면 누구나 낼 수 있고, 번호는 문서 편집자가 붙입니다. 문서의 상태는 초안(Draft)·완성(Complete)·쓰이는 중(Deployed)·닫힘(Closed) 가운데 하나입니다. 2026년 1월 14일부터 3번 문서(BIP3)의 절차를 따릅니다.
  • 좁히는 변경(소프트 포크): 받아 주는 묶음의 범위를 좁히는 규칙 변경. 옛 판 노드도 새 규칙을 지킨 묶음을 받아 주므로, 새 규칙을 지키는 채굴 계산이 다수이면 장부가 하나로 이어집니다.
  • 넓히는 변경(하드 포크): 받아 주는 묶음의 범위를 넓히는 규칙 변경. 옛 판 노드가 새 규칙으로만 맞는 묶음을 받지 않으므로, 모두가 함께 바꿔야 장부가 하나로 이어집니다.
  • 준비됐다는 표시(신호 비트): 채굴하는 쪽이 새 묶음의 머리에 적는 표시 하나. 새 규칙을 지킬 준비가 됐다는 뜻으로 쓰이고, 세는 것은 각 노드입니다.
  • 넘어야 하는 수(문턱): 묶음 2,016개 가운데 준비 표시를 적은 묶음이 이 수를 넘어야 적용이 확정됩니다. 탭루트는 1,815개(약 90%), 세그윗은 1,916개(약 95%)였습니다. 표시를 세는 방식에는 BIP9와 그 변형(탭루트의 Speedy Trial) 등이 있습니다.
  • 새 규칙을 적용하기 시작한 묶음(활성화): 노드들이 새 규칙으로도 검사하기 시작한 첫 묶음. 탭루트는 709,632번째, 세그윗은 481,824번째 묶음입니다.
  • 대표적인 노드 프로그램(비트코인 코어, Bitcoin Core): 노드를 돌리는 데 쓰는 무료 프로그램 가운데 하나. 같은 규칙을 따르는 다른 프로그램도 있습니다.
  • 탭루트(Taproot): 2021년 11월 14일 709,632번째 묶음부터 적용된 좁히는 변경. 서명을 만드는 새 방식(슈노어 서명)과, 여러 조건을 걸어 둔 송금에서 실제로 쓴 조건만 장부에 드러나게 하는 방식을 담았습니다(BIP340·341·342). 발상은 2018년 1월 개발자 메일 모임의 글에서 먼저 나왔고, 341번 문서는 2019년 5월에 처음 공개됐습니다.
  • 세그윗(SegWit): 2017년 8월 24일 481,824번째 묶음부터 적용된 좁히는 변경. 서명 부분을 따로 떼어, 옛 판 노드에게는 건네지지 않는 자리로 옮겼습니다(BIP141 등).
  • 옮겨 가기(재조직, reorg): 노드가 계산이 더 쌓인 쪽 줄을 찾아, 갈린 자리까지 되돌린 뒤 그쪽 묶음으로 다시 잇는 일.
  • 장부를 보여 주는 사이트(블록 탐색기): 비트코인 장부의 기록을 누구나 볼 수 있게 보여 주는 웹사이트. mempool.space, blockstream.info 등이 있습니다.
출처 16건

날짜·시각은 세계 표준시(UTC) 기준입니다(한국 시각은 9시간 더함). 문서 상태와 절차는 바뀔 수 있으며, 아래 확인 날짜(2026년 10월) 기준입니다.