용어집 / 개발자 참고 자료
레이블
- 레이블이란 무엇입니까?
- 비트코인 URI의 레이블은 대금을 받는 사람이나 사업체의 이름을 나타내며, 지갑에서는 주소나 트랜잭션에 붙이는 개인 메모입니다.
BIP-21에 명시되어 있습니다.
레이블은 비트코인 결제에서 순전히 사람을 위해 존재하는 유일한 부분입니다. 레이블에 입력한 어떤 내용도 블록체인에 도달하지 않으며, 시드 문구 어디에도 그것을 되살릴 수 있는 것은 없습니다: Bitcoin Core는 2018년 10월에 버전 0.17.0에서 기존 계좌 시스템을 레이블로 대체했고, 레이블은 지갑 파일에만 존재합니다. 레이블을 잃으면 세금 신고 시점에 자신의 트랜잭션 내역을 잃게 됩니다.
작동 방식
레이블이라는 단어는 서로 다른 두 가지를 가리키며, 둘을 구분하면 많은 혼란을 피할 수 있습니다.
첫 번째는 BIP21에서 정의한 label 매개변수입니다. 이 매개변수는 퍼센트 인코딩된 UTF-8로 결제 URI 안에 실려 전달되므로, 확인 화면에는 label=Coffee%20Shop이 Coffee Shop으로 표시됩니다. 이는 URI를 만든 쪽이 제공한 참고용 텍스트입니다. 어떤 서명도 이를 보증하지 않고, 어떤 지갑도 이를 검사하지 않으며, 피싱 링크를 만드는 공격자도 정직한 판매자와 똑같이 자유롭게 이를 정할 수 있습니다.
두 번째는 직접 작성하는 메모입니다. Bitcoin Core는 이를 setlabel, getaddressesbylabel, listlabels를 통해 제공하며, 이 API는 계좌가 폐기 대상이 되었을 때 0.17.0에 등장했고 0.18.0에 계좌 관련 호출이 제거되면서 계좌를 완전히 대체했습니다. Sparrow, Electrum 및 대부분의 모바일 지갑은 이에 상응하는 필드를 유지합니다.
지갑 쪽 레이블은 키 안에 있는 것이 아니라 키 옆에 있는 메타데이터입니다. 새로운 소프트웨어에 시드 문구를 복원하면 모든 코인이 어디서 왔는지에 대한 기억 없이 되돌아옵니다. BIP329는 그 문제의 이식성 부분을 해결하기 위해 존재합니다: 한 줄에 하나의 레코드를 두는 JSON Lines 내보내기 형식을 정의하며, 각 레코드는 tx, addr, pubkey, input, output, xpub 중 하나의 유형, 참조, 레이블 텍스트를 담습니다. 여러 데스크톱 및 모바일 지갑이 이 형식을 읽고 쓸 수 있어, 소프트웨어를 바꿀 때 레이블을 옮길 수 있습니다.
레이블을 볼 수 있는 곳
레이블은 결제가 깔끔해 보이는 것과 아무 관련이 없는 세 가지 상황에서 핵심적인 역할을 합니다.
첫째는 코인 컨트롤입니다. 어떤 미사용 출력을 지출하고 어떤 것을 분리해 둘지 결정하는 일은 이를 구별할 수 있을 때만 작동하며, 이 코인이 확인된 거래소 출금에서 왔고 저 코인은 개인 간 거래에서 왔다는 사실을 기록하는 것이 바로 레이블입니다. 둘을 한 트랜잭션에서 합치면 두 내역을 영구히 연결하게 됩니다. 병합 회피를 기억에만 의존해 실행하는 사람은 없습니다.
둘째는 세금 기록입니다. 특정 코인의 취득 원가는 본인의 메모에 존재하는데, 자기 보관 이체에는 가격이 실리지 않기 때문입니다. 입금에 레이블이 붙고 법정화폐 금액이 적힌 지갑은 이미 손에 있는 스프레드시트입니다. 레이블 없는 UTXO로 가득한 지갑은 해마다 재구성에 반나절이 드는 일입니다.
셋째는 피싱이며, 방향은 반대입니다. URI 레이블은 공격자가 통제하는 텍스트입니다. 결제 화면에서 익숙한 회사명이 보인다는 것은 누군가 그 이름을 문자열에 입력했다는 것일 뿐입니다.
실용적인 습관: 트랜잭션 시점에, 아직 그것이 무엇이었는지 알 때 레이블을 붙이고, 백업을 할 때마다 지갑 디스크립터와 함께 레이블을 내보내십시오. 시드 문구, 디스크립터, 레이블 파일을 합치면 완전한 복원이 됩니다. 시드 문구만으로는 자금은 되찾고 내역은 잃습니다.
레이블 vs PP 메모
BIP70 결제 프로토콜의 메모는 서명된 메시지 안에 실려 전달되는 판매자 텍스트였으므로, 지갑은 적어도 그것을 인증서 보유자와 연결할 수 있었습니다. BIP21 레이블은 이를 보증하는 것이 아무것도 없는 상태로 평문으로 전달됩니다. 그 차이가 결제 프로토콜을 지지하는 전체 논거였지만, 결제 프로토콜을 구하지는 못했습니다: BIP70은 2020년 6월에 버전 0.20.0에서 Bitcoin Core에서 제거되어, 서명되지 않은 레이블이 실제로 모두가 사용하는 형식으로 남았습니다.