Bitcoin Core 30.3 출시
chainstate 디스크 부하가 Bitcoin Core 30.3에서 해소됐다. 합산 범프 수수료를 구할 수 없을 때 feebumper가 죽던 문제(#34870)와 코인 선택에서 금액을 불리언으로 계산하던 버그(#34888)도 고쳤다. PSBT 쪽에서는 pubnonce와 부분 서명을 역직렬화할 때 MuSig2 공개키를 검증한다(#34219).
Bitcoin Core
비트코인 소프트웨어를 만드는 사람들이 내놓는 릴리스, 보안 공지, 프로토콜 작업.
기사 121건
chainstate 디스크 부하가 Bitcoin Core 30.3에서 해소됐다. 합산 범프 수수료를 구할 수 없을 때 feebumper가 죽던 문제(#34870)와 코인 선택에서 금액을 불리언으로 계산하던 버그(#34888)도 고쳤다. PSBT 쪽에서는 pubnonce와 부분 서명을 역직렬화할 때 MuSig2 공개키를 검증한다(#34219).
Bitcoin Core
Bitcoin Core 31.1이 -privatebroadcast의 IP 주소 유출을 막았다. 일부 연결이 활성화된 프라이버시 네트워크 대신 클리어넷으로 나가던 문제다. 디스크를 과도하게 돌리던 chainstate 재기록도 사라졌고, MuSig2 키 집계는 빈 공개키 목록을 거부한다(#35316).
Bitcoin Core
Bitcoin Core 31.0에서 v2 핸드셰이크가 실패하면 발신자 IP 주소가 드러날 수 있다. -privatebroadcast를 켠 상태에서 v1 재시도가 Tor 프록시를 건너뛰고 피어에 직접 연결하기 때문이다. 악의적 피어가 일부러 핸드셰이크를 끊는 경우가 유력한 촉발 요인으로 꼽힌다. 31.1이 나올 때까지는 이 기능을 끄거나 -v2transport=0을 설정하거나, IPv4/IPv6 아웃바운드를 Tor로 보내면 된다.
Bitcoin Core
0.14.0 이후 29.0 이전 Bitcoin Core는 조작된 무효 블록을 검증하다 해제된 메모리를 읽어 노드가 다운될 수 있었다. CVE-2024-52911의 심각도는 ‘높음’이지만 공격자가 체인 끝에서 유효한 작업증명을 들여야 하고, 원격 코드 실행 가능성은 낮은 것으로 본다. Cory Fields가 제보했으며 수정은 29.0에 들어갔다.
Bitcoin Core
클러스터 멤풀이 Bitcoin Core 31.0에서 기존 구조를 대체했다. 조상·자손 제한 대신 트랜잭션 64개, 101kB까지인 클러스터 상한이 적용되고 CPFP carveout은 사라졌다. RAM 4096MiB 이상 머신에서는 -dbcache 기본값이 1024MiB로 오르며, 새 옵션 -privatebroadcast는 sendrawtransaction 전파를 Tor나 I2P로만 내보낸다.
Bitcoin Core
이름 없는 지갑과 관련된 장애 두 건이 Bitcoin Core 28.4에서 해결됐다. 레거시 지갑 마이그레이션 실패(#34156)와, 실패 시 wallets 디렉터리를 지워 버리던 createfromdump(#34215)다. DNS 시드 하나도 chainparams에서 뺐다(#33723).
Bitcoin Core
합의 규칙에 어긋나는 트랜잭션을 보낸 피어를 Bitcoin Core 29.3은 더는 처벌하지 않는다(#33050). 검증 단계에는 레거시, P2SH, SegWit v0 스크립트용 입력별 sighash 미드스테이트 캐시가 추가됐고(#32473), Script 검사를 다시 돌리지 않고도 witness stripping을 잡아낸다(#33105). 채굴 코드의 addPackageTxs에서는 부호 없는 정수 오버플로를 없앴다(#33475).
Bitcoin Core
이름 없는 레거시 지갑의 마이그레이션 실패가 Bitcoin Core 30.2로 사라졌고(#34156), createfromdump도 이런 지갑에서 실패할 때 wallets 디렉터리를 지우지 않는다(#34215). IPC 대기 호출 중 Ctrl-C를 눌러도 더는 멈추지 않는다(#33511).
Bitcoin Core
드문 조건에서 Bitcoin Core 30.0이나 30.1의 wallet.dat 마이그레이션이 실패하면 지갑 디렉터리의 파일이 모두 지워져 자금이 위험해질 수 있다. 개발진은 해당 바이너리를 내리고, 30.2가 나올 때까지 GUI나 RPC로 마이그레이션하지 말라고 당부했다. 기본값인 이름 없는 wallet.dat가 마이그레이션이나 로드에 실패할 때만 발생하며, 그 밖의 사용자는 영향이 없다.
Bitcoin Core
조상이 있는 미확인 TRUC 코인을 Bitcoin Core 30.1 지갑은 더 이상 고려하지 않는다(#33528). IPC 쪽에서는 옵션에 -m 인수가 필요 없어졌고(#33229), 메시지 로깅 오버헤드가 줄었으며(#33517), 실행 중인 waitNext 호출을 취소할 수 있다(#33676).
Bitcoin Core
조작된 비표준 트랜잭션 하나로 Bitcoin Core 노드를 몇 초씩 묶어 둘 수 있었고, 보낸 쪽은 연결이 끊기지도 않았다. 공격자가 블록 전파를 늦추는 데 쓸 수 있는 수법이다. 심각도 ‘낮음’인 CVE-2025-46598은 Antoine Poinsot가 제보했으며, v30.0이 최악의 경우 검증 시간을 줄여 완화했다.
Bitcoin Core
1GB가 넘는 블록은 32비트 Bitcoin Core 노드의 크기 검사를 오버플로시켜 디스크 기록 단계에서 노드를 다운시킬 수 있었다. 다만 컴팩트 블록으로 전달돼야 하고, 피해 노드가 -maxmempool을 3GB 넘게 설정한 채 1GB어치 트랜잭션을 들고 있어야 한다. Pieter Wuille가 발견한 CVE-2025-46597의 심각도는 ‘낮음’이며, 29.1과 30.0이 32비트 시스템의 -maxmempool에 상한을 둬 막았다.
Bitcoin Core
기본 유효성 검사에 실패하거나 마지막 체크포인트 이전에서 갈라지는 블록을 Bitcoin Core가 빠짐없이 기록한 탓에, 무효 블록을 계속 보내면 노드의 디스크를 가득 채울 수 있었다. CVE-2025-54605(심각도 ‘낮음’)는 Niklas Goegge와 Eugene Siegel이 각각 제보했다. 29.1과 30.0의 로그 속도 제한으로 해결됐다.
Bitcoin Core
최소 수수료율 기본값이 Bitcoin Core 28.3에서 내려갔다. -blockmintxfee는 kvB당 1사토시, -minrelaytxfee와 -incrementalrelayfee는 kvB당 100사토시다. 지갑 수수료율은 그대로이고, 새 기본값이 네트워크에 퍼지지 않으면 더 싼 트랜잭션은 전파되지 않을 수 있다. 화이트리스트 권한은 어니언 인바운드 연결에 더는 적용되지 않는다(#33395).
Bitcoin Core
FillBlock 관련 P2P 수정 두 건이 Bitcoin Core 29.2에 담겼다. witness 변조 검사(#32646)와 호출 전 빈 헤더 검사(#33296)다. 리오그 때 TRUC 검사는 더 이상 강제하지 않고(#33504), getblock과 getblockheader는 체인 끝의 target을 반환하지 않는다(#33446).
Bitcoin Core
OP_RETURN 제한이 Bitcoin Core 30.0에서 사실상 사라졌다. -datacarriersize 기본값은 100,000이고 트랜잭션 하나에 데이터 출력을 여러 개 넣을 수 있으며, -datacarriersize=83으로 옛 상한을 되살릴 수 있다. 기본 릴레이 수수료율은 vB당 0.1사토시로 내려갔고 표준 트랜잭션의 레거시 서명 연산은 2500개로 제한된다. 기존 실행 파일들을 감싸는 bitcoin 명령도 새로 생겼다.
Bitcoin Core
디스크에 무조건 기록하던 로그가 Bitcoin Core 29.1부터 소스 위치별로 시간당 1MiB로 제한된다(#32604). 표준 트랜잭션에 담을 수 있는, 실행될 가능성이 있는 레거시 서명 연산은 최대 2500개다. 기본 릴레이 수수료율은 kvB당 100사토시로 내려갔고, 32비트 빌드는 -maxmempool을 500MB, -dbcache를 1GiB로 묶는다.
Bitcoin Core
Bitcoin Core 28.2 변경 사항의 절반 남짓은 빌드 작업이다. 이제 Guix가 macOS 앱 번들을 공증하고 macOS·Windows 바이너리 전부에 코드 서명을 한다(#31407). depends에는 NetBSD용 libevent(#31500)와 cmake 환경의 freetype(#32693) 컴파일 수정이 들어갔다.
Bitcoin Core
UPnP 지원이 Bitcoin Core 29.0에서 빠졌다. -natpmp는 libnatpmp 대신 내장 PCP·NAT-PMP 구현으로 돌아간다. 새 정책으로 임시 더스트(ephemeral dust)가 도입됐고, 블록 가중치가 이중으로 예약되던 문제를 고치면서 -blockreservedweight가 추가됐다. 노드는 고아 트랜잭션을 알린 모든 피어에 누락된 부모를 요청한다. 26.x 이하 버전은 유지보수가 끝난다.
Bitcoin Core
-port를 지정하면 Bitcoin Core 28.1은 메인넷 기본 어니언 수신 포트를 8334로 고정하지 않고 그 포트에 1을 더해 정한다. 로컬 노드 여러 대를 시작 충돌 없이 다시 나란히 돌릴 수 있게 됐다. torrc에 HiddenServicePort를 직접 적어 뒀다면 고쳐야 할 수도 있다. DecodeExtKey에서는 비밀 데이터를 지운다(#31166).
Bitcoin Core