용어집 / 라이트닝과 레이어 2
협력적 폐쇄
- 협력적 폐쇄란 무엇입니까?
- 협력적 폐쇄는 합의로 라이트닝 채널을 종료하는 방식입니다. 양쪽 상대방이 각자의 최종 잔액을 지급하는 트랜잭션 1건에 서명하며, 지연도 없고 페널티 위험도 없습니다.
협력적 폐쇄는 두 가지에 대한 짧은 협상입니다. 각자 어디로 지급받을지, 그리고 채굴 수수료를 누가 낼지입니다. 최신 경로는 메시지 유형 3개를 사용합니다. 먼저 유형 38의 shutdown을 보내고, 이어서 option_simple_close 규칙에 따라 유형 40의 closing_complete와 유형 41의 closing_sig를 보냅니다. 잔액은 폐쇄 트랜잭션이 확인되는 즉시 대기 기간 없이 일반적인 사용 가능한 출력으로 도착합니다.
작동 방식
협력적 폐쇄는 두 단계로 진행되며, 첫 단계는 멈추겠다는 약속입니다.
어느 쪽 상대방이든 유형 38의 shutdown을 보내며 시작하고, 지급금을 받을 scriptpubkey를 지정합니다. 발신자는 그 뒤로 새 HTLC를 추가할 수 없으며, 다른 쪽은 대기 중인 것이 남지 않게 되면 반드시 자신의 shutdown으로 응답해야 합니다. BOLT 2는 그 스크립트를 네트워크가 중계할 형태로 제한합니다. OP_0 뒤에 오는 20 또는 32바이트 푸시이거나, option_shutdown_anysegwit가 협상된 경우 OP_1부터 OP_16까지 뒤에 2~40바이트 푸시가 오는 형태입니다.
두 번째 단계는 양쪽 커밋먼트에 HTLC가 더 이상 남지 않으면 시작됩니다. option_simple_close, 즉 BOLT 9의 기능 비트 60과 61 아래에서 각 상대방은 자신의 폐쇄 트랜잭션 버전을 만들고 수수료 전액을 자기 잔액에서 빼며 유형 40의 closing_complete를 보냅니다. 다른 쪽은 받은 것에 서명하고 유형 41의 closing_sig를 돌려줍니다. 제안하는 쪽이 지불하므로 수수료 수준을 두고 다툴 여지가 없으며, BOLT 2는 이를 설계의 요점이라고 밝힙니다. 더 높은 수수료로 closing_complete를 다시 보내는 것이 폐쇄 수수료를 올리는 방법이며, BOLT 3은 그 트랜잭션에 입력 시퀀스 0xFFFFFFFD를 부여하는데, 명세는 이를 이전 시도의 RBF라고 부릅니다.
레거시 경로인 유형 39의 closing_signed도 명세에 여전히 남아 있습니다. 여기서는 자금 제공자가 수수료와 함께 min_fee_satoshis와 max_fee_satoshis로 이루어진 fee_range를 지정하고 자금 비제공자가 그 안에서 숫자를 고르며, 같은 값을 고르면 메시지 2개로, 아니면 3개로 마무리됩니다. 범위가 없으면 각 응답은 반드시 직전 두 제안 사이에 엄격히 들어가야 하므로 양쪽은 1사토시씩 좁혀 갑니다.
확인할 수 있는 곳
협력적 폐쇄는 지갑에서 폐쇄를 누르고 상대방이 응답할 때 일어나는 일입니다. 트랜잭션 1건이며 그 뒤에 대기 중인 잔액이 없습니다.
BOLT 2에는 자체 단계별 예시가 있습니다. A와 B가 shutdown 스크립트를 교환하고, 대기 중인 HTLC가 끝나면, A가 수수료로 1,000사토시를 지불하겠다고 제안하고 B는 독자적으로 750을 제안합니다. 각자는 상대의 버전에 서명합니다. 이후 A는 지급 스크립트를 바꾸어 1,100사토시로 다시 보내고, B는 자신의 시도를 850으로 올립니다.
규칙이 실제로 문제가 되는 곳은 작은 채널입니다. 돈이 적은 쪽은 자신의 출력을 생략할 수 있으며, 금액이 더스트가 되면 반드시 생략해야 합니다. 수수료 때문에 양쪽 출력이 모두 더스트가 되면, 폐쇄하는 쪽은 주소 대신 OP_RETURN 스크립트를 보낼 수 있고 그 출력 값은 0으로 설정되어 그쪽 자금은 수수료로 가고 트랜잭션은 여전히 중계됩니다. 명세는 세그윗이 아닌 스크립트로 지급되는 546사토시 미만의 출력은 채굴업자에게 도달하지 못할 수 있으며, 그런 채널은 대신 강제 폐쇄해야 한다고 경고합니다.
협력적 폐쇄 vs 강제 폐쇄
협력적 폐쇄와 강제 폐쇄는 모두 온체인 트랜잭션으로 채널을 종료하며, 차이는 누가 기다리는가입니다.
협력적 폐쇄에서는 양쪽 출력이 일반 지급이므로 각자는 첫 확인에서 사용할 수 있고 패널티 분기는 전혀 개입하지 않습니다. 강제 폐쇄는 대신 커밋먼트 트랜잭션을 공개하며, 자신의 잔액을 채널 개설 시 합의한 블록 지연 뒤에 남겨 두고 진행 중인 모든 지급에 후속 트랜잭션을 따로 붙입니다. 이 사이트의 Phoenix 리뷰는 강제 폐쇄된 자금을 되찾기까지 그 대기가 약 720블록, 약 5일이라고 밝힙니다.
협력적 폐쇄는 상대 노드가 깨어 있고 shutdown에 응답할 의사가 있어야 합니다. 강제 폐쇄가 존재하는 이유가 여기에 있으며, 연락할 수 없는 상대방은 폐쇄 수수료를 자신이 통제할 수 없는 상대방인 이유도 여기에 있습니다.