용어집 / 개발자 참고 자료
R 파라미터
- R 파라미터란 무엇입니까?
- R 파라미터는 결제 주소를, 지갑이 서명된 요청을 가져오는 데 사용할 것으로 기대되는 URL로 대체하는 비트코인 URI에 대한 BIP72 추가 사항입니다.
BIP-72에 명시되어 있습니다.
r 파라미터를 담은 QR 코드를 스캔하면 지갑은 무엇이든 표시하기 전에 웹 페이지를 가져오도록 지시받습니다. BIP72는 2013년 7월 29일에 등장했고, 필수 키에 예약된 req-r 표기가 아니라 그냥 r을 사용했기 때문에 구형 지갑은 이를 무시하고 해당 주소로 결제할 수 있었습니다. 오늘날 접하는 결제 화면 중에서 이런 것을 제공하는 곳은 없을 것입니다.
작동 방식
r 파라미터는 퍼센트 인코딩된 HTTPS URL을 담는 쿼리 키이며, BIP72는 이에 대해 두 가지 형태를 정의했습니다. 호환 형태는 URI에 일반 주소를 유지하고 그 뒤에 키를 덧붙이므로, 결제 프로토콜을 들어본 적 없는 지갑은 해당 주소로 결제하고, r을 이해하는 지갑은 주소를 무시하고 요청을 가져옵니다. 축약 형태는 주소를 완전히 제거하여 bitcoin:?r=https://store.example/i/8f3a 같은 형태가 되며, 구형 소프트웨어는 이를 전혀 결제할 수 없습니다.
키를 선택 사항으로 만든 것은 BIP21을 의도적으로 해석한 결과였습니다. BIP21의 문법은 인식되지 않는 파라미터를 두 부류로 나누는데, req-로 시작하는 것은 지갑이 URI를 거부하도록 해야 하고, 그 외의 것은 건너뛸 수 있습니다. 따라서 필드를 req-r이 아니라 r로 명명한 것은 점진적 성능 저하를 선택한 것입니다. BIP72는 반대 동작도 명시했으므로, 일반 주소 결제를 정말로 받을 수 없는 판매자는 req-r을 써서 호환되지 않는 지갑이 결제 화면에서 대사되지 않을 자금을 보내는 대신 중단하도록 강제할 수 있었습니다.
URL에서 반환되는 것은 BIP71이 이를 위해 등록한 MIME 타입으로 제공되는 프로토콜 버퍼였습니다. 이어서 BIP73은 콘텐츠 협상을 추가하여, 클라이언트가 보낸 Accept 헤더로 구분하여 동일한 링크가 지갑에는 결제 요청을, 브라우저에는 일반적인 사람용 웹 페이지를 반환하도록 했습니다.
확인할 수 있는 곳
r 파라미터는 현재 어디에서도 사용되지 않습니다. Bitcoin Core는 릴리스 0.20.0이 결제 프로토콜 지원을 제거했을 때 이러한 URL을 더 이상 따르지 않았고, 한때 이를 생성하던 판매자 도구는 일반 URI와 라이트닝 인보이스를 발행하는 소프트웨어로 대체되었습니다. 여전히 r 파라미터를 생성하는 결제 페이지는 누구도 수년간 손대지 않은 통합을 운영하고 있는 것이며, 다른 경로로 결제하는 것이 합리적인 대응입니다.
이 필드에서 얻어야 할 습관은 필드 자체보다 오래갑니다. QR 코드는 사람이 읽을 수 없으므로, 이를 스캔하는 것은 그것을 생성한 무엇이든, 화면, 인쇄된 청구서, 기계에 붙은 스티커에 신뢰를 두는 행위입니다. r 파라미터는 지갑에 접속할 URL을 건네줌으로써 이를 문자 그대로 실현했고, 이는 무엇이든 동의하기 전에 귀하의 IP 주소를 판매자의 서버에 노출시키기도 했습니다. 누군가 조용히 바꿔치기한 일반 주소 QR 코드에도 같은 노출이 더 평범한 형태로 존재합니다. 스캐너가 제어하지 않는 화면에서 목적지를 확인하시고, 하드웨어 지갑에서는 그것이 기기 자체의 화면을 뜻하며, 처음 네 글자를 흘낏 보는 대신 확실히 하기에 충분한 글자를 비교하십시오.
R 파라미터 vs 비트코인 URI
비트코인 URI는 전체 문자열이며, r 파라미터는 그 안의 선택적 키 하나였습니다. 둘을 구분하는 것은 권한의 방향입니다. amount, label, message 같은 키는 이미 URI에 들어 있는 목적지를 꾸며 주며, 지갑은 그 모두를 무시하고도 올바른 곳으로 자금을 보낼 수 있습니다. r 파라미터는 그 관계를 뒤집었습니다. 그것이 이해되는 곳에서는 주소를 완전히 덮어썼고, 자금이 어디로 가는지에 대한 결정을 눈앞의 문자열에서 다른 곳의 서버로 옮겼습니다.