용어집 / 라이트닝과 레이어 2
셧다운 스크립트
- 셧다운 스크립트란 무엇입니까?
- 셧다운 스크립트는 채널이 협력적으로 폐쇄될 때 라이트닝 잔액이 지급되는 온체인 주소로, BOLT 2의 shutdown 메시지에 원시 scriptpubkey로 명시됩니다.
폐쇄 중인 채널의 각 측은 자신의 목적지를 명시하며, 폐쇄 트랜잭션이 그곳에서 두 측 모두에게 지급합니다. BOLT 2는 해당 메시지에 유형 38을 부여하고, 피어가 기능 비트 26과 27을 협상하지 않은 한 위트니스 버전 0 스크립트만 허용합니다. 라이트닝 자금을 콜드 스토리지로 되돌리려는 사람은 폐쇄한 뒤가 아니라 폐쇄하기 전에 그 목적지를 확인해야 합니다.
작동 방식
셧다운 스크립트는 유형 38의 BOLT 2 메시지 안에서 이동하며, 이 메시지는 채널 ID, 2바이트 길이, 그리고 스크립트 바이트 자체를 담습니다.
두 피어 중 어느 쪽이든 이 메시지를 보낼 수 있으며, 미처리 업데이트가 없어지면 상대방은 자신의 shutdown으로 응답해야 합니다. 그 시점부터 채널은 폐쇄 절차에 들어가므로, shutdown 뒤에는 update_add_htlc가 이어질 수 없고, 노드는 그 이후 도착하는 HTLC의 라우팅을 거부해야 합니다. 이 메시지는 channel_ready 이전에 보낼 수 있으므로, 자금 조달 트랜잭션이 아직 확정 중인 채널도 일찍 포기할 수 있습니다.
명세는 스크립트가 무엇이 될 수 있는지에 대해 엄격합니다. 항상 합법인 형태는 두 가지입니다. OP_0에 20바이트 푸시를 붙인 것, 즉 pay to witness public key hash 출력이거나, OP_0에 32바이트 푸시를 붙인 것, 즉 pay to witness script hash입니다. 위트니스 버전 1부터 16까지에 2바이트에서 40바이트까지의 푸시를 붙인 형태는 option_shutdown_anysegwit, 즉 기능 비트 26과 27이 협상된 경우에만 합법이므로, Taproot 지급은 피어가 이를 지원하는지에 달려 있습니다. 세 번째 형태는 option_simple_close, 비트 60과 61과 함께 등장했습니다. OP_RETURN에 6바이트에서 75바이트까지의 푸시를 붙인 것, 또는 76바이트에서 80바이트까지를 위한 OP_PUSHDATA1 변형이며, 상한은 OP_RETURN 스크립트가 비트코인에서 83바이트까지만 표준이라는 데서 나옵니다. 이 형태는 자신의 몫이 출력을 만들 만한 가치가 없을 만큼 작을 때 존재하며, 그때 금액은 0이어야 하므로 해당 몫은 수수료로 채굴업자에게 갑니다.
노드는 채널이 열릴 때 open_channel과 accept_channel의 upfront_shutdown_script TLV 레코드, 유형 0, 기능 비트 4와 5에서 목적지를 미리 고정할 수도 있습니다. 두 피어가 모두 이를 알렸고 길이가 0이 아닌 스크립트가 주어졌다면, 이후에 다른 것을 명시하는 shutdown은 연결을 실패시켜야 합니다. BOLT 2는 그것이 무엇을 얻어 주는지에 대해 솔직합니다. 즉 이 사전 약정을 "a weak commitment (a malevolent implementation tends to ignore specifications like this one!)"라고 부르며 점진적인 개선의 가치가 있다고 봅니다. 나중에 목적지를 바꾸려면 피어의 협조가 필요하기 때문입니다.
확인할 수 있는 곳
셧다운 스크립트는 채널을 소유한 쪽의 것이며, 그 소유자가 항상 본인은 아닙니다.
이 사이트에 등재된 41개 지갑 가운데, 평점 4.0인 Phoenix는 휴대폰에서 실제 자체 완결형 라이트닝 노드를 실행하며, 평점 2.7이고 수탁형 모드 때문에 주의 표시가 붙은 Wallet of Satoshi와 비교해 보십시오. Phoenix의 채널은 사용자의 것이므로, 협력적 폐쇄 시 사용자가 관리하는 주소가 shutdown 메시지에 들어갑니다. 미국과 유럽연합에서 철수한 Wallet of Satoshi의 수탁형 모드에서는 채널이 회사의 것이고, 스크립트는 회사의 주소를 명시하며, 사용자가 보유한 것은 키가 아니라 청구권입니다.
두 번째로 드러나는 곳은 조용히 실패하는 폐쇄입니다. 오래된 노드는 여전히 segwit이 아닌 셧다운 스크립트를 보낼 수 있으며, BOLT 2는 segwit이 아닌 출력이 546사토시 미만인 폐쇄 트랜잭션, 즉 dust_limit_satoshis가 더 낮게 설정된 경우에 가능한 트랜잭션은 채굴업자에게 결코 도달하지 못할 가능성이 크다고 지적합니다. 자금이 위험에 처하지는 않지만, 채널을 정산하는 대신 강제 폐쇄해야 합니다. option_simple_close에서는 새로운 closing_complete가 이전 것을 무효화하므로, 사전 방식 변형이 채널 개설 시 목적지를 고정하지 않았다면 수수료와 출력 스크립트를 모두 수정할 수 있습니다.
셧다운 스크립트 vs 강제 폐쇄
셧다운 스크립트는 협력적 폐쇄에서만 자금이 어디로 가는지 결정합니다.
강제 폐쇄는 협상을 건너뜁니다. 사용자는 최신 커밋먼트 트랜잭션을 브로드캐스트하며, 그 출력은 사용자가 지정한 주소가 아니라 채널 개설 시 교환된 베이스포인트에서 파생된 키로 지급됩니다. 신중하게 설정한 스크립트는 피어의 허가가 필요 없는 유일한 출금 경로에는 아무런 영향을 주지 않습니다. 의도한 폐쇄를 위해 스크립트를 설정하고, 의도하지 않은 폐쇄를 위해 채널 백업을 보관하십시오.