Pruned Node는 Bitcoin 규칙을 직접 검사하는 Full Node이지만, 모든 옛 블록을 영구 보관하지는 않습니다. 디스크 공간을 아끼는 대신 과거 기록에 대한 접근이 제한됩니다. 비트코인 보유액을 줄이는 기능도, 지갑 백업을 대신하는 기능도 아닙니다.
안나는 지급이 유효한지 다른 사람의 서버에 맡기지 않고 Bitcoin을 사용하고 싶습니다. 하지만 집의 컴퓨터에는 확인된 거래 묶음인 블록을 전부 보관할 공간이 없습니다. Pruned Node가 해답이 될 수 있습니다. 일반적인 Initial Block Download(노드의 초기 동기화)에서는 과거 기록을 순서대로 내려받아 검증한 다음, 처리가 끝난 오래된 파일을 지웁니다. 전체 기록을 동시에 디스크에 둘 필요는 없지만, 이 동기화 과정에서 기록을 모두 거쳐야 한다는 점은 같습니다. [2] [5]
Pruning은 정해진 조건에 따라 오래된 데이터를 삭제하는 것입니다. Bitcoin Core는 삭제 가능한 블록 파일과 관련 undo 데이터를 제거합니다. undo 데이터는 블록이 일으킨 상태 변화를 되돌리는 데 쓰입니다. 작업 자료의 결과를 계속 갱신되는 장부에 반영한 뒤 옛 자료를 치우는 상황을 떠올려 보세요. 로컬 자료는 없어져도 유효한 지급의 결과는 남습니다. 다른 노드가 같은 블록을 계속 보관할 수도 있습니다. [3] [7]
핵심은 아직 사용되지 않은 거래 출력을 모은 UTXO set입니다. 각 출력에는 금액과 그것을 사용하기 위한 조건이 담겨 있습니다. 노드는 이 집합을 갱신하면서 이미 사용한 출력을 다시 쓰려는 시도 등을 발견합니다. 블록을 서로 연결하는 짧은 기록인 헤더를 포함한 블록 인덱스도 유지합니다. UTXO set은 계좌 목록이나 과거 모든 지급의 내역과는 다릅니다. [2] [6]
네트워크가 잠시 두 유효한 분기를 따르다가 누적 작업량이 더 큰 다른 분기를 이어 갈 수 있습니다. 이를 재구성이라고 합니다. 누적 작업량은 유효한 블록을 찾는 난이도를 나타내며, 각 블록의 Proof of Work, 즉 계산 작업의 증거를 바탕으로 합니다. 노드는 일부 블록의 영향을 되돌릴 수 있어야 하므로 최근 블록과 undo 데이터를 여유 있게 보관합니다. 보관 범위보다 더 멀리 되돌아가야 한다면 데이터를 다시 구하거나 상태를 재구축해야 할 수 있습니다. 디스크 한도가 옛 지급을 절대 되돌릴 수 없는 것으로 만드는 것은 아닙니다. [5] [7]
Bitcoin Core의 자동 pruning 목표는 블록 파일과 undo 파일에 적용되며, 노드의 데이터 폴더 전체를 뜻하지는 않습니다. 데이터베이스, 지갑과 다른 파일도 공간을 차지합니다. 삭제는 파일 단위로 이루어지고 필요한 최근 기록도 남겨야 하므로 목표값은 엄격한 상한선이 아닙니다. 디스크를 계획할 때 이런 추가 공간을 확보하세요. 기록 보관 한도는 노드 전체 크기와 같지 않습니다. [1] [4] [7]
Full Node의 Full은 규칙을 직접 검증한다는 뜻이지, 모든 블록을 영원히 저장해야 한다는 뜻이 아닙니다. 같은 검증 설정을 사용하면 전체 기록 보관 노드와 가지치기 노드는 동일한 무효 블록을 거부합니다. Pruning 자체는 검사를 끄지 않습니다. 디지털 서명은 비밀 숫자 값인 개인 키로 결제 승인을 증명하며, 키 자체는 공개하지 않습니다. 예를 들어 assumevalid는 특정 조건에서 과거 서명 검증 일부를 생략할 수 있는 별도 설정입니다. 두 종류 노드 모두에 적용될 수 있으며, 작은 디스크 때문에 생기는 기능이 아닙니다. [5] [6]
안나의 노드는 새 거래와 보유 중인 블록을 계속 받아 검증하고 중계할 수 있습니다. 다만 파일을 지운 옛 블록은 보내 줄 수 없습니다. 그래서 새로 시작하는 노드에는 전체 기록 보관 노드도 중요합니다. Pruned Node는 네트워크에서 떨어져 있지도 않고, 다른 사람의 검증에 기대는 단순한 경량 지갑도 아닙니다. 과거 데이터 제공 범위가 더 제한적일 뿐입니다. [10]
나중에 안나는 몇 년 전에 쓰던 지갑을 복구합니다. 지갑은 비트코인을 받고 보내는 앱이나 기기입니다. 소프트웨어가 안나의 거래를 다시 찾으려면 해당 블록을 살펴봐야 하는데, 이를 rescan이라고 합니다. 로컬에 블록이 없다면 키나 descriptor를 가져오는 것만으로 되살릴 수 없습니다. descriptor는 주소와 사용 조건을 구성하는 방식을 설명합니다. 복구를 위해 과거 데이터를 다시 확보해야 할 수 있습니다. 화면에 옛 지급이 보이지 않는다는 사실만으로 비트코인을 잃었다고 판단할 수는 없습니다. [8] [9]
노드에 연결하는 애플리케이션도 중요합니다. 전체 역사를 검색하는 탐색기와 새 지급을 추적하는 지갑은 필요한 데이터가 다릅니다. 예를 들어 Bitcoin Core v29.0에서는 pruning과 txindex를 함께 사용할 수 없습니다. txindex는 저장된 블록에서 거래를 찾는 보조 인덱스입니다. 모든 인덱스가 금지된다는 뜻은 아닙니다. 모드를 정하기 전에 프로그램 요구 사항을 확인하세요. 나중에 한도를 늘려도 삭제한 파일이 다시 만들어지지는 않습니다. [1]
전체 기록을 늘 검색할 필요 없이 Bitcoin을 직접 검증하려는 사람에게 Pruned Node는 유용합니다. 그렇다고 일반적인 최초 기록 다운로드가 없어지지는 않습니다. AssumeUTXO는 다른 방식으로 노드를 더 일찍 사용할 수 있게 합니다. 무엇보다 블록이나 UTXO set은 지출을 승인하는 개인 키의 백업이 아닙니다. 보관량과 무관하게 지갑 백업과 검증된 복구 절차가 필요합니다. [2] [9]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Initial Block Download, AssumeUTXO, Block Propagation, vByte, Bitcoin, Bitcoin Core. 다음 항목에서도 이 글을 참조합니다 Initial Block Download, AssumeUTXO, Utreexo, Compact Block Filters.