탭루트 자산이란 무엇입니까? 발급 방법은? 한 기사로 Taproot Assets 프로토콜 이해하기

avatar
Bitpush
10-20
이 기사는 기계로 번역되었습니다
원문 표시

작성자: Golden Finance 0xjs

2023년 10월 19일 Lightning Network 개발자 Lightning Labs는 Taproot Assets 프로토콜의 출시를 발표했습니다. Taproot Assets 프로토콜은 비트코인 및 라이트닝 네트워크에서 자산 발행을 지원합니다.

Taproot 자산 프로토콜은 무엇입니까? Taproot Assets 프로토콜은 어떻게 자산을 발행하고 전송합니까? 이 기사에서는 모든 내용을 안내합니다.

탭루트 자산 프로토콜

Taproot Assets Protocol BIP에 따르면 Taproot Assets 프로토콜은 비트코인을 기반으로 구축된 Taproot 기본 자산 계층입니다. 탭루트 자산은 비트코인 네트워크를 팽창시키지 않으면서 비트코인 체인의 임의 자산을 나타낼 수 있습니다. 이 프로토콜은 Taproot 자산과 상호 작용하는 거래가 일반 비트코인 거래와 다르지 않도록 설계되었습니다.

탭루트 자산은 중첩된 자산 스크립트 트리(merkle-sum Sparse Merkle Tree 또는 MS-SMT)를 사용합니다. 이는 트랜잭션 그래프에서 자산 이동을 증명할 수 있는 구조화된 메타데이터로 유효한 증인을 제출하는 기본 Taproot 스크립트 트리를 확장합니다. Taproot 자산 양도 증명은 기밀 증명 또는 외부에서 유지 관리되는 유니버스를 사용하여 확인할 수 있습니다. Universe는 인덱스 체인에서 자산 발행 + 전송을 위한 MS-SMT입니다.

Taproot Assets는 라이트닝 네트워크 채널(BOLT 프로토콜 제품군 기반)을 통해 오프체인 단일 홉 및 다중 홉 전송을 지원하며, 후자는 Taproot Assets의 고유한 임베디드 자산 스크립팅 시스템을 사용하여 구현됩니다. 온체인 Taproot 자산 전송에 대한 라이트 클라이언트 검증은 활성 Universe 인스턴스에 신뢰 관계를 위임하여 압축할 수 있는 일련의 온체인 및 오프체인 Merkle 증명을 통해 촉진됩니다.

Taproot Assets 프로토콜을 이해하는 데 필요한 몇 가지 개념

탭루트 거래

Taproot는 BIP 341에 정의된 새로운 거래 유형으로, 2021년 11월부터 비트코인 메인넷에서 온라인으로 제공될 예정입니다. 탭루트 거래와 기존 비트코인 거래의 주요 차이점은 제어 스크립트가 거래에 참여하겠다는 개인 약속인 "tapScript 분기"라는 트리 구조에 포함되어 있다는 것입니다. KeySpend 경로를 사용하여 Bitcoin을 이동하는 경우 이러한 스크립트를 공개할 필요가 없습니다.

기존 거래에서는 전체 스크립트를 노출해야 하지만 Taproot 거래는 키를 사용하여 스크립트 공개를 방지하고 키 지출 경로가 가능하지 않은 경우 블록체인에서 스크립트의 실행된 부분만 노출할 수 있습니다. 다른 모든 스크립트 경로는 비공개로 유지되거나 선택적으로 오프체인에 노출될 수 있습니다.

이를 통해 keySpend 경로에서 블록체인에 추가 데이터를 제출하는 추가 비용 없이 더 복잡한 스크립트를 생성할 수 있을 뿐만 아니라 정리된 스크립트 데이터를 효율적으로 검증할 수 있습니다. Taproot Assets의 맥락에서 이를 통해 사람들은 이 데이터를 체인상으로 유출하지 않고도 거래에 임의의 데이터를 첨부할 수 있습니다.

Taptweak: 커밋 해시

이러한 임의의 데이터가 포함된 거래를 약속이라고 합니다. 거래가 블록에 포함되면 우리는 해당 데이터를 커밋했으며 더 이상 데이터를 변경하거나 수정할 수 없습니다.

데이터를 커밋하기 위해 사람들은 "Taptweak"이라는 트릭을 사용하여 Taproot 지출 키의 공개 키를 조정합니다. 이를 통해 사람들은 개인 키를 공개하지 않고 선택적으로 데이터를 노출하거나 약속을 공개하지 않고 출력을 소비할 수 있습니다.

이 기술은 Taproot 트랜잭션에서 Taproot 스크립트 트리에 커밋하는 데 사용되며 임의의 데이터를 커밋하는 데 사용할 수 있습니다.

Q= P+H(P|c)G

Q = 최종 Taproot 공개 키, P = 내부 공개 키, H(P|c) = 내부 공개 키 및 커밋된 해시

개인 키를 사용하여 거래에 서명하려면 공개 키 및 약속과 동일한 해시 H(P|c)를 사용하여 개인 키를 조정해야 합니다.

희소 머클 트리

희소 머클 트리(Sparse Merkle Tree)는 머클 트리에 특정 데이터가 존재하지 않음을 증명할 수 있는 데이터 구조입니다. SMT는 인증된 키-값 저장소입니다. 즉, 리프의 키 또는 위치와 리프의 콘텐츠가 서로 연결되어 있음을 의미합니다.

이 속성을 구현하기 위해 리프의 내용이 해시되고 머클 트리가 생성됩니다. 여기서 리프의 위치는 해시 다이제스트의 비트맵에 해당합니다. 이를 위해서는 반드시 256개의 레이어와 2^256개의 잎이 있는 나무가 필요합니다. 트리 생성은 크기가 상당히 크더라도 효율적입니다. 대부분의 가지에 빈 잎이 포함되어 있고 해시가 0으로 표시될 수 있기 때문입니다.

es5tV6f4hNFXr2qYml1b2oJtJS5KO5TnG2gjpKdL.png

희소 머클 트리 구축

예를 들어, 가상의 해시 함수 sha002를 사용하여 결과가 0에서 3 사이의 숫자인 희소 머클 트리를 구성할 수 있습니다. 우리는 4개의 잎(0, 1, 2, 3)을 가진 희소 머클 트리를 생성합니다. 리프 2만 채워지고 다른 모든 리프는 비어 있습니다. 리프 2(이진수로 10으로 기록됨)를 찾으려면 첫 번째 분기(1)에서 오른쪽으로 이동한 다음 두 번째 분기(0)에서 왼쪽으로 이동합니다.

EsZVrX1d7mdiLUomZWY3rvr1QZCNXSpre2rXxzu5.png

희소 머클 트리(Sparse Merkle Tree)의 잎 식별

리프 2를 확인하려면 이제 해당 리프의 값과 리프 3의 해시 및 분기 0의 해시만 공개하면 됩니다.

희소 머클 트리에서 이진 형식으로 표현될 때 각 리프는 지도로 자체 가이드로 설명될 수 있습니다. 지도는 Sparse Merkle Tree 자체이며, 방향은 도로의 각 분기점에서 좌회전할지 우회전할지에 대한 지침으로 표시됩니다. 예를 들어, 큰 2^4 Sparke Merkle 트리의 9번째 리프는 이진수로 1001로 표시됩니다. 이는 왼쪽, 오른쪽, 오른쪽으로 회전하고 마지막으로 왼쪽으로 회전하여 적절한 리프를 찾는다는 의미입니다.

이 속성은 희소 머클 트리의 어느 부분을 재구성해야 하는지 정확하게 설명하기 때문에 희소 머클 트리를 구성하고 재구성하는 데 매우 유용합니다. 게다가 이제 각 리프의 데이터를 트리에서의 위치로 설명할 수 있습니다.

희소 머클 트리를 사용하면 데이터를 공개 키와 연결하고 전체 트리를 공개하지 않고도 데이터를 삭제했음을 쉽게 확인할 수 있는 방식으로 증명할 수 있습니다.

65hZbuTq1zVOtdNKM3n2Wj9T8YGkVwEJwu3Ug65L.png

Sparse Merkle Tree에 항목 삽입

각 항목에는 미리 결정된 위치가 있으므로 트리의 루트 해시는 항목이 삽입된 순서에 의존하지 않습니다.

머클합나무

머클 합 트리(Merkle sum tree)는 각 리프에 숫자 값이 포함되고 각 노드에도 그 아래 값의 합이 포함되는 일종의 머클 트리입니다. Merkle은 합 트리의 루트가 트리에 있는 전체 값의 합임을 찾습니다.

머클섬(Merkle Sum) 나무는 나뭇잎과 관련된 수량을 투입하여 보존(인플레이션 없음)을 효과적으로 확인할 수 있습니다.

Taproot, tapweak, Sparse Merkle 트리 및 Merkle sum 트리의 대규모 조합

Taproot Assets는 위 개념의 조합을 사용하여 비트코인 기반 자산을 발행합니다. Sparse Merkle 합 트리와 Merkle 합 트리는 Sparse Merkle 합 트리로 결합됩니다 .

Sparse Merkle 합계 트리의 루트가 Taproot Tapscript에 추가되고 함께 Taproot 주소가 생성됩니다.

Taproot Assets 발행자는 자체 블록체인을 가지고 있지 않지만 대신 Sparse Merkle 합계 트리를 오프체인에 저장하고 자산 보유자에게 증명을 발행합니다. 그러한 자산의 소유자는 자신의 계정이 트리에 포함되어 있고 적절한 금액으로 채워져 있으며 해당 Taproot 거래가 존재하고 비트코인 블록체인에서 확인되었는지 독립적으로 확인할 수 있습니다.

Taproot 자산 발행 방법

자산 ID

Taproot 자산을 게시하려면 먼저 해당 식별자를 생성해야 합니다. 자산 ID는 크기가 32바이트이며 자산을 발행하는 데 사용되는 아웃포인트, 발행자가 선택한 자산 태그(예: 브랜드 이름의 해시), 자산과 관련된 메타 정보 등 세 가지 요소를 해싱하여 생성됩니다. 링크, 이미지, 문서로.

자산 ID = sha256(genesis_outpoint || 자산 태그 || 자산 메타)

자산 스크립트

자산 스크립트에는 비트코인 거래와 유사하게 입력과 출력이 있을 수 있습니다. 새로 생성된 자산에는 Taproot 자산 입력이 포함되지 않지만 자산 전송에는 포함됩니다.

자산 스크립트의 출력은 새로 생성된 자산이 누구에게 발급될지 정의합니다. 보다 정확하게는 각 계정이 256비트 키로 식별되고 해당 키에 해당하는 각 리프에 해당 계정이 보유한 금액에 대한 정보가 포함되어 있는 Sparse Merkle 합계 트리를 통해 수행됩니다.

하나의 거래로 여러 자산을 발행할 수 있지만 각 자산에는 고유한 자산 스크립트가 있으며 그 안에 Sparse Merkle 트리가 포함되어 있습니다. 자산은 고유할 수도 있고 고유하지 않을 수도 있습니다.

자산 잎

각 리프에는 라이트닝 네트워크에서 사용되는 TLV와 유사한 TLV(유형, 길이, 값) blob이 포함되어 있습니다. 버전, 자산 ID, 수량, 자산의 이전 전송과 관련된 데이터(서명 등) 등의 정보가 포함됩니다.

트리 루트에 커밋

Sparse Merkle 합계 트리와 자산 스크립트를 생성한 후에는 내부 공개 키를 조정하고 계약 주소를 얻어 거래를 완료할 수 있습니다.

거래 후

이 거래를 게시하고 비트코인 블록체인에서 확인되면 되돌릴 수 없게 자산이 생성됩니다. 관찰자에게 거래는 다른 표준 Taproot 거래처럼 보일 것입니다.

자산 증명

이제 자산 발행자는 어떤 자산이 생성되었고 누구에게 할당되었는지 선택적으로 공개할 수 있습니다. 가장 중요한 것은 발행자는 자산 스크립트와 수신자의 계정에 의해 입력된 Sparse Merkle 합계 트리에 대한 경로가 포함된 특정 자산 증명을 공개함으로써 자산이 자신에게 이전되었음을 수신자에게 증명할 수 있다는 것입니다.

수신자는 부분 Sparse Merkle 합계 트리를 검증하여 스크립트를 다시 생성하고, 발행자의 공개 키를 조정하고, 최초 트랜잭션이 블록체인에 존재하는지 확인할 수 있으며, 부분 Merkle 트리는 발행된 자산에 대한 보증과 총 금액을 제공합니다. 발행된 자산의 수.

WODz1YYaAm5IkzUJ6Uk0lZlBslr7i2xgOFTobyM7.png

Sparse Merkle 트리에 증명이 포함되어 있는지 확인

Taproot 자산 전송 방법

탭루트 자산은 온체인으로 전송될 수 있으며 라이트닝 네트워크 채널을 여는 데에도 사용될 수 있습니다 . 이 문서에서는 온체인 거래에 대해서만 설명합니다.

Taproot Assets는 개별 계정 소유자가 구체적으로 상호 작용하는 방식을 지정하지는 않지만 애플리케이션별로 다를 수 있습니다. 발행자는 자산을 정의하거나 해당 자산을 제한하는 방법에 유연성을 갖습니다.

자산 루트 약정 약정 트리 내에 보관된 모든 자산과 그 합계입니다. 자산 ID는 생성 시 출력된 식별자에 따라 달라지므로 전역적으로 고유합니다. 총 루트에는 여러 자산 ID가 포함될 수 있으며, 자산 트리 루트를 확인하여 보존이 제공됩니다.

Asset_tree_root = sha256(asset_id || left_hash || right_hash || sum_value)

탭루트 자산 주소

Taproot 자산 주소는 자산 ID, 자산 스크립트 해시, Sparse Merkle 합계 트리의 내부 키 및 Taproot 자산 또는 taptb1(testnet)이 앞에 붙는 금액의 bech32m 인코딩 식별자입니다.

bech32(hrp=TapHrp, 자산 ID || 자산 스크립트_해시 || 내부_키 || amt)

발행자 또는 자산 보유자는 Taproot 자산 주소의 정보를 사용하여 Sparse Merkle 합계 트리를 생성하거나 수정할 수 있습니다. 이 주소 형식은 이 주소에 보관된 금액에 대한 구체적인 증거를 요청하는 데에도 사용할 수 있습니다.

트리 내에서 자산 이동

Taproot 자산을 전송하기 위해 수신자는 전송을 시작할 수 있는 현재 보유자에게 주소를 전달합니다. 현재 계좌 보유자와 발행자 간의 정확한 상호 작용은 엄격하게 정의되지 않습니다. 이는 각 애플리케이션이나 자산 발행자에 의해 지정될 수 있습니다.

자금을 보내는 사람은 새 잔액을 반영하는 새로운 Sparse Merkle 합계 트리를 생성해야 합니다. 이는 일부 잎의 균형을 감소시키고 다른 잎의 균형을 증가시킴으로써 수행됩니다. Sparse Merkle 합계 트리는 그러한 거래에서 새로운 자산이 생성되지 않으며 자산에 대한 이전 청구가 완전히 포기된다는 것을 보장합니다.

HOMsw4tcpFuDC0S7oUogReLfnwYKjyv7wwZF7AVR.png

계정 식별

자산을 생성하려면 온체인 Taproot 트랜잭션이 필요하며, 생성할 수 있는 자산 수나 이를 보유할 수 있는 계정 수에 제한이 없습니다. 위에서 언급했듯이 자산을 전송하려면 머클 트리를 재구성하고 새로운 온체인 트랜잭션을 발행해야 합니다. 이 온체인 거래에 반영될 수 있는 내부 Taproot 자산 거래 수에는 제한이 없습니다.

이 방법을 사용하면 자금은 Sparse Merkle 합계 트리의 리프로 표시되는 계정 소유자에게 배포되지만 이러한 내부 전송 기능은 내부 Taproot 개인 키 소유자로 제한됩니다.

KKwb7bUL984sajSLCmqMEzHskvfGvANVxOSqTvbC.png

우주

Universe는 자산 보유자에게 자산 정보와 인증서를 제공하는 서비스입니다 . 이는 비트코인 블록 탐색기와 유사하며 Taproot Assets 클라이언트와 함께 오프체인에 저장된 Taproot Assets 거래 데이터를 표시합니다. 가장 큰 차이점은 탭루트 자산과 관련된 대부분의 정보가 오프체인이기 때문에 숨기기가 더 쉽다는 것입니다.

유니버스는 자산 발행자가 직접 운영하거나 발행자가 지정할 수 있습니다. 커뮤니티가 운영하는 Uniserve가 자산 보유자가 제출한 정보를 집계하는 것도 가능합니다.

예를 들어, 알려진 자산 ID가 주어지면 유니버스는 최초 출력에 대한 정보뿐만 아니라 문서, 자산 스크립트 또는 유통 중인 총 토큰과 같은 현재 메타 정보도 제공할 수 있습니다. 서비스는 여러 자산(Multiverse)을 인식하거나 단일 출력(Pocket Universe)만 인식할 수도 있습니다.

Universe는 Taproot 자산 계약에 따른 어떠한 권한도 갖고 있지 않습니다. 비트코인 블록체인에 대해 검증된 거래 데이터를 생성합니다. 적대적인 유니버스는 클라이언트가 요청한 데이터 반환만 피할 수 있습니다. Taproot Assets 거래 데이터는 유니버스에 바인딩되지 않습니다. Universe가 제공하는 데이터 가용성 제품은 Taproot 자산을 빠르고 저렴하게 검증하려는 기업에 의해 주도됩니다.

Taproot 자산의 합병 또는 분할

위에서 언급했듯이 자산은 자산의 Sparse Merkle 트리 내에서 전송되거나 다른 Taproot 키 보유자에게 전송될 수 있습니다. 이를 자산분할이라고 합니다.

자산 분할에서 발신자는 먼저 자체 Taproot로 Sparse Merkle 합계 트리 출력을 업데이트하고 잔액을 조정하고 Merkle 루트를 다시 계산해야 합니다. 병합하는 경우 루트 합도 변경됩니다.

또한 새로운 Taproot 출력 전용의 두 번째 Sparse Merkle 합계 트리가 있습니다. 두 번째 Merkle 트리는 자산 수신자에 의해 계산됩니다. 이는 위 예의 발행자와 유사하게 작동합니다. 단, 이러한 자산은 처음부터 생성되지 않고 자산의 창세기 출력과 같은 이전 출력과 분리됩니다.

자산 증명

자산 분할이 발생했는지 여부를 확인하려면 새 유니버스의 운영자가 이를 입증해야 합니다.

  • 자산은 거래 0(t0)에서 생성되었습니다.

  • 자산은 t0에 있는 원래 Merkle 트리의 리프에 존재합니다.

  • 이 리프의 잔액은 t1에서 0으로 설정됩니다.

  • 자산은 t1에 있는 새로운 Merkle 트리의 리프에 존재합니다.

자산이 분할되면 자산 소유자는 발행인과 마찬가지로 내부 거래를 수행할 수 있습니다. 분할 전 각 인증서에는 항상 출처 확인을 위한 발급 증명이 포함되어야 합니다.

자산 증명은 새로운 온체인 거래마다 선형적으로 증가합니다. 모든 자산 거래는 최초의 결과까지 다시 감사되어야 합니다. 자산 증명은 그것이 참조하는 출력이 블록체인에서 소비되지 않은 경우에만 유효합니다.

Taproot 자산의 파기 또는 무효화

새로운 Sparse Merkle 합계 트리에 커밋되지 않고 자산의 출력이 소비되면 해당 자산은 유효하지 않은 것으로 간주됩니다.

이는 제3자 관찰자에게는 명확하지 않으며 어떤 경우에는 자산이 파괴, 무효화 또는 "소각"되었음을 증명하기 위해 출력을 새로운 빈 머클 트리에 사용하는 것이 더 좋습니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
6
즐겨찾기에 추가
2
코멘트