오늘은 비트코인 코어 0.14.0의 공식 출시일로, 이는 사토시 나카모토가 8년 전 출시한 비트코인의 원래 소프트웨어 클라이언트의 14번째 버전입니다. 비트코인 코어의 주요 유지보수자인 블라디미르 반 데르 라안이 감독한 이번 주요 릴리스는 6개월 동안 거의 100명의 기여자에 의해 개발되었습니다.
비트코인 코어 0.14.0은 상당한 개선 사항 목록을 특징으로 합니다. 그러나 이전 릴리스와 비교했을 때, 대부분은 소프트웨어의 “내부”와 관련된 사항입니다: 성능 개선이 이루어지지만 일상적인 사용자에게는 그다지 눈에 띄지 않을 수 있습니다.
그렇긴 하지만, 다음은 더 주목할 만한 변경 사항입니다.
“Assumevalid” 블록
새로운 노드가 네트워크에 부팅될 때마다 전체 블록체인을 동기화합니다. 이는 지금까지 채굴된 모든 블록을 다운로드하고 검증하며, 이러한 블록의 모든 거래를 검증합니다. 불행히도, 이 과정은 상당한 시간이 걸릴 수 있습니다. 최신 고급 노트북조차도 따라잡는 데 하루 이상이 걸리는 경우가 많습니다. 오래되거나 저급 기계의 경우에는 더 오랜 시간이 걸립니다.
“Assumevalid”는 이 과정을 상당히 가속화합니다. 본질적으로 비트코인 코어 0.14.0 노드는 특정 블록까지의 모든 거래가 유효하다고 가정합니다. 동기화 중인 노드는 여전히 모든 블록의 작업 증명을 검증하고 전체 거래 기록을 기록하지만, 더 이상 각 개별 거래에 대한 서명 및 유사한 데이터를 확인하지 않습니다.
어떤 블록이 유효한지에 대한 가정은 구성 가능합니다. 기본적으로 비트코인 코어 0.14.0의 경우 블록 453354입니다. 그러나 모든 거래를 완전히 검증하고자 하는 사용자는 여전히 가능합니다.
또한, 특정 블록이 블록체인의 일부여야 한다고 설정하는 체크포인트 시스템과는 달리, 가정된 유효 블록은 반드시 구속력이 있는 것은 아닙니다. 비트코인 코어 0.14.0 노드는 가정된 유효 블록이 없는 대체 블록체인으로 쉽게 전환할 수 있습니다. 만약 그 대체 블록체인이 더 길다면 말이죠.
개선된 수수료 추정
비트코인 블록이 특히 지난 1년 동안 가득 차면서, 네트워크를 통해 전송된 모든 거래가 다음 블록에 들어갈 수 있는 것은 아닙니다. 결과적으로, 채굴자들은 일반적으로 가장 많은 수수료를 포함한 거래를 우선시합니다. 더 많은 수수료를 포함한 거래는 다음 블록이나 그 직후에 포함될 가능성이 더 높습니다. 더 낮은 수수료를 포함한 거래는 입찰에서 밀려나고 확인되는 데 더 오랜 시간이 걸립니다.
물론, 모든 사용자가 거래가 빠르게 확인되기를 필요로 하는 것은 아닙니다. 가격 변동이 빠른 경우 거래소에 비트코인을 보내는 사용자는 거래가 빨리 확인되기를 원할 수 있습니다. 반면, 자신의 지갑 간에 비트코인을 이동하는 사용자는 더 인내심을 가질 수 있습니다.
비트코인 코어 0.10.0부터 사용자는 수수료를 조정할 수 있었습니다. 급한 경우 더 높은 수수료를 수동으로 포함할 수 있고, 그렇지 않은 경우 더 낮은 수수료를 설정할 수 있습니다. 비트코인 코어 0.11.0 및 0.12.0은 모두 수수료 추정 소프트웨어를 개선했으며, 비트코인 0.14.0은 특히 엣지 케이스 상황에서 알고리즘을 더욱 견고하게 만드는 또 다른 개선 사항을 포함합니다.
또한, 기본 확인 목표가 25블록에서 6블록으로 줄어들었습니다. 비트코인 코어에서 이루어진 대부분의 거래는 사용자가 수수료 설정을 건드리지 않더라도 한 시간 이내에 확인되어야 합니다.
옵트인 수수료 대체 전송
개선된 수수료 추정 외에도 비트코인 코어 0.14.0 사용자에게는 거래를 가속화할 수 있는 또 다른 옵션이 있습니다.
비트코인 코어 0.12.0의 출시와 함께 1년 전 처음 도입된 비트코인 거래는 “수수료 대체” 플래그로 표시될 수 있습니다. 거래의 발신자는 더 높은 수수료를 포함한 새로운 거래로 초기 거래를 대체할 수 있습니다. 이를 통해 그들은 “줄을 건너뛰고” 거래가 더 빨리 확인되도록 할 수 있습니다.
지금까지 비트코인 코어는 노드 동작에서만 옵트인 수수료 대체를 포함했습니다: 수수료 대체 플래그가 있는 거래를 수락하고 전달했지만(이중 지출로 거부하는 대신), 비트코인 코어 사용자는 자신의 수수료를 높이기 위해 옵트인 수수료 대체를 활용할 수 없었습니다. 지금까지는 Electrum 또는 GreenAddress와 같은 지갑 사용자만 가능했습니다.
이제 비트코인 코어 0.14.0에서 옵트인 수수료 대체가 원격 프로시저 호출(RPC) 옵션으로 추가되었습니다. 이는 명령줄에서 작업하는 사용자나 비트코인 코어를 기반으로 한 애플리케이션에서 수수료 대체를 활용할 수 있음을 의미합니다.
수동 가지치기
비트코인의 블록체인은 100기가바이트가 넘는 크기를 가지며 현재 속도로 매년 약 50기가바이트씩 증가하고 있습니다. 모든 데이터는 저장되어야 하며, 이는 전체 노드를 실행하는 사용자에게 상당한 부담이 될 수 있습니다.
그래서 비트코인 코어 0.11.0은 블록체인 가지치기를 도입했습니다. 사용자는 블록이 검증된 후 오래된 블록을 제거할 수 있으므로 전체 노드를 실행하는 데 필요한 디스크 공간이 줄어듭니다.
하지만 지금까지 사용자는 고정된 수의 블록부터만 가지치기를 할 수 있었습니다. 예를 들어, 1000블록으로 설정된 가지치기에서는 비트코인 코어가 최신 1000블록을 정확히 유지했습니다. 새로운 블록이 추가될 때마다 가장 오래된 블록이 폐기되어 총 1000블록을 유지했습니다.
불행히도, 이는 비트코인 코어에 의존하는 특정 애플리케이션이 가지치기를 제대로 활용할 수 없음을 의미했습니다. 예를 들어, 비트코인을 수락하고 싶지만 BitPay나 Coinbase와 같은 외부 서비스에 의존하고 싶지 않은 상인을 위한 결제 처리 애플리케이션은 경우에 따라 유효한 결제가 이전 블록에서 이루어졌는지 확인해야 할 수 있습니다. 그 블록이 이미 가지치기되었다면, 애플리케이션은 작업을 수행할 수 없습니다.
따라서 비트코인 코어 0.14.0은 보다 구체적인 가지치기를 허용합니다. 특정 블록 수를 유지하는 대신, 사용자는 특정 시점, 특정 블록 높이부터 블록체인을 가지치기할 수 있으며, 그 이후에 생성된 모든 블록을 유지할 수 있습니다.
또한 “importmulti”라는 새로운 기능과 결합하여 비트코인 코어 0.14.0은 예를 들어, 위에서 언급한 결제 처리 애플리케이션에서 주소를 가져오고 타임스탬프를 추가할 수 있습니다. 특정 주소가 생성된 시점을 설정하기 위해 타임스탬프를 사용하여 비트코인 코어는 애플리케이션에 대해 어떤 시점부터 블록이 관련이 있는지 알고 있으며, 이러한 블록은 가지치기하지 않을 것입니다.
블록 릴레이 개선
새로운 블록이 채굴될 때마다 비트코인의 피어 투 피어 네트워크를 통해 전송되어 각 노드가 이를 수신할 때까지 계속됩니다. 불행히도, 이 네트워크의 지연은 풀링된 채굴과 지리적 클러스터의 채굴자에게 이익이 될 수 있어, 보다 중앙 집중화된 채굴 토폴로지를 유도합니다.
블록 전파 속도를 높이는 것은 비트코인 코어 개발 팀의 몇 년간의 주요 초점이었으며, 비트코인 코어 0.14.0은 또 다른 개선 사항을 포함합니다.
아마도 가장 중요한 것은 비트코인 코어 0.14.0 노드가 동료에게 블록을 더 빨리 전달한다는 것입니다. 이전에는 노드가 연결된 노드에 보내기 전에 블록을 완전히 검증했지만, 비트코인 코어 0.14.0은 작업 증명이 확인되는 즉시 전달 프로세스를 시작합니다.
오늘날 많은 채굴자들이 대체 릴레이 네트워크를 사용하고 있지만, 비트코인의 피어 투 피어 네트워크에서 속도를 높이는 것은 이러한 네트워크에 대한 의존도를 줄이고, 피어 투 피어 네트워크에 연결되는 이러한 릴레이 네트워크에도 이익이 됩니다.
그리고 …
앞서 언급한 개선 사항은 실제로 빙산의 일각에 불과합니다. 비트코인 코어 0.14.0은 저수준 RPC 변경 사항부터 그래픽 사용자 인터페이스(GUI) 변경 사항, 그 사이의 모든 것에 이르는 추가 성능 개선 사항 목록을 포함합니다. 모든 개선 사항에 대한 전체 개요는 비트코인 코어 0.14.0 릴리스 노트를 참조하십시오.
비트코인 코어 0.14.0은 bitcoincore.org 또는 bitcoin.org에서 다운로드할 수 있습니다.