오늘은 비트코인 코어 0.17.0의 공식 출시일로, 사토시 나카모토가 거의 10년 전에 출시한 비트코인의 원래 소프트웨어 클라이언트의 17세대 버전이며, 오늘날 네트워크에서 여전히 지배적인 비트코인 구현입니다. 비트코인 코어의 주요 유지 관리자인 블라디미르 반 더 라안이 감독한 이번 주요 릴리스는 약 7개월에 걸쳐 약 135명의 기여자에 의해 개발되었습니다.
700개 이상의 병합된 풀 리퀘스트의 결과로, 비트코인 코어 0.17.0은 다양한 성능 개선 및 버그 수정과 기타 변경 사항을 포함하고 있습니다.
다음은 이러한 변경 사항 중 일부에 대한 개요입니다.
개선된 동전 선택
지갑의 동전은 효과적으로 별도의 청크(“거래 출력”)로 저장됩니다. 일반적으로 각 수신 결제에 대해 하나의 청크가 있으며, 따라서 대부분의 청크는 서로 다른 금액을 나타냅니다. 지갑에서 결제가 이루어질 때, 서로 다른 청크가 결제를 위한 충분한 금액을 만들기 위해 함께 추가됩니다. 그러나 서로 다른 청크가 필요한 정확한 금액에 합산되지 않는 경우, “변경 주소”가 거래에 추가되어 남은 자금을 동일한 지갑으로 다시 보냅니다.
지금까지 비트코인 코어 지갑은 서로 다른 청크를 함께 추가했습니다. 그런 다음 거래를 위해 필요한 수수료를 계산하고 추가했습니다. 그러나 경우에 따라 수수료를 거래에 추가하면 추가된 청크가 더 이상 충분한 금액을 형성하지 않게 되어 추가 청크를 포함해야 했습니다.
비트코인 코어 0.17.0은 BitGo 엔지니어인 마크 에르하르트가 설계한 “Branch and Bound” 알고리즘을 도입합니다. 이는 두 가지 구체적인 개선을 제공합니다. 첫째, 각 청크의 수수료는 거래의 일부로 선택되기 전에 계산되어 나중에 새로운 청크를 추가해야 하는 상황을 피합니다. 둘째, 알고리즘은 서로 다른 청크를 일치시켜 필요한 정확한 금액에 합산되도록 하여 가능한 경우 “변경 주소”(남은 “변경”이 전송되는 주소)의 필요성을 피합니다. (많은 청크를 가진 큰 지갑, 예를 들어 거래소나 다른 고트래픽 엔티티가 운영하는 지갑은 다른 지갑보다 변경 주소가 필요할 가능성이 적습니다.)
또한 비트코인 코어 0.17.0의 동전 선택 알고리즘에는 선택적 개인 정보 개선이 포함되어 있습니다.
모범 사례에 반하지만, 동일한 비트코인 주소로 여러 결제를 받을 수 있습니다. (예를 들어, 기부 주소에서 자주 발생합니다.) 주소를 재사용하는 것은 개인 정보 보호에 좋지 않으며, 해당 주소의 모든 동전과 해당 주소에서 이루어진 모든 결제가 동일한 사용자로부터 왔다는 것이 명백하기 때문입니다. 그러나 동일한 주소에 연결된 서로 다른 청크가 서로 다른 거래에 사용되면, 이는 처음에 해당 주소와 연결되지 않은 청크와 연결됩니다.
이 마지막 문제를 해결하기 위해 비트코인 코어 0.17.0은 사용자가 거래에서 동일한 주소에 연결된 청크를 함께 추가하는 것을 우선시하고 가능한 경우 다른 청크는 거래에서 제외할 수 있는 옵션을 제공합니다.
새로운 지갑 쉽게 생성 및 사용
비트코인 코어 0.15.0 이후로 서로 독립적으로 작동하는 여러 지갑을 생성할 수 있게 되었습니다. 이러한 지갑은 각각 별도의 비트코인 주소, 개인 키 및 자금을 가지고 있습니다. 사용자는 서로 다른 목적으로 서로 다른 지갑을 활용할 수 있습니다. 예를 들어, 하나의 지갑은 개인적인 일상 구매에 사용하고, 다른 하나는 비즈니스 관련 거래에 사용하며, 세 번째는 거래만을 위해 사용할 수 있습니다. 이는 회계를 더 쉽게 하고 편리하게 만들 수 있으며, 서로 다른 지갑이 블록체인 분석에 의해 서로 연결될 수 없기 때문에 사용자는 개인 정보 보호를 더 쉽게 누릴 수 있습니다.
그러나 지금까지 새로운 지갑은 노드를 시작할 때만 생성할 수 있었고 비트코인 코어 지갑(GUI) 사용자에게는 제공되지 않았습니다. 이 두 가지 제한 사항이 이제 해결되었습니다. 비트코인 코어 0.17.0은 사용자가 원하는 때에 새로운 지갑을 생성할 수 있게 하며, 이 기능을 GUI에서 제공합니다.
추가 혜택으로, 비트코인 코어 0.17.0은 “Scantxoutset”이라는 기능을 도입합니다. 이를 통해 사용자는 전체 거래 기록을 다시 스캔하지 않고도 새로운 지갑에 동전이 이미 포함되어 있는지(예를 들어, 개인 키가 다른 지갑에서 가져온 경우)를 신속하게 확인할 수 있습니다.
비-HD에서 HD 지갑으로 업그레이드
비트코인 코어 0.13.0 이전 버전에서는 사용자가 모든 개인 키를 백업해야 했지만, 이후 모든 비트코인 코어 버전은 계층적 결정론적(HD) 지갑을 제공했습니다. HD 지갑 사용자는 백업으로 하나의 시드 문구(단어 목록)만 저장하면 됩니다.
그러나 비트코인 코어 0.13.0 및 이후 버전으로 시스템을 업그레이드한 비트코인 코어 사용자는 새로운 HD 지갑을 생성할 수 없었습니다. 비-HD 지갑과 HD 지갑 간의 호환성 문제로 인해 이러한 사용자는 여전히 모든 개인 키를 백업해야 했습니다.
비트코인 코어 0.17.0은 이제 이러한 사용자가 HD 형식으로 업그레이드할 수 있게 합니다. 또한 이미 HD 지갑을 가진 비트코인 코어 지갑 사용자는 새로운 HD 시드를 생성하거나 가져올 수 있는 옵션을 선택할 수 있습니다.
오직 감시 전용 지갑
비트코인 지갑은 일반적으로 사용자가 동전을 사용할 수 있도록 개인 키를 저장합니다. 그러나 비트코인 코어는 오랫동안 “감시 전용” 주소도 지원해 왔습니다. 이러한 주소의 개인 키는 지갑에 저장되지 않지만, 이러한 주소에 연결된 동전은 여전히 지갑에서 볼 수 있습니다. 이를 통해 사용자는 결제를 쉽게 수락하고 자금을 추적할 수 있으며, 예를 들어 개인 키를 오프라인으로 저장할 수 있습니다.
비트코인 코어 0.17.0은 이 개념을 한 단계 더 발전시켜 사용자가 모든 주소가 감시 전용 주소인 특정 감시 전용 지갑을 생성할 수 있게 합니다. 구체적인 예로, 이는 비트코인 코어를 사용하여 하드웨어 지갑이나 HD 시드 형태의 종이 지갑에서 자금을 추적하는 데 더 쉽게 만들 것입니다.
부분 서명된 비트코인 거래
많은 거래가 간단하지만 — 한 사용자가 다른 사용자에게 지불하는 — 비트코인은 더 복잡한 유형의 거래도 허용합니다. 여기에는 여러 사용자가 자금을 보내기 위해 서명해야 하는 다중 서명(multisig) 거래와 서로 다른 사용자가 독립적인 거래를 하나의 큰 거래로 병합하는 개인 정보 보호 강화 CoinJoin 거래가 포함됩니다.
이러한 유형의 거래를 더 잘 촉진하기 위해 비트코인 코어 0.17.0은 앤드류 차우가 설계한 BIP 174 부분 서명된 비트코인 거래(PSBT) 프레임워크를 도입합니다. 이 프레임워크는 비트코인 코어 사용자가 거래를 부분적으로 서명할 수 있게 하며, 또한 그러한 부분 서명된 거래에 메타데이터를 추가합니다. 이 메타데이터는 다른 사람이 거래를 완료하는 데 사용할 수 있습니다.
PSBT는 다른 지갑에서 표준이 채택될 경우 특히 유용할 것입니다. 하나의 잠재적 사용 사례로, 이는 사용자가 자금을 보호하기 위해 비트코인 코어 지갑에서 생성된 서명과 하드웨어 지갑의 서명이 필요한 다중 서명 계정에 자금을 잠글 수 있게 할 수 있습니다. 또는 비트코인 코어 사용자가 (다른) 개인 정보 보호를 유지하는 지갑 사용자와 CoinJoin 계획에 참여할 수 있게 할 수 있습니다.
현재 부분 서명 거래 기능은 명령줄에서 비트코인 코어를 운영하거나 연결된 애플리케이션을 통해 사용하는 사용자만을 위한 것입니다.
사용자 인터페이스에서의 가지치기
모든 비트코인 거래를 저장하는 비트코인 블록체인은 현재 180기가바이트가 넘으며 매일 증가하고 있습니다. 새로운 비트코인 코어 사용자는 이 모든 데이터를 다운로드하고 검증해야 합니다.
그러나 “블록체인 가지치기”라는 기술 덕분에 이러한 사용자는 반드시 모든 데이터를 저장할 필요는 없습니다. 가지치기 모드에서는 노드가 자동으로 오래된 거래 데이터를 잊고 안전하게 운영하는 데 필요한 것만 유지합니다. 지금까지 가지치기 모드는 명령줄을 통해서만 활성화할 수 있었습니다.
비트코인 코어 0.17.0은 처음으로 지갑에서 가지치기를 활성화할 수 있는 편리한 GUI 토글을 제공하여 최적의 보안을 위해 전체 노드를 실행하고자 하는 비기술적인 일반 비트코인 사용자에게 더 접근 가능하게 만듭니다.
비트코인 코어의 최신 버전에서 새로운 내용에 대한 자세한 내용은 비트코인 코어 0.17.0 릴리스 노트를 참조하십시오.