용어집 / 프라이버시와 보안
사일런트 페이먼트
별칭은 BIP352입니다.
- 사일런트 페이먼트란 무엇입니까?
- 사일런트 페이먼트를 사용하면 블록체인에 한 번도 나타나지 않는, 재사용 가능한 주소 1개를 공개할 수 있습니다. 발신자가 그 주소를 이용해 결제마다 새롭고 연결 불가능한 목적지를 계산하기 때문입니다.
BIP-352에 명시되어 있습니다.
공개하는 고정 문자열은 코인이 가는 곳이 아니라 공개 키 한 쌍입니다. josibake, Ruben Somsen, Sebastian Falbesoner가 BIP352로 규정했고 2023년 3월에 만들어진 이 방식은, 발신자와 수신자만 계산할 수 있는 비밀에서 결제마다 새로운 Taproot 출력을 도출합니다. 재사용 주소의 편의를 얻으면서 온체인 연결은 하나도 얻지 않는 것입니다.
작동 방식
사일런트 페이먼트에서는 발신자가 주소 도출을 수행하며, 이것이 나머지 전부를 가능하게 하는 핵심입니다.
사일런트 페이먼트 주소는 스캔용 공개 키와 지출용 공개 키, 두 개의 공개 키를 접두사 sp1이 붙은 bech32m로 인코딩합니다. 명세는 지갑이 최소 117자의 문자열을 처리하도록 규정하므로, 이 주소는 직접 입력하기보다 QR 코드나 링크로 공유할 만큼 깁니다. 누군가 여러분에게 결제하면 그 사람의 지갑은 지출하는 입력의 개인 키와 여러분의 스캔 키 사이에서 Diffie-Hellman 교환을 수행합니다. 그렇게 공유 비밀이 생기고, 이 비밀이 여러분의 지출 키를 조정하며, 그 결과는 블록 안의 다른 모든 Taproot 출력과 똑같이 보이는 평범한 Taproot 출력입니다. 온체인에서 그것을 여러분이 공개한 주소와 연결하는 것은 아무것도 없고, 서로 다른 두 발신자의 두 결제는 눈에 보이는 관계를 공유하지 않습니다.
비용은 수신자에게 발생합니다. 어떤 출력도 여러분의 주소를 담고 있지 않기 때문에, 여러분의 지갑은 스캔 키로 같은 계산을 반복하여 모든 블록의 후보 트랜잭션을 검사해야 합니다. 지갑은 이를 로컬에서 스캔하거나(동기화 시간과 배터리를 소모하지만 어떤 서버에도 알리지 않습니다), 더 빠르지만 덜 사적인 인덱싱 서비스에 의존합니다. 선택적 라벨을 사용하면 주소의 식별 가능한 변형을 도출할 수 있으므로, 두 개의 신원을 공개하지 않고도 기부금과 급여를 구분할 수 있습니다.
확인할 수 있는 곳
사일런트 페이먼트 지원은 실제로 있지만 일부에 그치며, 결제의 양쪽 모두가 이를 지원해야 합니다.
Cake Wallet은 완전한 송금과 수신을 지원한 최초의 모바일 지갑이며, Sparrow는 데스크톱을 담당하고, Silentium은 참조 구현으로 존재합니다. Wasabi는 sp1 주소로 송금할 수 있습니다. Bitcoin Core는 출시된 어떤 버전에서도 사일런트 페이먼트 지갑을 제공하지 않습니다. 암호 기본 요소는 이제 함께 포함된 libsecp256k1 라이브러리에 있지만, 작업은 수년째 pull request 28122에 머물러 있습니다.
이 복잡성을 정당화하는 사용 사례는 공개 수신입니다. 웹사이트의 기부 주소, 동영상 설명의 후원 주소, 포스터의 QR 코드는 모두 정의상 재사용되는 주소이며, 그곳으로 들어오는 모든 결제는 여러분의 총수입을 세상에 보여 주는 하나의 공개 더미로 쌓입니다. 사일런트 페이먼트 주소는 상호 작용 단계 없이 이를 해결하며, 이 점은 재사용 주소에 대한 이전 시도들이 결코 해내지 못한 부분입니다.
사일런트 페이먼트 vs 고유 주소
일반적인 HD 지갑은 이미 결제마다 새로운 주소를 제공하며, 두 사람 사이의 결제라면 그 방식이 더 단순하고 저렴하며 보편적으로 지원됩니다. 여러분이 요청하고, 상대가 결제하고, 도출되는 것은 없습니다. 사일런트 페이먼트는 여러분이 요청할 수 없을 때 중요합니다. 주소가 공개된 곳에 놓여 있어야 하고 낯선 사람들이 예측할 수 없는 시점에 결제해야 하기 때문입니다. 그 대가로 여러분이 내놓는 것은 스캔 작업과 더 좁은 지갑 지원이므로, 대부분의 사람은 일반적인 결제에는 새로운 주소를 계속 사용하고 연락처 정보가 영구적인 곳에만 사일런트 페이먼트 주소를 남겨 두는 것이 좋습니다.