이 글을 읽고 나면 당신은 99%의 사람들보다 서수 비문에 대해 더 많이 알게 될 것입니다.

avatar
MarsBit
08-12
이 기사는 기계로 번역되었습니다
원문 표시

원본 출처: 스펙트럼랩.io

원작자: Ash Li, Noah Ho

Ordinals 프로토콜의 탄생과 함께 비트코인에 번호 부여 및 비문 기능을 제공함으로써 비트코인 생태계의 제품 범위를 확장하고 비트코인 생태계에 새로운 활력을 불어넣습니다. 이 기사에서는 각 비트코인에 번호를 매기고 추적하는 방법, 비문과 숫자 간의 관계를 포함하여 Ordinal 프로토콜의 세부 사항을 자세히 살펴보겠습니다. 하지만 이 주제를 자세히 알아보기 전에 먼저 비트코인에 대한 몇 가지 기본 배경을 이해해야 다음 내용을 더 잘 이해할 수 있습니다.

이 기사를 읽은 후에는 비트코인의 거래 메커니즘과 지불 모델을 마스터하고 Ordinals가 각 사토시에 대해 번호 매기기 및 추적을 구현하는 방법, 비문이 생성 및 거래되는 방법을 이해하게 됩니다. 또한 다양한 유형의 지갑 간의 차이점을 배우게 됩니다.

1. 비트코인 배경

비트코인은 현금과 유사한 거래 모델(현금 시스템)을 채택하고 있으며, 결제 방식은 전통적인 계좌 잔액 기반 모델과 다른 UTXO라는 모델을 기반으로 합니다. 예: 은행의 계좌 회계 모델 프로세스에서 A가 B에게 100위안을 이체하면 은행은 거래 프로세스를 구성하는 세 단계를 기록합니다. 첫 번째 단계는 A의 계좌에서 100위안을 차감하는 것이며, 이 단계의 레코드 ID는 tid1이다. 두 번째 단계는 B의 계좌에 100위안을 입금하는 것이며, 이 단계의 기록 ID는 tid2이다. 세 번째 단계는 tid1과 tid2를 연관시키는 이체 기록을 기록하는 것입니다. 이는 계좌 A가 100위안 감소하고 계좌 B가 100위안 증가함을 나타냅니다. 이러한 방식으로 A와 B 간의 이체 관계가 기록되고 향후 쿼리 및 추적이 가능합니다. 이제 UTXO의 도입과 결제 모델을 통해 비트코인의 결제 방식을 설명하겠습니다.

UTXO

비트코인 블록체인에서 모든 잔액은 "미사용 거래 출력"(UTXO)이라는 목록에 저장됩니다. 각 UTXO에는 특정 수의 비트코인과 이러한 비트코인 소유자에 대한 정보가 포함되어 있으며 사용 가능 여부를 나타냅니다. 소유자의 이름이 적힌 현금 수표라고 생각하면 되며, 소유자가 서명만 하면 사용 권한이 다른 사람에게 양도될 수 있습니다. 특정 주소의 경우 모든 UTXO 금액의 합계가 해당 주소 지갑의 잔액입니다. 모든 UTXO를 반복함으로써 각 주소의 현재 잔액을 얻을 수 있습니다. 모든 UTXO의 총량은 유통되는 비트코인의 총량입니다.

비트코인 거래 구조에서 각 거래에는 여러 입력과 출력이 포함되며, 각 입력은 기존 UTXO에 대한 참조이고 각 출력은 새로운 자금 수신 주소와 해당 금액을 지정합니다. 트랜잭션이 시작되면 입력 부분에서 참조하는 UTXO는 트랜잭션이 완료될 때까지 재사용을 방지하기 위해 일시적으로 잠깁니다. 채굴자가 트랜잭션을 블록으로 성공적으로 패키징하고 네트워크에서 확인한 경우에만 관련 UTXO 상태가 변경됩니다. 구체적으로, 트랜잭션의 입력으로 사용된 UTXO는 UTXO 목록에서 제거되어 소비되었음을 나타내며, 트랜잭션의 출력은 새로운 UTXO를 생성하여 UTXO 목록에 추가됩니다. 이전 현금 수표를 사용한 후에는 무효화되고 새로운 현금 수표가 생성되며 그 소유권은 새 보유자에게 귀속된다는 것을 이해할 수 있습니다.

각 UTXO는 거래에서 한 번만 사용할 수 있다는 점을 강조할 가치가 있습니다. 입력으로 사용되면 UTXO 목록에서 영구적으로 제거됩니다. 동시에 새로 생성된 출력이 새 UTXO로 목록에 추가됩니다. UTXO 목록은 지속적으로 변경되며 각각의 새로운 블록이 생성될 때 그에 따라 업데이트됩니다. 그리고 블록체인의 거래 내역을 분석하여 특정 시점의 UTXO 목록 상태를 재구성할 수 있습니다.

또한 거래의 총 입력 금액은 일반적으로 총 출력 금액을 약간 초과합니다. 거래 수수료 또는 네트워크 수수료라고 불리는 이 차액은 거래를 블록으로 패키징하는 채굴자에게 인센티브로 제공됩니다. 네트워크 수수료의 규모는 거래의 복잡성에 직접적으로 비례하므로 입력 및 출력이 더 많은 거래에는 일반적으로 더 높은 네트워크 수수료가 필요합니다.

이제 비트코인의 거래 구조를 보다 생생하게 이해하기 위해 구체적인 사례를 통해 심층적인 분석을 진행하겠습니다. 비트코인의 트랜잭션 구조는 다음과 같습니다. 여기서 두 변수 vin과 vout은 각각 비트코인 트랜잭션의 "입력"과 "출력"을 나타냅니다. 비트코인 거래는 기존 계정 잔액 모델처럼 계정 형태의 데이터 변경 사항을 기록하지 않고 입력과 출력으로 표시됩니다.

UTXO

출처: https://github.com/bitcoin/bitcoin/blob/v22.0/src/primitives/transaction.h#L270

분석을 위해 Blockchain.com에서 거래 기록을 무작위로 선택할 수 있습니다. 아래 그림은 해시 ID 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2를 사용한 거래를 보여줍니다. 여기에는 하나의 입력과 두 개의 출력이 포함됩니다.

UTXO

bitcoin-cli 명령 getrawtransaction 및 decoderawtransaction을 사용하면 위 트랜잭션의 기본 구조를 볼 수 있습니다.

UTXO

비트코인 네트워크에서 거래 출력에는 주소(공개 키 해시)와 금액(비트코인)이라는 두 가지 중요한 정보가 포함됩니다. 트랜잭션의 출력이 다른 트랜잭션의 입력에 사용되지 않는 경우 트랜잭션 출력을 사용되지 않은 트랜잭션 출력(UTXO)이라고 합니다. UTXO의 공개키에 해당하는 개인키를 소유한 사람은 누구나 이 UTXO를 사용할(즉, 소비할) 권리가 있습니다.

위 코드의 "vin"에 있는 정보를 보면 이 트랜잭션에서 소비한 UTXO가 다른 트랜잭션(ID는 7957a...f6f18)의 0번째 출력에서 나온 것임을 나타냅니다. (0부터 시작하는 번호), 과거 거래(예: 0.1)에서 이 UTXO의 양을 찾을 수 있으므로 이 사용자는 이 거래에 0.1 BTC를 지출했으며 0.1 값은 거래에 명시적으로 기록할 필요가 없습니다. UTXO 정보를 조회하여 얻습니다. 이 트랜잭션의 "vout"에는 두 개의 출력이 있습니다. 이 두 개의 출력은 다른 트랜잭션이 입력으로 사용할 때까지 새 잔액과 보유자에 해당하는 두 개의 새로운 UTXO입니다.

결제 모델

비트코인 네트워크의 결제 모델을 더 잘 이해하기 위해 A가 B에게 지불한 n개의 비트코인 금액에 대한 결제 프로세스를 예를 사용하여 소개합니다. 아래 그림은 사용자 A가 사용자 B에게 비트코인 3개를 보내는 과정을 보여줍니다.

UTXO

1. 사용자 A의 경우, 우선 자신이 소유한 모든 UTXO 집합, 즉 사용자 A가 제어할 수 있는 모든 비트코인을 결정해야 합니다.

2.A는 이 세트에서 하나 이상의 UTXO를 거래의 입력으로 선택합니다. 이 입력 금액의 합은 m(2+0.8+0.5=3.3 BTC)이며 이는 지불할 금액 n( 3 BTC);

3. 사용자 A는 거래에 대해 2개의 출력을 설정하고, 하나의 출력은 B의 주소로 지급되고, 금액은 n(3 BTC)이고, 다른 출력은 A의 자신의 변경 주소 로 지급되며, 금액은 mn-fee(3.3-3)입니다 . - 0.001=0.299 BTC). 사용자의 지갑은 일반적으로 여러 개의 주소로 구성되며, 일반적으로 각 주소는 한 번만 사용되며 변경 사항은 기본적으로 새 주소로 반환됩니다.

4. 채굴자가 거래를 패키징하고 확인을 위해 체인에 업로드한 후 B는 거래 정보를 받을 수 있습니다. 블록 크기에는 상한(약 1MB)이 있으므로 채굴자는 가장 높은 수수료 수익을 얻기 위해 거래율이 높은 거래(fee_rate=fee/size)에 우선 순위를 둡니다. mempool에서 실시간 마이닝 거래 수수료 상황을 확인할 수 있습니다. 전송 과정에서 가장 빠른 확인을 원할 경우 높은 우선 순위를 선택하거나 적절한 거래 속도를 맞춤 설정할 수 있습니다.

UTXO

2. 콩 번호 매기기 및 추적

비트코인의 총 개수는 2,100만 개이며, 각 비트코인에는 10^8 사토시(Satoshi, Sat)가 포함됩니다. 따라서 비트코인 네트워크에는 총 2,100만*10^8개의 사토시가 있습니다. Ordinals 프로토콜은 이러한 사토시를 구별하여 각 사토시에 고유한 번호를 부여합니다. 이 섹션에서는 이 프로토콜이 각 사토시에게 고유한 번호를 부여하는 방법과 해당 사토시가 속한 계정을 추적하는 방법을 소개합니다. 또한, 사토시의 레어리티 분류도 소개됩니다.

사토시의 번호

Ordinals 프로토콜에 따르면, 사토시는 채굴된 순서에 따라 번호가 매겨집니다. 아래 그림은 0번째 블록에서 채굴된 0번째 사토시를 표현한 것입니다.

UTXO

사토시를 표현하는 방법에는 여러 가지가 있습니다.

  • 정수 기호: 예를 들어 2099994106992659는 채굴 순서에 따라 사토시에 할당된 일련 번호를 나타냅니다.
  • 십진수 표기: 예를 들어 3891094.16797, 첫 번째 숫자는 사토시가 채굴된 블록의 높이를 나타내고, 두 번째 숫자는 블록 내 사토시 개수를 나타냅니다.
  • 도 기호: 예: 3°111094′214″16797‴, 첫 번째 숫자는 기간이며 0부터 시작하는 번호, 두 번째 숫자는 반감기 시대의 블록 지수, 세 번째 숫자는 난이도 동안의 블록 지수입니다. 조정 기간, 마지막 숫자는 블록의 sat 지수입니다.
  • 백분율 기호: 예를 들어, 99.99971949060254%는 비트코인 공급량에서 사토시의 위치를 나타내며 백분율로 표시됩니다.
  • 이름: 예: Satoshi. a부터 z까지의 문자를 사용하여 시퀀스 번호를 인코딩하는 이름입니다.

새로 채굴된 비트코인의 번호를 매기는 방법을 설명하기 위해 예를 사용하겠습니다. 비트코인 블록체인의 블록 795952를 보면 첫 번째 거래인 Tx 3a1f...b177이 채굴자의 보상(Coinbase 거래)을 기록하는 것을 볼 수 있습니다. 이 거래에는 채굴자를 위한 패키징 보상으로 사용되는 새로 채굴된 비트코인과 거래 개시자가 채굴자에게 지불하는 처리 수수료가 포함됩니다. 아래 그림의 입력을 보면 UTXO ID가 0의 문자열과 블록 높이로 구성되어 있음을 알 수 있습니다. 출력 주소는 채굴자의 지갑 주소이며, 금액은 위의 보상과 처리 수수료를 합한 금액입니다.

UTXO

채굴자에 대한 출력을 더 자세히 살펴보면 주소, 금액 및 포함된 사토시의 분포를 볼 수 있습니다. 앞서 언급했듯이 여기에는 채굴 보상과 수수료가 포함됩니다. 그 중 녹색 토시 번호 정보 1941220000000000~1941220625000000은 채굴 보상으로 생성된 새로운 사토시이며, 나머지 712개의 사토시 레코드는 해당 블록 내 모든 처리 수수료에 해당한다.

UTXO

숫자 Sat 1941220000000000을 확인할 수 있습니다. 블록 번호는 795952, 십진수 표기(십진수)는 795952.0으로, 이 사토시 채굴의 블록 높이가 795952, 이 블록의 사토시 개수는 0이며, 이후의 희귀도 표시는 흔하지 않음을 의미합니다. 이후 섹션에서 자세히 설명합니다.

UTXO

콩의 순환

모든 BTC는 채굴 보상을 통해 생성되므로 모두 추적 가능합니다. 비트코인 계정은 UTXO 모델을 사용합니다. 사용자 A가 채굴을 통해 100~110번째 사토시를 획득했다고 가정합니다(10개의 사토시는 ID adc123으로 동일한 UTXO에 전체적으로 저장됩니다). 사용자 A가 사용자 B에게 5개의 사토시를 지불하려고 할 때 그는 ID abc123을 거래 입력으로 사용하기로 선택합니다. 이 중 5개의 사토시는 사용자 B에게 제공되고 5개의 사토시는 거스름돈으로 사용자 A에게 반환됩니다. 5개 사토시의 이 두 복사본은 전체이며 각각 ID가 abc456 및 abc789인 두 개의 UTXO에 저장됩니다. 위의 UTXO id와 사토시 수는 예시일 뿐이며, 실제 상황에서 전송되는 최소 사토시 수는 546개로 제한되며 UTXO id는 이 형식으로 표현되지 않습니다.

UTXO

위 거래에서 사용자 A의 10개 사토시의 유통 경로는 다음과 같습니다.

1. 채굴을 하면 [100, 110]이라는 번호가 붙은 10개의 사토시가 생성됩니다. 이는 100번째부터 109번째 사토시가 ID abc123으로 UTXO에 저장되어 있고 소유자는 사용자 A라는 것을 의미합니다.

2. A가 송금할 때 10사토시는 2개로 나누어지며, 각 몫은 5사토시입니다. 여기서는 "선입선출" 원칙이 사용됩니다. 즉, 사토시의 번호 순서는 거래 출력의 색인에 따라 결정됩니다. 출력 순서가 먼저 사용자 A이고 그 다음 사용자 B라고 가정하고, 사용자 A의 나머지 5개 사토시의 시퀀스 번호는 [100, 105)이며 ID는 abc456으로 UTXO에 저장되어 있고 사용자 B의 시퀀스 번호는 다음과 같습니다. 5개의 사토시는 [105, 110)이며 ID가 abc789인 UTXO에 저장됩니다.

레어 사토시

Ordinals 프로토콜의 파생물로서 사토시 희귀성은 채굴되는 순서에 따라 정의될 수 있습니다. 이로 인해 희귀도가 다른 특별한 사토시가 탄생하게 됩니다. 다양한 사토시의 희귀도 수준은 다음과 같습니다.

  • common: 블록의 첫 번째 사토시를 제외한 모든 사토시(총 공급량은 2100조)
  • 언커먼 엑설런트 레벨: 각 블록의 첫 번째 사토시(총 공급량은 6929999)
  • 레어: 1차 사토시 각 난이도 조정 기간 (총 공급량 3437)
  • epic: 각 반감기 후 첫 번째 사토시(총 공급량은 32개)
  • 전설적: 매 사이클마다 첫 번째 사토시(총 공급량은 5개)
  • 신화: 제네시스 블록의 첫 번째 사토시(총 공급량은 1)

희귀한 사토시라는 개념은 비트코인 생태계에 더 많은 관심과 가치를 더할 수 있습니다. 다양한 희귀도를 지닌 사토시는 시장에서 다양한 가치를 갖고 있어 수집가와 투자자의 관심을 끌 수 있습니다.

비문 방법

서수는 비트코인이 아닌 다른 체인의 NFT와 크게 다릅니다. 주요 차이점은 Ordinals 메타데이터가 특정 위치에 저장되지 않는다는 것입니다. 대신 이 메타데이터는 거래의 증인 데이터(증인 데이터, 증인 필드)에 내장되어 있으며, 이 데이터가 비문처럼 비트코인에 "새겨져" 있기 때문에 이를 "비문"이라고 부르는 것입니다. 거래의 특정 부분에서, 데이터는 특정 Satoshi에 첨부됩니다. 이 비문 프로세스는 SegWit(Segregated Witness) 및 P2TR(Pay-to-Taproot)을 통해 구현됩니다. 여기에는 커밋과 공개의 두 단계가 포함됩니다. 모든 형태의 콘텐츠(예: 텍스트, 이미지 또는 비디오)가 지정된 문서에 새겨질 수 있습니다. 사토시. 아래에서는 좀 더 직접적인 또 다른 저장 방식인 OP_RETURN을 소개하고 이것이 각인의 수단으로 사용되지 않는 이유를 설명하겠습니다. 동시에 Segregated Witness와 Pay-to-Taproot가 무엇인지, Inscription에서 어떤 역할을 하는지 소개하겠습니다. 마지막으로 표기 방법을 소개하겠습니다.

OP_RETURE

비트코인 코어 클라이언트 버전 0.9에서는 RETURN 연산자의 채택을 통해 마침내 타협이 이루어졌습니다. **RETURN을 사용하면 개발자가 거래 출력에 80바이트의 미결제 데이터를 추가할 수 있습니다. **의사 결제와 달리 RETURN은 명확하고 검증 가능하며 소모 불가능한 출력을 생성하며 이러한 데이터는 UTXO 세트에 저장될 필요가 없습니다. RETURN 출력은 블록체인에 기록되어 디스크 공간을 소비하고 블록체인의 크기를 늘리지만 UTXO 세트에 저장되지 않으므로 UTXO 메모리 풀을 확장하지 않으며 전체 노드 수를 늘리지 않습니다. 비싼 메모리 비용.

OP_RETURN은 비트코인 블록체인에 정보를 저장하는 매우 간단한 수단이지만 잠재적인 정보 입력 방법이기도 합니다. 그러나 OP_RETURN의 한계로 인해 메타데이터 저장을 처리할 때 몇 가지 문제에 직면하게 됩니다. 우선, OP_RETURN은 80바이트의 데이터만 저장할 수 있는데, 더 많은 양의 데이터를 저장해야 하는 상황에서는 이 제한이 확실히 만족스럽지 않습니다. 둘째, OP_RETURN 데이터는 트랜잭션 출력 부분에 저장되는데, 이 데이터는 UTXO 세트에 저장되지 않지만 블록체인의 저장 공간을 차지하므로 블록체인의 크기가 증가하게 된다. 마지막으로 OP_RETURN을 사용하면 이러한 거래를 게시하는 데 더 많은 비용을 지불해야 하기 때문에 거래 수수료가 높아집니다.

분리된 증인

반면 SegWit은 위의 문제를 극복할 수 있는 새로운 방법을 제공합니다. SegWit은 비트코인의 중요한 프로토콜 업그레이드로, 비트코인 핵심 개발자인 Pieter Wuille이 2015년에 제안했으며 2017년 0.16.0 버전에서 공식적으로 채택되었습니다. Segregated에서의 Segregated Witness는 분리와 격리를 의미하며 Witness는 거래와 관련된 서명 사항입니다. 따라서 SegWit은 특정 거래 서명 데이터(증인 데이터)를 거래에서 분리합니다.

거래 관련 데이터에서 서명을 분리하는 주요 이점은 비트코인 블록에 저장된 데이터의 크기를 줄이는 것입니다. 이는 더 많은 거래를 저장할 수 있는 블록당 추가 용량을 가지며, 이는 또한 네트워크가 더 많은 거래를 처리할 수 있고 발신자가 더 낮은 수수료를 지불할 수 있음을 의미합니다. 기술적으로 말하면 기본 구조(기본 블록)에서 스크립트 서명(scriptSig) 정보를 가져와 새 데이터 구조에 배치하는 것을 의미합니다. 검증 작업을 수행하는 노드와 채굴자는 거래가 유효한지 확인하기 위해 이 새로운 데이터 구조의 스크립트 서명도 검증합니다. Segwit 업그레이드는 개인정보 보호와 성능을 보장하기 위해 거래 출력에 새로운 감시 필드를 도입합니다. 증인 데이터는 데이터 저장용으로 설계되지 않았지만 실제로 비문 메타데이터와 같은 것을 저장할 수 있는 기회를 제공합니다. 우리는 분리된 증인을 더욱 생생하게 이해하기 위해 다음 그림을 사용합니다.

UTXO SegWit 이전--트랜잭션 구조 설명(데이터 점유율)

UTXO

Post-SegWit – 거래 구조 설명(데이터 점유율)

UTXO

SegWit 전후의 트랜잭션 데이터 구조

직근

P2TR은 2021년 Taproot 업그레이드에 도입된 비트코인의 거래 출력 유형으로, 다양한 거래 조건을 보다 비공개적으로 블록체인에 저장할 수 있습니다. 서수 비문에서 P2TR은 중요한 역할을 합니다. Inscription은 기본적으로 특정 데이터 콘텐츠를 비트코인 거래에 포함시키며, Taproot 업그레이드, 특히 P2TR은 이러한 데이터 포함을 더욱 유연하고 경제적으로 만듭니다.

첫째, Taproot 스크립트가 저장되는 방식으로 인해 Taproot 스크립트 경로 지출 스크립트에 비문 콘텐츠를 저장할 수 있으며 이는 콘텐츠에 거의 제한이 없으며 증인 데이터에 대한 할인도 받을 수 있어 비문 콘텐츠를 상대적으로 경제적으로 저장할 수 있습니다. Taproot 스크립트 사용은 기존 Taproot 출력에서만 수행될 수 있으므로 Inscription은 2단계 커밋/공개 프로세스를 사용합니다. 먼저 커밋 트랜잭션에서 비문 내용이 포함된 스크립트를 약속하는 Taproot 출력이 생성됩니다. 그런 다음 공개 트랜잭션에서 커밋 트랜잭션에 의해 생성된 출력이 소비되어 온체인 비문 콘텐츠가 공개됩니다.

이 접근 방식은 리소스 소비를 크게 줄입니다. P2TR을 사용하지 않으면 증인 정보가 트랜잭션 출력에 저장됩니다. 이런 방식으로 이 출력이 소비되지 않는 한 증인 정보는 항상 UTXO 세트에 저장됩니다. 반면, P2TR을 사용하면 커밋 단계에서 생성된 트랜잭션에 증인 정보가 나타나지 않으므로 UTXO 세트에 기록되지 않습니다. 이 UTXO가 소비된 경우에만 공개 단계의 거래 입력에 증인 정보가 나타납니다. P2TR을 사용하면 메타데이터를 비트코인 블록체인에 쓸 수 있지만 UTXO 세트에는 표시되지 않습니다. UTXO 세트를 유지/수정하려면 더 많은 리소스가 필요하므로 이 접근 방식을 사용하면 많은 리소스를 절약할 수 있습니다.

Ordinals 프로토콜은 SegWit을 활용하여 비트코인 네트워크에 기록된 콘텐츠의 크기 제한을 완화하고 증인 데이터에 비문 콘텐츠를 저장합니다. 최대 4MB의 메타데이터를 저장할 수 있습니다. Taproot를 사용하면 비트코인 거래에서 임의의 증인 데이터를 더 쉽게 저장할 수 있으므로 Ordinals 개발자 Casey Rodarmor는 오래된 opcode(OP_FALSE, OP_IF, OP_PUSH)를 그가 "비문" 저장소 임의 데이터라고 부르는 "봉투"로 설명하는 용도로 변경할 수 있습니다.

비문을 주조하는 과정은 다음 두 단계로 구성됩니다.

1. 먼저 비문 콘텐츠가 포함된 스크립트에 커밋되는 커밋 트랜잭션에서 Taproot 출력을 생성해야 합니다. 저장 형식은 Taproot 즉, 이전 트랜잭션의 출력은 P2TR(Pay-To-Taproot)이고, 다음 트랜잭션의 입력은 감시된 Taproot 스크립트에 특정 형식으로 내장되어 있습니다. 비문이 다른 용도로 사용된다는 모호성을 제거하기 위해 스택에 푸시되었습니다. OP_PUSH 1은 다음 푸시에 콘텐츠 유형이 포함되어 있음을 나타내고, OP_PUSH 0은 후속 데이터 푸시에 콘텐츠 자체가 포함되어 있음을 나타냅니다. 큰 비문은 여러 데이터 푸시를 사용해야 합니다. taproot의 몇 가지 제한 사항 중 하나는 단일 데이터 푸시가 520바이트보다 클 수 없다는 것입니다. 이때 비문 데이터는 거래 출력의 UTXO에 매핑되었지만 공개되지는 않았습니다.

UTXO

2. 둘째, 커밋 트랜잭션에 의해 생성된 출력은 공개 트랜잭션에서 소비되어야 합니다. 이 단계에서는 해당 비문에 해당하는 UTXO를 입력으로 사용하여 트랜잭션이 시작됩니다. 이때 해당 비문 내용이 인터넷 전체에 공개됐다.

위의 두 단계를 통해 비문 콘텐츠가 새겨진 UTXO에 바인딩되었습니다. 위에서 소개한 사토시의 포지셔닝에 따르면 UTXO 입력에 해당하는 첫 번째 사토시에 비문이 수행되고, 비문의 내용이 표시된 트랜잭션의 입력에 포함됩니다. 위에서 소개한 사토시 유통 및 추적에 대한 소개에 따르면 특별한 내용이 새겨진 이 사토시를 양도, 구매, 판매, 분실 및 복구할 수 있습니다. 반복되는 비문은 허용되지 않으며, 그렇지 않으면 후속 비문은 유효하지 않습니다.

작은 BTC NFT 이미지를 조각하는 예를 통해 이 과정을 자세히 설명하겠습니다. 이 과정은 주로 앞서 언급한 커밋과 공개의 두 단계로 구성됩니다. 먼저 첫 번째 트랜잭션의 해시 ID가 2ddf9...f585c임을 알 수 있습니다. 이 거래의 출력에는 증인 데이터가 포함되어 있지 않으며 웹 페이지에 관련 비문 정보가 없다는 점을 알 수 있습니다.

UTXO

다음으로 해시 ID가 e7454...7c0e1인 두 번째 단계 레코드를 확인합니다. 여기에서 증언의 비문 내용인 서수 비문의 내용을 확인할 수 있다. 본 트랜잭션의 입력 주소는 이전 트랜잭션의 출력 주소이며, 0.00000546BTC(546 Satoshi)의 출력은 이 NFT를 자신의 주소로 보내는 것입니다. 동시에 이 비문이 Sat 1893640468329373에 위치한 사토시도 찾을 수 있습니다.

UTXO

UTXO

비트코인 지갑에서 이 자산을 볼 수 있습니다. 이 NFT를 거래하려면 다른 사람의 주소로 직접 보내면 됩니다. 즉, 이 UTXO를 보내면 비문 전송이 완료됩니다.

4. 비트코인 지갑

Ordinals 생태, 사토시 순환 및 비문 관련 지식이 무엇인지 이해한 후에는 현재 BRC-20, ORC-20, BRC-721, GBRC-721 및 토큰 정보 또는 NFT 작은 그림을 지원하고 표시하기 위해 해당 지갑이 필요한 기타 관련 파생 프로토콜. 이 섹션에서는 다양한 비트코인 지갑 주소의 개념과 특징을 소개합니다.

비트코인 주소는 1, 3 또는 bc1로 시작합니다. 이메일 주소와 마찬가지로 다른 Bitcoin 사용자와 공유하여 Bitcoin을 자신의 지갑으로 직접 보낼 수 있습니다. 보안 관점에서 볼 때 비트코인 주소에는 민감한 내용이 포함되어 있지 않습니다. 계정 보안을 침해하지 않고 어디든 게시할 수 있습니다. 이메일 주소와 달리 필요에 따라 언제든지 새 주소를 생성할 수 있으며, 이 모든 주소는 지갑에 직접 자금을 입금합니다. 실제로 많은 최신 지갑은 개인 정보 보호를 극대화하기 위해 모든 거래에 대해 자동으로 새 주소를 생성합니다. 지갑은 단순히 그 안에 있는 자금을 잠금 해제하는 주소와 키의 모음입니다. 먼저 비트코인 지갑 주소가 어떻게 생성되는지 알아야 합니다.

비트코인 개인 키와 공개 키

비트코인은 타원 곡선 Secp256k1을 사용합니다. "개인 키"는 1과 n-1 사이의 난수입니다. n은 큰 숫자(256비트)입니다. n은 과학적 표기법으로 다음과 같이 표현됩니다.

이 범위는 매우 커서 우리가 다른 사람의 개인 키를 추측하는 것은 거의 불가능합니다. 이 임의의 정수 개인키는 256비트로 표현될 수 있으며, 인코딩 방법은 여러 가지가 있습니다. WIF 또는 WIF 압축 형식의 개인 키가 암호화되지 않은 경우 이를 디코딩하여 원래의 "임의의 정수"를 얻을 수 있습니다. 또 다른 방법은 AES 알고리즘을 사용하여 개인 키를 암호화하는 것을 제안하는 BIP38입니다. 이 방법으로 얻은 개인 키는 문자 6P로 시작합니다. 이러한 종류의 개인 키는 다양한 비트코인 지갑으로 가져오기 전에 비밀번호를 입력해야 합니다. 이것이 우리가 일반적으로 하는 일이며, 일반적으로 사용되는 개인 키입니다.

그런 다음 타원 곡선 공식 K = kG를 사용하여 개인 키 k에서 비트코인 공개 키 K를 생성합니다. G는 secp256k1의 매개변수인 기준점입니다. 공개키의 두 가지 표현인 "비압축 형식"과 "압축 형식"인 K의 두 좌표를 얻을 수 있습니다.

UTXO

  • 압축되지 않은 형식은 두 좌표 x와 y를 직접 연결한 다음 앞에 0x04 접두사를 추가하는 것입니다.
  • 압축된 형식은 y가 짝수일 때 코드는 02 x이고, y가 홀수일 때 코드는 03 x임을 의미합니다.

비트코인 주소

아래 그림은 다양한 종류의 비트코인 주소를 보여주고 있으며, 표현 방법에는 4가지가 있습니다.

UTXO

출처: https://en.bitcoin.it/wiki/Invoice_address

1. 레거시(P2PKH) 형식

예: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u

"1"로 시작하는 주소는 비트코인의 원래 주소 형식이며 오늘날에도 여전히 사용되고 있습니다. P2PKH라고도 알려진 공개 키의 해시 계산을 통해 획득됩니다. 이는 Pay To PubKey Hash(공개 키 해시에 대한 결제)의 약어입니다.

2. 중첩된 SegWit(P2SH) 형식

예: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

주소는 "3"으로 시작하며 P2SH는 Pay To Script Hash의 약어로 Legacy 주소보다 더 복잡한 기능을 지원합니다. 중첩된 P2SH는 기존 P2SH 주소("3"으로 시작)를 가져와 SegWit 주소로 캡슐화합니다.

3. 기본 SegWit(Bech32) 형식

예: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

bc1로 시작하는 주소는 기본 Segwit 주소인 BIP0173에서 제안됩니다. Bech32로 인코딩된 주소는 SegWit용으로 특별히 개발된 주소 형식입니다. Bech32는 2017년 말 BIP173에서 정의되었습니다. 이 형식의 주요 특징 중 하나는 대소문자를 구분하지 않는다는 것입니다(주소에는 0-9, a-z만 포함됨). 따라서 입력 시 혼동을 효과적으로 방지할 수 있고 더 읽기 쉽습니다. . 주소에 필요한 문자 수가 적기 때문에 주소는 기존 Base58 대신 Base32 인코딩을 사용하므로 계산이 더 편리하고 효율적입니다. 데이터는 QR 코드에 더욱 긴밀하게 저장될 수 있습니다. Bech32는 더 강력한 보안, 더 최적화된 체크섬 오류 감지 코드를 제공하고 잘못된 주소가 발생할 가능성을 최소화합니다.

Bech32 주소 자체는 SegWit과 호환됩니다. SegWit 주소를 P2SH 주소에 넣는 데 추가 공간이 필요하지 않으므로 Bech32 형식 주소를 사용하면 처리 수수료가 더 낮아집니다. Bech32 주소는 이전 Base58(Base58Check 인코딩은 비트코인의 바이트 배열을 인간이 인코딩할 수 있는 문자열로 인코딩하는 데 사용됨) 주소에 비해 여러 가지 장점이 있습니다. QR 코드는 더 작고, 오류 방지 기능이 뛰어나고, 더 안전하며, 대문자와 소문자를 구별할 수 없으며, 소문자로만 구성됩니다. 을 사용하면 읽고, 입력하고, 이해하기가 더 쉽습니다.

4. 탭루트 형식(P2TR)

Bech32에는 단점이 있습니다. 주소의 마지막 문자가 p인 경우 p 바로 앞에 문자 q를 삽입하거나 삭제해도 체크섬이 무효화되지 않습니다.

Bech32의 위 단점을 완화하기 위해 BIP0350에서는 Bech32m 주소가 제안되었습니다.

  • 버전 0의 기본 Segwit 주소의 경우 이전 Bech32를 사용하십시오.
  • 버전 1(또는 그 이상) 기본 Segwit 주소의 경우 새로운 Bech32m이 사용됩니다.

Bech32m 주소의 경우 버전 1에서는 항상 bc1p(즉, Taproot 주소)로 시작합니다. 특히 기본 SegWit과 마찬가지로 지갑은 시드 문구와 암호 문구로 구성될 수 있습니다. 이는 계층적 결정론적 지갑에서 임의 경로에 대한 주소를 파생하는 데 사용되는 확장 공개 및 개인 키를 생성하는 데 사용됩니다. 주로 BRC-20, BTC NFT 등을 저장합니다.

5. 회사 소개

Spectrum Labs는 블록체인 연구에 주력하는 석사 및 박사 학위와 블록체인 업계의 베테랑으로 구성된 팀입니다. 우리는 사람들이 블록체인을 더 잘 이해할 수 있도록 블록체인 연구 체인 기술과 그 응용 프로그램에 전념하고 있습니다. Spectrum Labs의 주요 사업에는 연구 보고서 작성, 강좌 작성 및 도구 개발이 포함됩니다.

BTC NFT 중국 커뮤니티는 전 세계 새로운 중국인들을 위해 만들어진 BTC NFT 중국 거래소 광장입니다.

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