용어집 / 트랜잭션과 수수료
Coinbase 블록 높이
- Coinbase 블록 높이란 무엇입니까?
- 코인베이스 블록 높이는 블록 자체의 높이로, 코인베이스 필드의 첫 바이트들로 기록되며, BIP34는 2013년 3월부터 모든 블록에 이를 요구했습니다.
BIP-34에 명시되어 있습니다.
이것은 실제 버그에 대한 비트코인의 가장 저렴한 해결책입니다. 이 규칙 이전에는 동일한 코인베이스 트랜잭션을 가진 두 블록이 동일한 트랜잭션 ID를 만들어냈으며, 이는 2010년의 91,842번 블록과 91,880번 블록에서 일어났습니다. 높이를 기록하면 모든 코인베이스가 고유해지고, 누구나 블록 자체에서 블록의 위치를 읽을 수 있게 됩니다.
작동 방식
높이는 스크립트 푸시로 저장되므로, 파서는 길이 바이트 1개를 읽은 다음 그만큼의 숫자 바이트를 읽습니다.
숫자는 리틀 엔디언으로 최소 부호화되어 기록되며, 이는 비트코인 스크립트가 모든 정수를 부호화하는 방식입니다. 현재 높이에서는 3바이트가 필요하므로, 푸시는 03을 읽은 다음 높이를 읽습니다. 따라서 반감기 블록인 840,000번 블록은 코인베이스를 03 40 d1 0c로 시작합니다. 즉 3바이트 푸시 다음에 최하위 바이트부터 시작하는 840,000이 옵니다. 3바이트는 8,388,607까지의 모든 높이를 포괄하며, 10분 블록 기준으로 그것은 1세기 이상 앞의 일이고, 그날이 오면 부호화는 스스로 4바이트로 넓어집니다.
BIP34는 블록 버전 번호를 기준으로 한 채굴업자 활성화 소프트 포크로 배포되었습니다. 버전 2를 선언한 블록은 1,000개의 롤링 윈도 내에서 집계되었습니다. 최근 1,000개 중 750개에 이르면 높이가 없는 버전 2 블록은 무효가 되었고, 950개에 이르면 이전 버전 1 형식은 완전히 거부되었습니다. 버전 1 블록이 마지막으로 수용된 것은 227,835번 블록이었고, 타임스탬프는 2013년 3월 24일이었으며, Bitcoin Core는 여전히 활성화 높이를 227,931로 하드코딩하고 있습니다.
이 규칙은 또한 비용이 큰 검사를 무료 검사로 대체했습니다. BIP30은 이미 새 트랜잭션이 기존의 미사용 트랜잭션 ID를 재사용하는 것을 금지했지만, 이를 강제하려면 모든 블록의 모든 트랜잭션마다 데이터베이스 조회가 필요했습니다. 모든 코인베이스가 구조적으로 서로 다르게 되면 중복 ID가 발생할 수 없으므로, 노드는 전환 이후 채굴된 모든 것에 대해 그 조회를 건너뜁니다. 검증을 느리게 하지 않고 빠르게 만드는 합의 규칙은 주목할 만한 가치가 있을 만큼 드뭅니다.
확인할 수 있는 곳
어떤 블록 탐색기든 디코딩된 코인베이스를 출력하며, 높이는 그 안에서 가장 먼저 나오는 항목입니다.
문제가 드러나는 곳은 채굴입니다. 풀은 노드가 제공하는 템플릿으로 자체 코인베이스 트랜잭션을 조립하며, 잘못된 높이를 삽입하는 풀은 대개 방금 도착한 블록과 경쟁하는 중에 그렇게 하여 모든 노드가 bad-cb-height 오류와 함께 폐기하는 블록을 만들어냅니다. 전력은 소모되고 작업 증명은 유효하며 보상은 없습니다.
전체 체인을 보유하지 않고 블록에 관한 무언가를 증명하려는 사람에게도 중요합니다. 블록 헤더는 자체 높이를 명시하지 않으므로, 제네시스 블록까지 거꾸로 세어야 알 수 있습니다. 전체 블록은 머클 루트에 포함되고 따라서 작업 증명에도 포함되는 위치에 그것을 명시하므로, 코인베이스와 머클 분기로 뒷받침되는 높이 주장은 그 자체로 성립합니다. 사이드체인, 타임스탬프 서비스, 라이트 클라이언트 프로토콜은 모두 그 속성에 의존합니다.
Coinbase 블록 높이 vs 블록 높이
블록 높이는 체인 내의 위치이며, 사토시가 2009년 1월 3일에 채굴한 블록까지 거꾸로 세어 누구나 도달할 수 있는 숫자입니다. 코인베이스 블록 높이는 합의가 요구하기 때문에 블록 자체의 데이터 안에 기록된 같은 숫자입니다. 하나는 블록이 어디에 있는지에 대한 관찰이고, 다른 하나는 채굴업자가 틀리면 블록을 잃을 수 있는 필드입니다.