Home / Knowledge / “노인풋 클래스”: 비트코인 소프트 포크가 라이트닝을 어떻게 간소화할 수 있는지

“노인풋 클래스”: 비트코인 소프트 포크가 라이트닝을 어떻게 간소화할 수 있는지

“노인풋 클래스”: 비트코인 소프트 포크가 라이트닝을 어떻게 간소화할 수 있는지 1

“노인풋 클래스”: 비트코인 소프트 포크가 라이트닝을 어떻게 간소화할 수 있는지 2

비트코인의 라이트닝 네트워크는 빠르고 저렴한 거래를 위한 오버레이 프로토콜로, 결제 채널로 구성되어 있습니다. 이러한 결제 채널은 현재 모든 사용자가 정직하게 행동하도록 유지하기 위해 다소 복잡한 백업 메커니즘에 의존하고 있으며, 사용자에게 일정 수준의 경각심을 요구합니다.

이것은 곧 간소화될 수 있습니다.

비트코인 및 라이트닝 개발자 소수 그룹이 SIGHASH_NOINPUT(“Noinput”), SIGHASH_ANYPREVOUT(“Anyprevout”) 및 SIGHASH_ANYPREVOUTANYSCRIPT(“Anyprevoutanyscript”)와 같은 이름을 가진 새로운 “사인해시 플래그” 클래스에 대해 작업하고 있습니다. 이 중 하나 또는 여러 개가 가까운 미래에 소프트 포크 프로토콜 업그레이드로 배포되어 라이트닝 사용자 경험을 두 가지 큰 방식으로 간소화하는 데 도움을 줄 수 있습니다.

방법은 다음과 같습니다.

“Noinput 클래스”

모든 비트코인 거래는 여러 정보 조각으로 구성됩니다. 예를 들어, 여기에는 입력(코인을 “잠금 해제”하는 데이터), 출력(코인을 다시 “잠금” 해제하며, 미래에 이를 사용하기 위해 필요한 사항을 지정) 등이 포함됩니다.

또한, 적어도 하나의 암호화된 서명이 추가됩니다. 이 서명은 사용되는 코인의 공개 키(따라서 비트코인 주소)에 해당하므로, 코인 소유자가 실제로 이를 사용하고자 한다는 것을 증명합니다. 서명은 새로운 거래에 서명하여 소유자가 어떻게 코인을 사용할 것인지에 동의함을 증명합니다.

그러나 이 서명은 새로운 거래의 각 부분을 서명할 필요는 없습니다. “사인해시 플래그”를 사용하면 서명의 생성자가 서명되는 거래의 정확한 부분을 지정합니다. 예를 들어, “SIGHASH_ALL”은 대부분의 거래 데이터가 서명되었음을 나타내지만(서명 스크립트는 제외), “SIGHASH_NONE”은 입력만 서명되었음을 나타냅니다 — 출력은 서명되지 않습니다. 몇 가지 추가 사인해시 플래그가 있습니다.

이제 새로운 사인해시 플래그 클래스가 제안되고 있습니다 — Noinput, Anyprevout 및 Anyprevoutanyscript — 이 기사에서는 이를 “Noinput 클래스”라고 부르겠습니다. 이 Noinput 클래스는 출력 및 일부 다른 거래 데이터가 서명되지만 입력은 서명되지 않음을 나타냅니다. 입력을 서명하지 않음으로써, 서명된 후에도 거래를 가져와 호환 가능한 다른 입력으로 교체할 수 있습니다.

물론, 대개는 호환 가능한 다른 입력이 없을 것입니다. 서명은 여전히 특정 공개 키에 해당하며, 이 공개 키는 특정 코인과 연결되어야 합니다. 무작위 입력을 교체하는 것은 이 연결을 끊고 거래를 무효화할 것입니다.

그러나 입력 교체할 수 있는 몇 가지 예외가 있습니다.

원치 않는 시나리오

먼저, 원치 않는 시나리오입니다.

권장되지는 않지만, 동일한 비트코인 주소에서 여러 거래를 수락하는 것이 가능합니다. 동일한 공개 및 개인 키로 보호되는 동일한 주소에서 두 개의 거래를 수락하는 경우, 이는 두 개의 서로 다른 출력을 생성합니다. 이러한 두 개의 서로 다른 출력은 일반적으로 후속 거래에서 두 개의 서로 다른 입력을 통해서만 사용될 수 있습니다.

그러나 두 개의 코인 중 하나가 Noinput 서명으로 사용되면, 해당 서명은 실제로 어떤 두 출력이 사용되었는지를 지정하지 않으며, 서명은 둘 중 하나와 일치합니다: 둘 다 동일한 공개 및 개인 키로 보호됩니다. 이는 누군가가 서명된 후에도 거래를 재작성하여 다른 입력으로 교체할 수 있음을 의미하며, 따라서 다른 코인을 사용할 수 있습니다. 사실, 동일한 거래를 복사하여 재작성하여 동일한 Noinput 서명으로 두 번 방송할 수 있으며, 발신자가 단 하나만 사용하려고 했더라도 두 개의 코인을 주장할 수 있습니다!

이는 정말로 바람직하지 않으며, Noinput 클래스가 일반 지갑에서 사용되지 않도록 설계된 이유입니다.

그러나 Noinput 클래스의 바람직한 응용 프로그램도 있습니다.

엘투

새로운 사인해시 클래스의 첫 번째이자 가장 중요한 잠재적 응용 프로그램은 라이트닝 네트워크를 위한 대체 결제 채널입니다.

모든 라이트닝 채널은 실제로 두 사용자가 공유하는 주소에서 자금을 사용하는 방송되지 않은 거래일 뿐입니다. 이 사용자들은 결제가 이루어질 때마다 이 공유 주소에서 새로운 거래를 서명하고 교환하여 채널을 “업데이트”합니다. 채널의 최신 “상태” — 방송되지 않은 거래 — 만이 유일한 “실제” 거래입니다; 이전 상태를 방송하는 것은 사기입니다.

이 채널의 참가자는 현재 “벌칙 거래”를 포함하는 설정을 통해 정직하게 유지됩니다: 이전 상태를 방송하면 채널 파트너가 채널의 모든 자금을 주장하는 거래를 후속으로 진행할 수 있습니다. 이는 참가자를 정직하게 유지하는 데 충분해야 하며(대개는 그렇습니다).

문제는 이전 채널 상태를 방송하는 것이 반드시 의도적으로 이루어지는 것은 아니라는 것입니다. 소프트웨어 버그로 인해 발생할 수도 있습니다. 때때로 소프트웨어 백업이 잘못된 경우와 같은 “정직한” 실수로 인해 발생할 수 있습니다. 이러한 경우, 채널에서 모든 자금을 소진하는 것은 매우 고통스러운 처벌이며, 일부는 이를 너무 가혹하다고 생각합니다.

블록스트림의 c-lightning 개발자 크리스천 데커와 러스티 러셀, 라이트닝 랩스의 lnd 개발자 올라울와 오순토쿤이 제안한 “엘투”는 대안을 제공합니다.

엘투를 사용하면 두 결제 채널 사용자가 “업데이트 거래”라고 불리는 동일한 방송되지 않은 거래의 복사본을 보유하게 되며, 이는 채널의 자금을 나타냅니다. 이 거래는 두 사용자 모두에 의해 서명되므로, 언제든지 방송할 수 있으며 블록체인에서 확인됩니다.

누군가 거래를 방송하고 블록체인에서 확인되면, 자금은 두 가지 방법으로 사용될 수 있습니다. 첫째, 두 참가자는 타임락이 만료된 후 자신의 몫을 사용할 수 있습니다; 예를 들어, 일주일 후입니다. 또는 둘째, 자금은 즉시 더 최신의 상호 서명된 업데이트 거래로 사용될 수 있습니다. 실제로 엘투에서는 업데이트 거래가 연대순으로 번호가 매겨집니다. 업데이트 거래 3은 업데이트 거래 2의 자금을 사용할 수 있으며, 업데이트 거래 2는 업데이트 거래 1의 자금을 사용할 수 있지만 그 반대는 불가능합니다.

이는 현재 비트코인 프로토콜로도 이미 가능합니다. 그러나 업데이트 거래의 입력은 서명되어야 하므로, 특정 업데이트 거래는 이전의 특정 업데이트 거래에서 특정 출력을 참조할 수 있습니다. 업데이트 거래 3은 업데이트 거래 2의 자금을 주장할 수 있지만, 업데이트 거래 1의 자금은 주장할 수 없습니다.

이는 그리 실용적이지 않습니다. 예를 들어, 100개의 업데이트 거래가 있다고 가정하고, 이 중 첫 번째 거래가 우연히(또는 의도적으로) 방송되면, “실제” 채널 잔액은 모든 후속 업데이트 거래를 방송해야만 복원될 수 있습니다. (업데이트 거래 1은 업데이트 거래 2로, 업데이트 거래 2는 업데이트 거래 3으로, 계속해서 100까지 진행됩니다.) 이러한 거래의 연쇄는 비트코인 네트워크에 큰 부담을 줄 것입니다. 이는 많은 수수료를 요구하게 되어 결제 채널을 사용하는 본래의 목적을 무색하게 만듭니다.

따라서 엘투는 업데이트 거래를 건너뛸 수 있을 때만 유용합니다. 업데이트 거래 3은 업데이트 거래 2뿐만 아니라 업데이트 거래 1에서도 자금을 사용할 수 있어야 합니다.

이러한 건너뛰기가 Noinput 사인해시 클래스가 필요합니다. 입력을 교체함으로써, 최신 업데이트 거래는 항상 다른 업데이트 거래를 직접 참조하도록 재작성될 수 있습니다. 입력을 교체하는 것은, 이전의 업데이트 거래가 무엇이든 간에, 결제 채널에서 필요한 서명은 항상 동일한 두 사용자로부터 동일한 두 공개 및 개인 키에서 온 것이기 때문에 가능합니다.

엘투 예시

그렇다면, 엘투가 실제로 어떻게 보일지 살펴보겠습니다.

앨리스와 밥이 엘투 라이트닝 채널을 열어 두고, 채널 상태가 100번 업데이트되었다고 가정해 보겠습니다. 따라서 그들은 모두 앨리스와 밥의 공유 주소에서 자금을 사용하는 업데이트 거래 100을 보유하고 있습니다. 이는 채널의 최신 상태를 나타내며, 두 사람 모두에 의해 서명되었습니다. 앨리스나 밥은 언제든지 이 업데이트 거래를 방송할 수 있으며, 이 경우 타임락이 만료된 후, 예를 들어 일주일 후에 자금을 주장할 수 있습니다. (사실, 그들이 결제 채널을 종료할 경우, 자금을 사용하기 위해 일주일을 기다릴 필요가 없기 때문에 정기적인 “협력적” 종료를 선택할 가능성이 더 높습니다 — 하지만 지금은 이 점은 무시하겠습니다.)

이제 앨리스가 이전 채널 상태인 업데이트 거래 13을 우연히 방송하고, 이 거래가 비트코인 블록체인에서 확인되면, 자금은 또한 일주일 동안 타임락됩니다. 이 일주일 동안, 밥은 업데이트 거래 100을 가져와 입력을 업데이트 거래 13으로 교체하도록 재작성하고 이를 방송할 수 있습니다.

비트코인 노드와 네트워크의 채굴자는 업데이트 거래 100을 보고 유효하다고 결론지을 것입니다. 이는 연대순으로 이전 업데이트 거래를 참조하며, 업데이트 거래 13의 출력에서 요구되는 대로 앨리스와 밥 모두의 유효한 서명을 포함합니다.

업데이트 거래 100이 확인되면, 두 업데이트 거래 모두 비트코인 블록체인에 포함되어 있으며, 모든 자금은 업데이트 거래 100에서 일주일 동안 대기하여 두 참가자가 자신의 몫을 주장할 수 있습니다. (앨리스와 밥은 다시 협력적 종료로 이 과정을 가속화할 수 있습니다.)

따라서 앨리스의 실수에도 불구하고, 채널은 최신 채널 상태에 따라 종료되었으며, 앨리스와 밥이 소유한 자금을 할당받았으며, 추가적인 처벌 없이 업데이트 거래 1–12 및 14–99를 방송할 필요가 없었습니다.

라이트닝 감시탑

엘투 결제 채널은 그 자체로 유용하지만, 또 다른 라이트닝 네트워크 혁신인 감시탑에도 이점이 있습니다.

사기를 피하기 위해(엘투와 관계없이), 라이트닝 사용자는 비트코인 블록체인을 추적하여 이전 채널 상태가 방송되었는지를 확인해야 합니다. 만약 그런 일이 발생하면, 그들은 응답하고 상황을 수정할 시간이 있습니다; 위의 예에서처럼 일주일입니다.

현재 엘투 없이 이 응답은 모든 자금을 채널에서 소진하고 “정직한” 사용자가 이를 주장할 수 있게 하는 벌칙 거래로 구성됩니다. 중요하게도, 채널의 모든 이전 상태는 고유한 벌칙 거래를 가지고 있습니다. 만약 결제 채널이 100번 업데이트되었다면, 두 참가자는 100개의 벌칙 거래를 보유해야 합니다: 총 200개의 벌칙 거래입니다. (이 데이터를 줄이는 방법도 있지만, 차이는 미미합니다.)

엘투를 사용하면 더 이상 필요하지 않습니다. 어떤 이전 상태가 방송되더라도, 결제 채널 사용자는 최신 채널 상태를 방송하여 이를 수정할 수 있습니다. 두 사용자는 단 하나의 업데이트 거래의 복사본만 보유하고, 필요할 경우 입력을 교체하도록 재작성할 수 있습니다.

특히 감시탑은 이로 인해 큰 혜택을 받을 수 있습니다.

감시탑은 라이트닝 네트워크에서 다른 사용자를 모니터링하는 특별한 유형의 서비스 제공업체입니다. 만약 그들이 사기 시도를 발견하면, 그들은 상황을 바로잡는 거래를 방송할 수 있습니다 — 아마도 수수료를 받고서. 감시탑의 존재는 사기를 사실상 불가능하게 만들 것입니다.

그러나 감시탑은 단 하나의 채널뿐만 아니라 수천 개 또는 수백만 개의 채널을 모니터링할 수 있습니다. 이러한 모든 채널은 자주 업데이트되며, 각 업데이트마다 두 개의 새로운 벌칙 거래가 생성됩니다. 따라서 감시탑이 보유해야 하는 특정 벌칙 거래의 수는 빠르게 증가할 수 있습니다.

엘투를 사용하면 감시탑은 각 채널에 대해 최신 백업 거래만 필요하게 됩니다 — 훨씬 더 지속 가능한 모델로, 감시탑 배포를 더 실현 가능하게 만듭니다.

Noinput 클래스 배포

현재 새로운 사인해시 플래그 클래스에 대한 두 가지 구체적인 제안이 있습니다. 첫 번째는 Noinput으로, 처음에는 조셉 푼과 타데우스 드리야가 라이트닝 네트워크 백서에서 제안했습니다. 현재 블록스트림의 c-lightning 개발자인 크리스천 데커에 의해 보다 구체적인 제안으로 초안이 작성되었으며, 비트코인 개선 제안(BIP) 118으로 공식화되었습니다. Noinput은 최근에 비트코인 코어 기여자인 안소니 타운스에 의해 Anyprevoutanyscript로 재브랜딩되었으며, Anyprevout도 제안했습니다. 이 제안 세트에 대한 BIP도 있지만, 아직 BIP 번호는 없습니다. Anyprevoutanyscript와 Anyprevout은 대부분 Noinput을 기반으로 하지만, Taproot와 호환되도록 특별히 설계되었습니다.

게다가, Anyprevout은 거래 데이터의 일부를 더 서명하고, 이 기사 처음에 설명된 바람직하지 않은 시나리오를 피하기 위한 기능을 추가합니다. 사용자의 의사에 반하여 입력이 교체되는 것을 방지하기 위해(예를 들어, 동일한 주소에서 여러 결제를 수락한 후), 이 버전의 사인해시 플래그는 입력을 서명하는 “보조 서명”이라고 불리는 추가 서명을 요구합니다. 엘투에서는 이 보조 서명이 채널 파트너 중 누구에 의해 생성될 수 있습니다. 이는 약간 더 안전하긴 하지만 — 제3자가 입력을 교체하는 것을 방지합니다 — 또한 사인해시 옵션을 더 복잡하고 수수료가 비싸게 만듭니다.

전반적으로, 이 새로운 유형의 사인해시 플래그에 대한 아이디어는 몇 년 전 이미 제시되었지만, Noinput은 실제로 약 1년 동안 진지하게 고려되었으며, Anyprevout과 Anyprevoutanyscript는 몇 달 전에만 제안되었습니다. 지금까지 이에 대한 단일 사양이 확정된 것은 없습니다. 데커, 타운스 및 다른 비트코인 및 라이트닝 기여자들은 현재 보수적인 접근 방식을 취하고 있으며, 광범위한 동료 검토와 논의의 여지를 선호하고 있습니다. 따라서 이 사인해시 클래스가 실제로 비트코인 네트워크에 배포될 시점이나 여부를 말하기에는 아직 이르지만, 결국 그 버전이 배포될 가능성이 높아 보입니다.

명확성을 위해 이 기사는 일부 구현 세부 사항을 생략하거나 단순화했습니다. 제안의 전체 사양은 NoinputAnyprevout에 대한 BIP를 참조하십시오. 정보와 피드백을 제공한 크리스천 데커와 안소니 타운스에게 감사드립니다.

관련 기사

Strive의 SATA가 하루에 예상 490 비트코인을 초과 달성 — 전체 일일 채굴 공급량보다 많음 1

Strive의 SATA, 하루에 490 비트코인 초과 달성

Strive, Inc.는 수요일에 주목할 만한 이정표를 넘어섰습니다. 회사의 시장 프로그램을 통해 약 490 비트코인을 획득한 것으로 추정되는 변동 금리 A

마이애미 IT 직원, 전 상사로부터 190만 달러 비트코인 절도 혐의로 체포 1

마이애미 비트코인 절도, IT 직원 체포

마이애미의 한 남성이 경찰에 따르면 전 직장에서 거의 200만 달러 상당의 비트코인을 훔친 혐의로 여러 중범죄 혐의에 직면해 있습니다. 이

카사, 비트코인 보유자를 겨냥한 증가하는 사회 공학 공격에 대응하기 위해 네 가지 보안 기능 출시 1

사회 공학 공격에 대응하는 카사 기능

비트코인 보안 회사 카사는 2025년 암호화폐 도난의 대부분을 차지하는 공격 벡터인 사회 공학을 겨냥한 네 가지 기능을 출시했습니다. 이 기능은

마스터카드, 디지털 자산 전략을 강화하기 위해 뉴욕 비트라이센스 확보 1

마스터카드, 비트라이센스 획득

마스터카드는 뉴욕주 금융 서비스국(NYDFS)으로부터 비트라이센스를 받았으며, 이는 이 결제 거대 기업이 미국에서 가장 엄격한 암호화 규제 프레임워크 중 하나 아래에서

크라켄, 비트코인 보관소 출시 - BTC 보유에 대한 수익 제공 1

비트코인 보관소 | 크라켄의 새로운 금융 솔루션

크라켄은 고객이 자산을 판매하지 않고도 비트코인 보유량에 대해 BTC 기준 보상을 받을 수 있는 새로운 제품인 비트코인 볼트를 크라켄 어

폴드, 비트코인 신용 카드 성장을 위한 1억 5천만 달러 유치 1

비트코인 신용 카드, Fold의 성장 동력

Fold Holdings, Inc., 최초의 상장된 비트코인 금융 서비스 회사가 Encina Lender Finance, LLC와 4년간의 고정 담보 회전 신용 시설에 진입했습니다.