Spacechains: 이 새로운 Bitcoin 사이드체인 제안이 작동하는 방식

소스 노드 : 1544330

Spacechains는 블라인드 병합 광산 설계를 활용하는 단방향 페그 메커니즘을 제공하는 제안된 비트코인 ​​사이드체인입니다.

비트코인을 위한 확장 및 기능 확장 메커니즘으로서의 사이드체인이라는 개념은 아주 오래된 개념입니다. 사이드체인에 대한 일종의 기본 "조상" 개념, 채굴된 체인 병합, 심지어 사토시가 사라지기 전으로 돌아간다.

그 제안은 단순히 두 개의 완전히 분리되고 관련이 없는 체인이 체인 간에 아무 것도 이동할 수 없는 동일한 광부 그룹에 의해 채굴된다는 아이디어였습니다. 그만큼 원래 사이드체인 제안 2014년에는 논문이 출판된 지 약 XNUMX주일 만에 Blockstream을 문자 그대로 발견한 많은 사람들이 만들었습니다. 기본 아이디어는 한 체인에서 다른 체인으로 코인을 보낼 때 사물이 유효한지 증명하기 위해 SPV(간단한 지불 확인) 증명을 사용하여 메인 비트코인 ​​블록체인과 다른 사이드체인 사이에서 코인을 앞뒤로 이동할 수 있도록 하는 것이었습니다. 이것은 체인 재구성과 관련된 구현의 복잡성, 도난 가능성 및 광산 중앙 집중화의 위험으로 인해 결코 결실을 맺지 못했습니다(모두 섹션 XNUMX에서 읽을 수 있습니다. Bitcoin 백서).

사이드체인에 대한 페그 메커니즘은 단방향 및 양방향의 두 가지 종류가 있습니다. 의미는 분명해야 합니다. 양방향 페그에서 코인은 상위 체인과 사이드체인 사이를 앞뒤로 이동할 수 있고, 단방향 페그에서는 상위 체인에서 사이드체인으로만 이동할 수 있고 결코 뒤로 이동할 수 없습니다. 현재 비트코인에 구현된 양방향 사이드체인 페그의 유일한 형태는 연합 합의를 통한 것입니다. 즉, 페그는 철회될 때까지 다중서명 지갑의 사이드체인에 페그된 자금의 통제를 유지하는 신뢰할 수 있는 "보관자" 세트에 의해 보장됩니다.

그러나 사람들은 연합되지 않은 사이드체인 페그에 대한 다른 디자인 작업을 계속했습니다. 여기에서는 Ruben Somsen의 Spacechain 제안을 한 예로 살펴보겠습니다. 블라인드 병합 광산 설계를 사용하는 단방향 페그 메커니즘입니다. 폴 슈토르크'에스. 이것은 코인이 사이드체인에만 들어갈 수 있고 절대 떠나지 않을 수 있으며, 채굴자가 사이드체인 채굴에 대한 보상을 받기 위해 새로운 소프트웨어를 실행할 필요가 없다는 것을 의미합니다.

우주 사슬 제안

병합 마이닝은 채굴자가 비트코인 ​​체인과 채굴 중인 다른 체인의 노드를 실행해야 두 체인의 블록을 컴파일하고 채굴 중인 비트코인 ​​블록 헤더에 커밋합니다. 블라인드 병합 채굴은 실제로 비트코인 ​​채굴자가 자신의 비트코인 ​​블록에 커밋할 다른 체인의 블록 헤더만 있으면 되며, 다른 사람이 실제로 다른 체인에 대한 블록을 모으는 데 어려움을 겪을 수 있다는 사실을 이용합니다.

이에 대해 Somsen이 제안한 메커니즘은 다음을 활용할 수 있습니다. 이전에 (APO) 비트코인 ​​메인 체인 블록당 하나의 블록만 커밋할 수 있도록 보장하면서 누구나 다음 사이드체인 블록을 구성하기 위해 경쟁할 수 있도록 공개 경쟁을 허용합니다. Ruben 제안의 또 다른 이점은 스페이스체인 배포 가능성을 활성화하기 위해 특정 소프트 포크가 필요하지 않다는 것입니다. Eltoo/ANYPREVOUT은 라이트닝 네트워크의 이점을 위해 제안되어 유연한 상태 체인과 채널 팩토리를 가능하게 합니다. Spacechains는 ANYPREVOUT을 가능하게 하는 많은 것들의 또 다른 가능성일 뿐입니다.

그의 블라인드 병합 마이닝 제안의 일반적인 아이디어는 APO를 사용하여 동일한 초기 UTXO를 입력하고 항상 다시 생성하도록 커밋하는 긴 트랜잭션 집합을 미리 정의할 수 있다는 것입니다. 따라서 사전 생성된 각 트랜잭션이 확인될 때 동일한 UTXO가 출력으로 다시 생성되도록 보장하는 단일 사토시 UTXO를 상상해 보십시오. 일종의 마커라고 생각하면 이 특별한 UTXO는 메인 비트코인 ​​블록체인을 보는 모든 사람이 "여기가 사이드체인 X의 블록에 대한 약속을 찾는 곳입니다"라는 것을 알 수 있게 해주는 식별자입니다. 이것은 하나의 문제를 남깁니다: 광부 수수료. 해당 UTXO를 동일한 금액으로 다시 만들어야 하는 경우 수수료를 지불할 자금이 없습니다.

활용하여 해결할 수 있습니다. 한숨_싱글 (입력의 서명은 해당 단일 입력 및 해당 출력에만 서명함) 및 SIGHASH_ANYONECANPAY 가능 (시그니처를 무효화하지 않기 위해 SIGHASH_SINGLE을 사용하는 입출력이 그대로 남아 있는 한 서명 무효화 없이 자유롭게 입력과 출력을 추가할 수 있습니다.) 그러면 누구나 입력을 추가하고 출력을 변경하여 거래에 대한 광부 수수료를 지불할 수 있습니다.

이것은 사이드체인 블록의 블록 헤더에 커밋하는 데 사용되는 메커니즘이기도 합니다. Taproot가 트리의 Merkle 루트로 일반 공개 키를 조정하여 다양한 지출 조건의 트리에 커밋하는 것과 같은 방식으로, 누구나 사이드체인 블록의 블록 헤더 해시로 일반 공개 키를 조정할 수 있습니다. 그런 다음 사이드체인 노드는 해당 블록 헤더를 공개하고 메인 체인의 트랜잭션에 대한 포인터로 릴레이하여 실제로 채굴되었음을 증명할 수 있습니다. 거기에서 사이드체인 노드는 사이드체인 블록이 적절한 합의 규칙을 따르고 있는지 확인하기 위해 모든 일반적인 유효성 검사를 수행하고 메인 체인에서와 같이 사이드체인 네트워크 전체에 실제 블록을 릴레이합니다.

메인 체인의 사이드체인 블록에 커밋하는 데 사용된 트랜잭션 중 하나가 유효하지 않은 블록에 커밋하거나 데이터가 완전히 쓰레기인 경우 사이드체인 노드가 체인에 사용된 커밋 트랜잭션을 볼 때 두 가지 일이 발생할 수 있습니다. 하나, 유효하지 않은 블록은 사이드체인 네트워크 전체에 전파되며 유효성 검사를 통과하지 못하면 고아가 됩니다. 또는 두 번째, 데이터가 절대 공개되지 않습니다. 이 경우 다음 사이드체인 블록이 실제로 공개된 마지막 블록 위에 구축되고 커밋되며, 공개되지 않은 커밋은 무시됩니다. 이 두 번째 가능성은 메인 체인과 같은 종류의 가장 긴 체인 논리를 따르므로 나중에 무언가가 공개되더라도 이를 기반으로 하지 않은 미래 블록으로 인해 여전히 고아가 됩니다.

하지만 여전히 이중 지출의 문제가 있습니다. 마커 UTXO를 생성하는 데 사용된 개인 키를 가진 사람은 사이드체인 블록에 커밋하는 데 사용되는 사전 정의된 트랜잭션 중 하나를 잠재적으로 이중 지출하고 해당 지점부터 전체 세트를 무효화할 수 있습니다.

이것은 실제로 UTXO 자체의 잠금 스크립트에 서명을 삽입하여 해결됩니다. 이것은 입력 및 출력의 서명을 잠그고 이를 사용하는 다음 트랜잭션에서 마커 UTXO의 재생성을 보장합니다. 그 서명은 UTXO가 소비될 때 자동으로 전달되고 확인되기 때문에 단순히 다른 서명으로 교체하고 다른 목적지로 보내는 것은 불가능합니다.

이것은 마지막 미해결 문제를 남깁니다. 이론적으로 단일 비트코인 ​​블록에 여러 트랜잭션을 연속적으로 제출하여 광부들이 단일 메인 체인 블록에서 모두 확인하도록 하는 것이 가능합니다. 이는 서비스 거부 공격 사이드체인 네트워크에 악용될 수 있습니다.

이 문제를 해결하기 위해 마커 UTXO 스크립트에 CHECKSEQUENCEVERIFY(CSV) 상대 시간 잠금을 삽입하여 주어진 단일 메인 체인 블록 내에서 마커 UTXO를 사용하는 트랜잭션 하나만 확인할 수 있도록 보장할 수 있습니다.

전체적으로 다음과 같습니다. 

출처

이 디자인의 두 가지 변형을 CHECKTEMPLATEVERIFY(CTV)로 구현하거나 전혀 변경하지 않고 구현할 수 있다는 점도 주목할 가치가 있습니다. 이 두 가지 설계 변형에는 차선책이 있습니다.

CTV 변종은 해당 기능을 사용하여 UTXO 잠금 스크립트 내부의 서명을 포함하는 해킹으로 APO 대신 CTV를 사용하여 트랜잭션 체인에 커밋합니다. CTV는 CTV UTXO를 사용하는 트랜잭션의 모든 출력을 커밋하지만 자신 이외의 입력은 커밋하지 않습니다.

즉, CTV 트랜잭션에 입력을 추가할 수 있지만 출력은 추가할 수 없습니다. 따라서 APO 디자인과 마찬가지로 자체 수수료를 가져올 수 있지만 사이드체인 블록 헤더에 약정을 추가할 수는 없습니다.

따라서 여기서 우리가 해야 할 일은 CTV 트랜잭션에 대한 수수료를 지불하기에 충분한 UTXO를 생성하기 위한 사이드체인 약속에 대해 CTV 트랜잭션 체인 외부에 완전히 트랜잭션을 생성하는 것입니다(새로운 변경 출력을 생성할 수 없기 때문에 해당 트랜잭션에서 추가한 입력의 100%는 수수료로 이동) 수수료를 준비하는 트랜잭션 내부에서 UTXO를 사이드체인 블록 헤더에 커밋합니다. 따라서 첫 번째 단계: 수수료 지불 출력과 사이드체인 블록 헤더에 대한 약속을 생성하는 트랜잭션입니다. 두 번째 단계: 수수료 출력을 가져와 CTV 트랜잭션에 대한 입력으로 추가합니다. CTV 트랜잭션은 확인되면 특정 사이드체인 블록을 "채굴"합니다. 이 변형은 다음과 같습니다.

출처

다음 변종은 단순히 사전 서명된 트랜잭션을 사용합니다. 오늘 배포할 수 있지만 스크립트가 수행할 수 있는 작업의 제한으로 인해 트랜잭션에 대한 모든 수수료는 스페이스체인을 만드는 사람이 선불로 지불해야 합니다.

트랜잭션 체인은 단일 UTXO로 시작하고 체인에서 두 개의 출력을 생성합니다. 첫 번째 출력은 트랜잭션 체인이 특정 스페이스체인과 관련되어 있음을 나타내는 마커 UTXO이고, 두 번째 출력은 다른 입력/출력을 첨부할 수 있도록 허용하는 모든 사람이 공개적으로 사용할 수 있는 작은 가치의 UTXO입니다. 이 두 번째 트랜잭션은 누구나 spacechain 트랜잭션 체인에서 두 번째 출력을 사용하는 첫 번째 사람이 되도록 공개적으로 커밋하고 이를 사용하여 사이드체인 블록 헤더에 커밋할 수 있는 곳입니다.

CTV 변형에서 사이드체인 블록은 보조 트랜잭션에서 커밋되어야 했습니다. CTV는 CTV에 의해 잠긴 입력을 소비하는 트랜잭션에 새 출력을 추가하는 것을 허용하지 않기 때문입니다. 이 변형은 사전 서명된 체인에 새 입력 또는 출력을 추가하면 트랜잭션의 TXID를 변경하고 그 뒤에 오는 모든 사전 서명된 트랜잭션을 무효화하기 때문에 보조 트랜잭션을 사용해야 합니다. 이 변형은 다음과 같습니다. 

출처

이 마지막 변형의 한 가지 단점은 사이드체인 블록 커밋에 사용할 모든 트랜잭션에 미리 서명한 사람이 삭제하는 데 사용된 개인 키를 삭제하지 않으면 현재 마커 UTXO를 아무 곳에서나 이중으로 지출하여 체인을 효과적으로 중지할 수 있다는 것입니다. 시각.

그리고 당신은 그것을 가지고 있습니다. 이것은 비트코인의 사이드체인 설계에 대한 가장 최근의 제안이며 세 가지 다른 방법으로 구현할 수 있습니다. 현재 수행할 수 있는 구현 경로에는 누군가 개인 키를 삭제해야 하는 문제가 있다는 명백한 경고가 있습니다.

이 기사는 원래 2014년 디자인 이후 비트코인에 대해 게시된 주요 사이드체인 디자인 제안과 관련된 시리즈의 첫 번째 기사입니다. 나머지는 주의하세요.

Shinobi님의 게스트 게시물입니다. 표현된 의견은 전적으로 자신의 것이며 BTC Inc 또는 Bitcoin Magazine의 의견을 반드시 반영하는 것은 아닙니다.

타임 스탬프 :

더보기 Bitcoin Magazine