라이트닝 서명 장치: 인보이스와 라이트닝 주소
라이트닝으로 비트코인을 받으려면 보통 상대에게 긴 문자열을 전달합니다. 이 문자열은 특정 결제를 위해 만든 인보이스인 경우가 많습니다. 라이트닝 주소는 이 과정을 이름 하나로 간단하게 만들어 주는 방식입니다.
직접 키를 관리하는 라이트닝 서명 장치는 거래에 서명하는 도구이며, 앱에서 인보이스를 만들고 결제를 관리합니다. 수탁형 서비스를 이용한다면 키 관리는 사업자가 맡습니다.
인보이스는 한 번 쓰는 청구서입니다
온체인 주소를 우편함에 비유하면, 라이트닝 인보이스는 식당의 계산서에 가깝습니다. 계산서에는 금액과 항목이 적혀 있고, 한 번 계산을 마치면 다음 결제를 위해 새 계산서를 받아야 합니다.
인보이스에는 받을 금액과 유효 기간, 결제를 받을 쪽을 가리키는 정보, 지급을 확인하는 데 필요한 값 등이 담깁니다. 결제 조건이 미리 정해져 있기 때문에 라이트닝 네트워크가 적절한 경로를 찾고 지급을 처리할 수 있습니다.
만료와 일회성
인보이스에는 유효 시간이 있습니다. 보통 일정 시간이 지나면 만료되므로, 오래된 인보이스 대신 새로 만들어야 합니다. 일반적으로 같은 인보이스를 여러 번 사용하지 않는 이유는, 받는 쪽의 앱이나 서비스가 이미 지급된 인보이스의 재결제를 거부하도록 관리하기 때문입니다. 지급 증명 값 자체가 한 번 사용되면 암호학적으로 소모되어 재사용할 수 없게 된다는 뜻은 아닙니다.
따라서 라이트닝으로 여러 번 받을 때는 결제마다 새 인보이스를 만드는 것이 기본입니다. 금액을 비워 둔 인보이스를 지원하는 앱에서는 보내는 쪽이 금액을 정할 수도 있지만, 모든 앱이 이 기능을 지원하는 것은 아닙니다.
라이트닝 주소는 인보이스를 대신 요청합니다
매번 긴 인보이스를 직접 만들어 상대에게 보내는 일은 번거로울 수 있습니다. 라이트닝 주소는 이메일 주소처럼 보이는 짧은 이름과 도메인으로 구성되어, 사용자가 그 이름을 알려 주면 뒤에서 인보이스를 요청해 주는 방식입니다.
보내는 쪽의 앱은 라이트닝 주소에 연결된 도메인에 결제 정보를 요청합니다. 그러면 해당 서비스가 새로운 인보이스를 만들어 돌려주고, 실제 라이트닝 결제는 그 인보이스를 통해 진행됩니다. 사람 눈에는 짧은 이름 하나만 보이지만, 뒤에서는 결제마다 새 청구서가 만들어지는 셈입니다.
편의와 서비스 의존성
라이트닝 주소는 매번 긴 문자열을 복사해 보내야 하는 수고를 줄여 줍니다. 하지만 주소를 제공하는 도메인 운영 서비스에 의존하게 됩니다. 그 서비스가 멈추거나 운영을 중단하면 해당 주소로 인보이스를 받아 결제하는 일이 어려워질 수 있습니다.
가게에 고정된 큐알 코드를 붙여 두는 방식도 겉으로는 같은 코드를 계속 사용하는 것처럼 보일 수 있습니다. 실제로는 코드를 스캔할 때마다 뒤에서 새 인보이스를 만들어 주는 구조일 수 있습니다. 편리하지만 그 인보이스를 발급하는 서비스의 상태를 함께 고려해야 합니다.
온체인 주소와는 다릅니다
온체인 주소와 라이트닝 인보이스는 서로 다른 결제 경로입니다. 온체인 주소로 라이트닝 결제를 보낼 수 없고, 라이트닝 인보이스를 온체인 주소처럼 사용할 수도 없습니다.
결제하기 전에 상대가 온체인으로 받을 것인지 라이트닝으로 받을 것인지 확인해야 합니다. 두 방식을 나누어 사용하는 배경은 온체인과 오프체인에서 확인할 수 있습니다.
사용할 때 확인할 점
인보이스의 만료 시간이 지났다면 새 인보이스를 요청해야 합니다. 화면에 표시된 금액이 보내려는 금액과 맞는지도 확인해야 합니다.
받는 쪽의 채널 유동성이 부족하면 결제가 최종 실패할 수 있습니다. 최종 실패가 확인된 경우에는 상태를 확인한 뒤 새 인보이스나 다른 결제 경로를 선택할 수 있습니다. 반대로 결제가 진행 중이거나 결과가 불명확하다면 성공 또는 실패가 확정되기 전 새 인보이스나 온체인으로 다시 지급하지 않아야 합니다. 중복 지급이 될 수 있고, 잠겨 있던 자금이 풀리는 데 시간이 걸릴 수도 있습니다.