라이트닝 네트워크 앵커 출력 설명: 기본 (파트 1)
Source: Dev.to
다시 찾아와 주셔서 감사합니다, 그리고 여기서 저와 함께 배우게 되어 고맙습니다.
Recap: Part 1
- Problem: 프리‑사인된 Lightning 커밋먼트 트랜잭션은 방송이 필요할 때까지 수수료가 오래될 수 있습니다.
- Solution: Anchor outputs는 나중에 CPFP (Child Pays For Parent)를 사용하여 수수료를 높일 수 있게 합니다.
Part 2에서 다룰 내용
- CPFP가 실제로 작동하는 방식 – 비트코인 프로토콜 수준의 메커니즘.
- 왜 330 sats? – “매직 넘버”에 대한 설명.
- 한‑블록 지연 (CSV) – 보안에 왜 중요한지.
- 다른 출력들은 어떻게 되는가 – 간략한 개요.
- 실제 수치를 사용한 실제 예시.
Source: …
1. CPFP 메커니즘
기본 아이디어
- 채굴자들은 수익을 최대화하려고 하므로, 각 블록을 가장 높은 수수료가 붙은 트랜잭션으로 채웁니다.
- 그들은 트랜잭션 패키지(부모 + 자식)를 고려하고 합산 수수료율을 계산합니다.
실제 숫자를 이용한 예시
| 트랜잭션 | 크기 (vbytes) | 수수료 (sats) | 수수료율 (sat/vbyte) |
|---|---|---|---|
| Parent (귀하의 커밋 TX) | 200 | 200 | 1 sat/vbyte ❌ 너무 낮음 |
| Child (330‑sat 앵커를 사용) | 150 | 120 000 | — |
| 전체 패키지 | 350 | 120 530 | 344 sat/vbyte ✅ |
- 자식 트랜잭션은 부모가 확정될 때까지 확정될 수 없습니다(부모의 출력에서 자금을 사용하기 때문).
- 채굴자는 둘 다 포함하거나 전혀 포함하지 않아야 하므로, 자식의 높은 수수료가 부모를 블록에 끌어들입니다.
2. 왜 330 sats인가?
- Dust limit(먼지 제한) – 비트코인은 경제적으로 너무 작은 출력은 거부합니다.
- 표준 먼지 제한 ≈ 546 sats.
- Anchor‑output 스크립트 – 더 낮은 먼지 제한인 330 sats를 가진 특수 스크립트 유형으로, 먼지로 간주되지 않는 가장 작은 사용 가능한 출력입니다.
- 합의 – 주요 라이트닝 구현체(LND, Core Lightning, Eclair, LDK) 모두 BOLT 사양에서 330 sats를 채택하여 호환성을 보장합니다.
왜 이 숫자가 “딱 맞는가”
- 충분히 작음: 채널 용량을 낭비하지 않음.
- 충분히 큼: 유효한 출력으로 인식되고 작은 child 트랜잭션 비용을 충당할 수 있음.
아래 예시는 원본 초안에서 생략되었습니다; 필요에 따라 누락된 값을 채워 넣으세요.
당신은 라이트닝 채널을 가지고 있습니다:
- 당신의 잔액: 5,0… (값은 원본 텍스트에 계속됩니다)
(예시를 보여주고 싶은 실제 숫자로 진행을 계속하세요.)
TL;DR
- CPFP는 채굴자들이 부모 + 자식 패키지의 통합 수수료율을 평가하기 때문에 작동합니다.
- 330 sats는 앵커용으로 가장 작은 비먼지 사용 가능한 출력이며, 구현체 전반에 걸쳐 표준화되었습니다.
- 모든 비앵커 출력에 1‑블록 CSV 잠금을 적용하면 적대적인 “핀닝” 공격을 방지하고 수수료 인상을 위한 안전한 시간을 제공합니다.
- 앵커 출력만 즉시 사용 가능하고, 나머지는 보안을 위해 한 블록 지연됩니다.
채널 개요
| 항목 | 금액 (sats) | 금액 (BTC) |
|---|---|---|
| 귀하의 잔액 | 5,000,000 | 0.05 BTC |
| 파트너 잔액 | 3,000,000 | 0.03 BTC |
| 귀하의 앵커 | 330 | – |
| 파트너 앵커 | 330 | – |
| 총 채널 용량 | 8,000,660 | – |
파트너가 오프라인 상태가 되므로, 자금을 회수하기 위해 강제 종료해야 합니다.
1️⃣ 메모풀 수수료 시장 확인
- 현재 수수료율:
250 sats/vbyte(높은 혼잡도) - 커밋트랜잭션 크기:
220 vbytes - 확인에 필요한 수수료:
220 × 250 = 55,000 sats
문제: 사전에 서명된 커밋트랜잭션에 포함된 수수료가
440 sat에 불과합니다 (≈ 2 sats/vbyte). 현재 시장 요율로는 며칠 또는 몇 주 동안 메모풀에 머무를 것입니다.
2️⃣ 커밋먼트 트랜잭션 전송
- 지불된 수수료:
440 sats(너무 낮음) - 상태: 미확인, 메모풀에 머물고 있음
3️⃣ CPFP 자식 트랜잭션 만들기
| 매개변수 | 값 |
|---|---|
| Spends | 귀하의 330‑sat 앵커 출력 |
| Adds inputs | 60,000 sats 귀하의 온체인 지갑에서 |
| Creates output | 귀하의 지갑으로 전송 |
| Size | 180 vbytes |
| Fee | 54,560 sats (자식) + 330 sats (앵커) = 54,890 sats |
3.1 패키지 수수료율 계산 (부모 + 자식)
- 부모 크기:
220 vbytes - 자식 크기:
180 vbytes - 전체 크기:
400 vbytes
| 구성 요소 | 수수료 (sats) |
|---|---|
| 부모 | 440 |
| 자식 | 54,890 |
| 총합 | 55,330 |
- 패키지 비율:
55,330 ÷ 400 ≈ 138 sats/vbyte
이는 여전히 요구되는 250 sats/vbyte보다 낮습니다.
4️⃣ 시장 가격에 맞게 자식 수수료 재계산
- 목표 총 수수료:
400 vbytes × 250 sats/vbyte = 100,000 sats - 부모가 이미 지불함:
440 sats - 자식이 지불해야 함:
100,000 – 440 = 99,560 sats
99,560 sat 수수료로 자식 트랜잭션을 생성합니다.
4.1 Final package
| Item | Fee (sats) |
|---|---|
| Parent | 440 |
| Child | 99,560 |
| Total | 100,000 |
- Package rate:
100,000 ÷ 400 = 250 sats/vbyte✅
5️⃣ 확인 및 비용 요약
- 총 온‑체인 비용:
100,000 sats≈ $130 USD (BTC당 $65 k 기준) - 보장된 자금:
5,000,000 sats(0.05 BTC ≈ $3,250 USD)
결과: 수수료를 지불하는 것이 자금을 회수하는 데 가치가 있습니다.
6️⃣ 수수료 시나리오 (예시)
| 수수료 비율 (sats/vbyte) | 부모 수수료 (220 vbytes) | 자식 수수료 (180 vbytes) | 총 비용 (USD) |
|---|---|---|---|
| 5 | 1,100 sats (~$1.43) | 900 sats (~$1.17) | ≈ $2.60 ✅ |
| 200 | 44,000 sats (~$57) | 36,000 sats (~$47) | ≈ $104 ⚠️ |
| 500 | 110,000 sats (~$143) | 90,000 sats (~$117) | ≈ $260 💀 |
수수료가 높은 시기에 강제 종료하면 비용이 많이 들 수 있기 때문에, 라이트닝은 협력적인 종료를 권장합니다.
7️⃣ 왜 앵커 출력이 중요한가
- 앵커가 없으면 수수료 급등 시 채널을 닫을 수 없게 될 수 있습니다(부모 트랜잭션이 절대 확인되지 않음).
- 앵커가 있으면 CPFP를 통해 수수료를 추가할 옵션이 생겨, 자금을 회수할 경로를 확보할 수 있습니다.
일반적인 Q&A
| Question | Answer |
|---|---|
| Can I spend an anchor output more than once? | No. Once an anchor is spent in a child transaction, it cannot be spent again. If that child still doesn’t confirm, you must create another child (a “grandchild”) that spends the first child – this is CPFP chaining. |
| Do both parties have separate anchors? | Yes. Each side can create its own child transaction. Whichever child confirms first will pull the parent through, so either party can ensure confirmation. |
| What about the balance output? | It has a 1‑block CSV lock. You must wait one block after the commitment transaction confirms before you can spend the balance output. Anchors can be spent immediately. |
| Can I use RBF to bump the fee? | Not reliably. RBF requires cooperation from the other party (unlikely in a force‑close) and is vulnerable to pinning attacks. CPFP with anchors is the preferred method. |
8️⃣ 핵심 정리
- CPFP 메커니즘: 채굴자들은 부모 + 자식의 통합 수수료 비율을 평가하여 두 트랜잭션을 모두 확인하도록 유도합니다.
- 330 sats 앵커: 최소 비더스트 사용 가능 금액으로, 라이트닝 구현 전반에 걸쳐 표준화되었습니다.
- CSV 락: 잔액 출력에 1블록 지연을 두어 트랜잭션 고정 공격을 방지하고 수수료 상승을 위한 명확한 시간을 제공합니다.
- 비용 스펙트럼: 평상시에는 몇 달러 수준에서, 극심한 혼잡 시에는 수백 달러까지 – 그래도 정체되는 것보다 저렴합니다.
- 경제적 인센티브: 높은 강제 종료 비용이 사용자를 협력적인 종료와 신뢰할 수 있는 채널 파트너로 유도합니다.
9️⃣ 다음은? (Part 3 – 실용 가이드)
- 노드가 앵커 출력(anchor outputs)을 지원하는지 확인 (LND, Core Lightning, Eclair).
- 각 구현에서 앵커 출력 활성화/비활성화.
- 자금 예약: 비상 수수료 상승을 위해 보관할 온‑체인 비트코인 양.
- 앵커 출력 및 수수료 상승을 모니터링하는 도구 및 명령.
- 강제 종료(force‑close)가 발생했을 때 단계별(step‑by‑step) 조치.
우리는 “앵커 출력이란 무엇인가?”(Part 1) → “어떻게 작동하는가?”(Part 2) → 실제 사용(Part 3) 순으로 진행했습니다.
Part 2에서 이해가 어려운 부분이 있으면 알려 주세요—여러분의 피드백이 설명을 개선하는 데 큰 도움이 됩니다.
Part 3에서 뵙겠습니다!
CSV Lock (1‑Block Delay) on Balance Outputs Prevents Transaction Pinning Attacks
- Only anchors can be spent immediately; all other outputs must wait 1 block.
- Real costs vary from $3 to $200+ depending on network congestion.
Coming Next (Part 3)
- Practical setup
- Implementation guides
- Reserve‑fund management
If you have any questions or feedback, drop them in the comments.