MSTR Cat

블록체인/레벨 IV · 프로토콜 심화/4.1 Script/수업 5

해시락과 HTLC

모든 것을 열어주는 비밀과, 그것이 영원히 사라지는 것을 막아주는 타이머

준비물SHA-256을 지원하는 모든 텍스트 편집기나 명령줄블록 탐색기(예: mempool.space)푼과 드리자가 쓴 라이트닝 네트워크 백서

호기심

  1. 단 한 사람만 아는 비밀에 결제를 잠그면서도, 그 사람이 다른 누구도 신뢰할 필요가 없게 하려면 어떻게 해야 할까요?
  2. 자신의 돈을 찾기 위해 비밀을 공개하면 그 비밀이 네트워크 전체에 드러나는데, 다른 사람이 먼저 그 돈을 가로채는 것을 무엇이 막을까요?
  3. 다중 노드 결제 경로의 각 홉에는 왜 조금씩 다른 기한이 필요할까요?

탐구

  1. 해시락은 특정 데이터인 프리이미지가 공개될 때까지 지출을 제한하는 비트코인 스크립트의 조건입니다. 코인들은 해시 뒤에 잠겨 있으며, 이 해시는 보통 비밀을 가진 사람이 제공합니다. 여기서 중요한 점은, 누군가 자신의 자금을 찾기 위해 프리이미지를 공개할 경우, 그 정보는 요청을 본 모든 사람에게 공개된다는 것입니다. 온체인 상에서는 모든 사람에게, 라이트닝 채널 내에서는 상대방에게 공개됩니다.
  2. 이렇게 공개되면 같은 해시로 잠긴 출력을 가진 다른 당사자들도 그것을 지출할 수 있게 됩니다. 라이트닝 네트워크에서는 최종 수신자(찰리)가 밥에게서 결제를 받기 위해 비밀을 공개하면, 그 같은 비밀로 앨리스가 밥을 위해 잠가 둔 출력도 열린다는 뜻입니다. 이 메커니즘은 원자성을 가능하게 합니다. 모두가 지불받거나, 아무도 받지 못하거나 둘 중 하나입니다.
  3. 하지만 순수한 해시락에는 결함이 있습니다. 찰리가 사라져 프리이미지를 끝내 공개하지 않으면 자금이 영원히 묶입니다. 여기에 타임락을 더하면 해시 타임락 계약(HTLC)이 됩니다. 이제 밥이 제공하는 마지막 홉의 스크립트는 이렇게 규정합니다. ‘찰리는 기한 T 전에 프리이미지를 공개해 이 코인을 가져갈 수 있다. 또는 T가 지나면 밥이 이를 되찾을 수 있다.’
  4. 이 이중 경로 로직이 신뢰 없는 작동을 보장합니다. 결제가 성공하면 찰리가 타임아웃 기간 안에 비밀을 공개하고, 이것이 밥에서 앨리스로 거슬러 올라가는 연쇄적인 청구를 촉발합니다. 결제가 실패하거나 찰리가 오프라인이 되면 각 HTLC가 타임아웃되고, 그 HTLC를 제공한 쪽(찰리에게서는 밥, 밥에게서는 앨리스)이 스크립트의 타임아웃 분기를 통해 자금을 회수합니다.
  5. 이 공정성 프로토콜 덕분에 멀티홉 라우팅이 가능해집니다. 경로상의 각 HTLC는, 해당 HTLC를 보유한 노드가 하류의 다음 노드에 제공하는 HTLC보다 약간 더 긴 타임아웃 값을 가집니다. 이러한 차이 덕분에 각 중간 노드는 보호받을 수 있습니다. 만약 하류의 피어가 마지막 순간에 프리이미지를 제시한다 해도, 중간 노드는 자신이 받은 HTLC가 환불되기 전에 그 프리이미지를 상류 쪽에서 사용할 시간을 가질 수 있습니다.
  6. 스크립트 퍼즐은 복잡할 수 있지만, HTLC 같은 실제 계약에는 해시락과 타임락 외에 항상 서명 검증이 함께 들어갑니다. 이렇게 하면 해답이 특정 당사자에게 묶이고, 채굴자의 프런트러닝, 즉 채굴자가 멤풀에서 유효한 프리이미지를 보고 컨펌 전에 지급금을 자신에게 돌리는 행위를 막을 수 있습니다.

핵심 사실

  • 해시락은 특정 데이터(프리이미지)가 공개될 때까지 지출을 제한합니다.
  • 특정 해시를 사용하는 해시락 중 하나가 열리면, 드러난 프리이미지로 같은 해시를 사용하는 다른 모든 해시락도 지출할 수 있게 됩니다.
  • HTLC는 해시락과 타임락을 결합해, 수신자가 기한 전에 지출하도록 하고 그렇지 않으면 발신자가 환불받을 수 있게 합니다.
  • HTLC는 라이트닝 네트워크의 커밋먼트 트랜잭션에서 원자성을 갖춘 신뢰 없는 멀티홉 라우팅을 가능하게 하는 데 사용됩니다.
  • 스크립트는 해시락을 위해 OP_SHA256과 OP_HASH160을 제공하며, 라이트닝은 SHA-256 결제 해시를 사용합니다.
  • 티어 놀란은 2013년에 이 해시락 메커니즘을 활용한 크로스체인 아토믹 스왑을 제안했습니다.

연습 아홉, 여섯, 셋, 하나

9모으기하나의 행동이 비밀을 드러내고, 그 비밀이 다른 여러 행동을 가능하게 하는 실제 또는 암호학적 상황 9가지를 나열하세요(예: 금고 열기, 작업증명(PoW) 공개).
6묶기9개를 비밀이 보호되는 방식에 따라 6개 그룹으로 묶으세요: 단일 소유자, 다중 소유자, 시간 제한, 공간 제한, 공개되지만 비용이 큼, 되돌릴 수 없음.
3추리기6개를 서로 모르는 당사자들 사이의 신뢰 없는(trustless) 협력을 가능하게 하는 3가지 핵심 메커니즘으로 줄이세요.
1결정화해시는 왜 커밋먼트이고 프리이미지는 왜 키인지, 그리고 타이머가 어떻게 이들을 안전하게 만드는지 한 문장으로 쓰세요.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS