비트코인 라이트닝 네트워크를 운영하다 보면 갑자기 거래가 막히는 순간이 있어요. 특히 ErrMinRelayFeeNotMet라는 오류 메시지를 마주하면 정말 당황스러운데요. 이 오류는 쉽게 말해 거래 수수료가 너무 낮아서 네트워크가 거부한 상황이에요. 마치 택시를 타려는데 기본요금도 안 되는 돈을 내밀면 기사님이 태워주지 않는 것과 비슷해요.
거래가 막힌 진짜 이유
라이트닝 네트워크에서 채널을 닫을 때 온체인 거래를 만들어야 하는데, 이때 비트코인 네트워크의 최소 수수료 기준을 맞춰야 해요. 문제는 이 기준이 고정되어 있지 않고 네트워크 상황에 따라 계속 변한다는 점이에요.
예를 들어 평소에는 1 sat/vbyte만 내도 충분했는데, 갑자기 네트워크가 붐비면서 5 sat/vbyte 이상을 요구하는 경우가 생겨요. 이럴 때 기존 수수료로 거래를 보내면 ErrMinRelayFeeNotMet 오류가 발생해요.
특히 Taproot Assets를 사용하는 경우 더 복잡해져요. Taproot Assets는 비트코인 위에 다른 자산을 올려놓는 기술인데, 이로 인해 거래 크기가 일반 비트코인 거래보다 커져요. 큰 짐을 실은 트럭이 일반 승용차보다 통행료를 더 내야 하는 것처럼, 더 많은 수수료가 필요하게 되는 거예요.
LND가 찾아낸 해결책
LND 0.18 버전부터 완전히 새로운 방식의 Sweeper 시스템이 도입됐어요. Sweeper는 채널 종료 후 남은 자금을 지갑으로 정리하는 청소부 같은 역할을 해요.
이전 버전의 문제점은 간단했어요. ErrMinRelayFeeNotMet 오류가 발생하면 시스템이 이를 제대로 인식하지 못하고 그냥 포기해버렸어요. 마치 문이 잠겨있는데 한 번만 밀어보고 돌아서는 것과 같았죠.
새로운 Sweeper는 훨씬 똑똑해졌어요:
- 오류를 정확히 인식하고 수수료를 자동으로 올려서 다시 시도해요
- 거래별로 예산과 마감 시한을 설정해요
- 시간이 지날수록 점진적으로 수수료를 올려가며 재시도해요
실제로 이렇게 작동해요. 처음에는 2 sat/vbyte로 시도하고, 실패하면 3 sat/vbyte, 그 다음은 4 sat/vbyte... 이런 식으로 성공할 때까지 계속 올려요. 물론 무한정 올리지는 않고 미리 정한 예산 내에서만 움직여요.
예산 기반 스마트 수수료 관리
새로운 시스템의 핵심은 예산 개념이에요. 각 거래마다 얼마까지 수수료로 쓸지 미리 정해두는 거예요.
예를 들어 1000달러짜리 거래를 처리하는데 수수료로 500달러를 쓴다면 말이 안 되겠죠. 그래서 거래 금액의 일정 비율, 보통 30-50% 정도를 수수료 예산으로 잡아요.
시간 민감도도 중요해요. HTLC라는 시간제한이 있는 거래는 빨리 처리해야 해서 수수료를 더 적극적으로 올려요. 반면 일반적인 채널 종료 거래는 일주일 정도 여유를 두고 천천히 수수료를 올려가요.
이런 설정들을 조정할 수 있어요:
sweeper.nodeadlineconftarget
: 긴급하지 않은 거래의 목표 확인 시간 (기본값 1008블록, 약 1주일)sweeper.budget.tolocal
: 내 자금 회수 거래에 쓸 최대 수수료sweeper.maxfeerate
: 아무리 급해도 이 이상은 안 쓴다는 상한선
Taproot Assets 특별 처리
Taproot Assets를 사용할 때는 추가 고려사항이 있어요. 일반 비트코인 거래와 달리 여러 개의 출력이 생길 수 있어요.
쉽게 설명하면, 일반 거래가 천원짜리 한 장으로 거스름돈을 주는 거라면, Taproot Assets 거래는 오백원 두 개로 나눠서 줄 수도 있는 거예요. 이렇게 되면 거래 데이터가 커지고 수수료도 더 필요해요.
LND는 이런 상황을 미리 계산해서 정확한 수수료를 책정해요. 실제 거래 무게를 정확히 측정하고, 그에 맞는 수수료를 계산하는 거죠.
실전에서 적용하기
만약 여러분이 라이트닝 노드를 운영한다면 이렇게 설정하세요:
먼저 현재 네트워크 상황을 파악해요. 멤풀이 붐비는지, 수수료 시장이 어떤지 확인한 다음 적절한 값을 설정해요.
일반적인 권장값:
- 긴급하지 않은 거래: 1주일 정도 여유를 두고 천천히
- HTLC 거래: 타임락에 맞춰 빠르게 처리
- 최대 수수료율: 1000-2000 sat/vbyte 정도로 제한
RPC 명령으로 특정 거래의 수수료를 직접 조절할 수도 있어요. BumpFee 명령을 사용하면 막힌 거래의 수수료를 수동으로 올릴 수 있어요.
이제 ErrMinRelayFeeNotMet 오류를 만나도 당황하지 마세요. LND가 알아서 처리하도록 두거나, 필요하면 직접 수수료를 조절하면 돼요. 물론 처음부터 적절한 수수료를 설정하는 게 제일 좋겠지만요.
Disclaimer: 본 글은 블록체인 및 분산원장 기술에 관한 일반적인 정보 제공을 목적으로 작성된 것입니다. 투자, 매수, 매도를 포함한 어떠한 금융적 의사결정에 대한 권유나 조언이 아니며, 글의 내용은 개인적인 견해일 뿐 법적·재정적 자문을 대신하지 않습니다. 암호화폐 및 디지털 자산에 대한 투자는 본인의 책임하에 신중히 판단하시기 바랍니다.