본문으로 건너뛰기
buybitcoinsmart

용어집 / 개발자 참고 자료

PP script

PP script란 무엇입니까?
PP script는 지불인이 그대로 재현해야 했던 원시 잠금 스크립트를 담은 BIP70 출력의 필수 필드였으며, 이는 트랜잭션 출력에 최종적으로 남는 것과 동일한 바이트입니다.

BIP-70에 명시되어 있습니다.

BIP70이 네트워크로 보낸 모든 것 가운데 블록체인까지 살아남은 부분은 스크립트뿐입니다. 인증서, 메모, 만료 시각은 모두 오프체인에 머물렀고, 잠금 스크립트는 트랜잭션에 그대로 들어가 오늘날 미사용 출력 집합에 남아 있습니다. 코인을 누가 지출할 수 있는지를 결정하는 것은 요청 안의 다른 어떤 요소가 아니라 바로 이 바이트입니다.

작동 방식

상태: 역사적입니다. 스크립트는 Output 메시지의 2번 필드였고, 금액이 기본값 0이었기 때문에 판매자가 생략할 수 없었던 유일한 부분이었습니다. Bitcoin Core는 0.20.0에서 이 메시지를 더 이상 해석하지 않게 되었으며, 해당 버전은 2020년 6월 3일에 출시되었습니다.

주소 대신 스크립트를 보낸 것은 의도적인 선택이었습니다. 주소는 사람을 위한 전송 형식입니다. base58check 또는 bech32에 접두사와 체크섬을 붙이고, 받아 적고 소리 내어 읽는 상황에서도 견디도록 고른 문자 집합을 사용합니다. 주소를 받은 지갑은 무엇이든 만들기 전에 그것을 스크립트로 디코딩해야 합니다. BIP70은 이 왕복 과정을 건너뛰고 네트워크가 실제로 사용하는 형식으로 목적지를 지정했습니다.

표준 형식은 크기가 정해져 있으며, 이를 알면 블록 탐색기를 훨씬 쉽게 읽을 수 있습니다.

  • 공개 키 해시 지불, 25바이트: 복제하고, 해시하고, 20바이트를 푸시하고, 일치 여부를 확인하고, 서명을 검증합니다.
  • 스크립트 해시 지불, 23바이트: 해시하고, 20바이트를 푸시하고, 일치 여부를 확인합니다.
  • 단일 키 segwit, 22바이트: 0인 버전 바이트와 20바이트 해시입니다.
  • 스크립트 해시 segwit, 34바이트: 버전 0과 32바이트 해시입니다.
  • Taproot, 34바이트: 버전 1과 32바이트 키입니다.

이 형식이 포기한 것은 오류 검출입니다. bech32는 89자 이하의 주소에서 네 글자를 바꾸면 반드시 잡아내며, base58check는 4바이트 해시로 훼손을 잡아냅니다. 원시 스크립트 바이트에는 둘 다 없습니다. 주소에서 비트 하나가 뒤집히면 지갑이 거부하는 문자열이 되지만, 스크립트에서 비트 하나가 뒤집히면 아무도 지출할 수 없는 유효한 출력이 됩니다.

확인할 수 있는 곳

스크립트 유형은 같은 크기의 출금 두 건에 수수료가 다르게 붙을 수 있는 이유입니다.

주소 형식을 고르게 하는 거래소는 이용자를 대신해 스크립트를 고르는 셈입니다. 단일 키 segwit 출력은 레거시 형식의 25바이트에 비해 22바이트를 차지하는데, 이는 사소합니다. 그러나 나중에 지출할 때는 그렇지 않습니다. 해당 입력은 약 68 가상 바이트를 차지하는 반면 레거시 입력은 약 148을 차지하므로, 오늘 받는 코인은 앞으로 그 코인이 존재하는 동안 내야 할 수수료의 일부를 결정합니다. 20 sat/vB에서는 결국 지출하는 입력마다 약 1,600 사토시의 차이가 납니다.

탐색기는 표시하는 각 출력의 유형을 알려주므로, 실제로 어떤 유형으로 입금받았는지 확인할 수 있습니다. 최신 소프트웨어는 목적지를 출력 디스크립터로 설명합니다. 이는 한 번에 스크립트 하나가 아니라 스크립트 계열 전체와 그 파생을 아우르는 간결한 텍스트 형식입니다.

이 모든 것에서 지킬 만한 습관은 간단합니다. 자체 화면이 있는 기기에서 목적지를 확인하십시오. 클립보드의 주소를 바꾸는 악성코드는 흔하며, 실제 수취인을 표시하는 하드웨어 지갑이 이를 잡아내는 확인 절차입니다.

PP script vs pubkey script

BIP70 필드는 그릇이었고, pubkey script는 그 자체입니다. pubkey script는 scriptPubKey 또는 잠금 스크립트라고도 하며, 지금까지 생성된 모든 트랜잭션 출력에 나타나 지출자가 충족해야 할 조건을 명시합니다. PP script는 아무도 실행하지 않는 프로토콜 안에서 그 사본 하나가 거쳐 간 특정한 자리였습니다. 이 필드 이름은 BIP70 문서를 읽을 때만 사용하고, 그 밖의 모든 경우에는 일반 명칭을 사용하십시오.

혼동하기 쉬운 용어

자주 묻는 질문

BIP70은 왜 비트코인 주소 대신 스크립트를 보냈습니까?

스크립트가 바로 트랜잭션이 실제로 담고 있는 것이기 때문입니다. 주소는 같은 목적지를 체크섬으로 감싸 인코딩한 것이므로, 스크립트를 보내면 디코딩 단계가 하나 줄어드는 대신 오타를 잡아내는 체크섬을 잃게 됩니다.

출금할 주소 형식이 수수료를 바꿉니까?

그렇습니다. 대부분 나중에 코인을 지출할 때 바뀝니다. 단일 키 segwit 입력은 약 68 가상 바이트를 차지하는 반면 레거시 입력은 약 148을 차지하므로, 20 sat/vB에서는 입력마다 약 1,600 사토시를 절약합니다.

다음에 읽을 글

관련 용어

개발자 참고 자료 분야의 다른 용어

이 페이지를 영어로 읽기