용어집 / 주소와 키
P2TR
별칭은 Taproot 주소, Pay-to-Taproot, bc1p 주소입니다.
- P2TR이란 무엇입니까?
- P2TR은 32바이트 길이의 조정된 공개 키 하나로 지급하므로, 한 사람이 서명했든 복잡한 계약이 협력적으로 정산되었든 키 경로 지출은 온체인에서 동일하게 보입니다.
BIP-341에 명시되어 있습니다.
Pay to taproot는 위트니스 버전 1이며, 2021년 11월 14일 블록 709,632부터 활성화되었고, bc1p로 시작하는 62자 주소로 표기됩니다. 협력적 지출은 64바이트 Schnorr 서명 하나를 공개하며 입력당 약 57.5 vbyte가 소요되어, 비트코인에서 가장 저렴한 입력입니다. 출력에 내장된 대체 규칙은 누군가가 실제로 사용하지 않는 한 보이지 않습니다.
작동 방식
P2TR 출력은 OP_1 뒤에 32바이트 푸시가 오는 형태로, 총 34바이트이며, 그 바이트들은 x-only 공개 키입니다. x-only는 y 좌표를 버리고 추론한다는 뜻으로, 다른 모든 곳에서 사용되는 33바이트 압축 키에 비해 1바이트를 절약합니다.
보이는 키는 누구도 보유한 키가 아닙니다. 내부 키를 자기 자신과 대체 스크립트 트리의 머클 루트의 해시로 조정한 것으로, 공개된 값은 협력 경로와 모든 대체 경로를 한꺼번에 커밋합니다. 이후 지출은 두 경로 중 하나를 택합니다. 키 경로는 조정된 키에 대한 서명 하나를 생성하고 그 외에는 아무것도 드러내지 않습니다. 스크립트 경로는 트리의 리프 하나와 그 리프가 트리에 속함을 증명하는 가지 해시를 드러내며, 트리의 나머지는 영원히 비밀로 남깁니다.
BIP-340의 Schnorr 서명은 키 경로를 저렴하고 프라이버시에 유리하게 만듭니다. DER로 인코딩된 ECDSA 서명의 71 또는 72바이트에 비해 64바이트이며, 선형으로 더해지므로 여러 서명자가 키를 결합해 MuSig2 아래 서명 하나를 생성할 수 있습니다. 협력하는 2-of-2 구성은 결국 한 사람이 청구서를 지불하는 것과 구별할 수 없게 됩니다.
위트니스 버전 1은 bech32m을 요구하므로 bc1p 주소는 원래의 bech32 상수가 아닌 BIP-350 체크섬 상수를 사용합니다.
확인할 수 있는 곳
Taproot를 기본값으로 사용하는 지갑은 m/86'/0'/0'의 BIP-86 가지에서 파생합니다. Bitcoin Core는 버전 22.0에서 해당 인코딩을 추가했고, 버전 23.0에서 새로운 디스크립터 지갑에 대해 tr() 디스크립터 생성을 시작했습니다.
인스크립션은 임의의 데이터를 Taproot 스크립트 경로 위트니스에 넣으며, 이 때문에 bc1p 활동의 상당 부분이 지불과 무관합니다. 이는 주소 유형의 속성이 아니라 위트니스 데이터에 대한 할인의 부산물입니다.
마찰은 주변부에 있습니다. 일부 거래소는 여전히 bc1p 출금 주소를 거부하며, 일부 구형 결제 단말기도 마찬가지입니다. 지갑 안에서는 우회 방법이 없습니다. 같은 시드에서 bc1q 주소를 사용하고, 모든 것을 Taproot 아래에 두고 싶다면 나중에 통합하십시오.
P2TR vs Taproot
Taproot는 업그레이드이고 P2TR은 그것이 만든 출력 유형입니다. 소프트 포크는 세 가지 명세를 묶었습니다. BIP-340은 Schnorr 서명을 정의했고, BIP-341은 출력 형식과 그 지출 규칙을 정의했으며, BIP-342는 트리 내부에서 사용되는 조정된 스크립트 언어인 tapscript를 정의했습니다. P2TR은 사용자가 상호작용하는 부분으로, bc1p로 시작하는 주소입니다. "I use Taproot"라고 말하는 것은 거의 항상 "내 지갑이 P2TR 주소를 준다"는 뜻이지만, 이 업그레이드는 사용자가 결코 건드리지 않을 수도 있는 스크립트 내부에서 서명이 검증되는 방식도 바꿨습니다.