본문으로 건너뛰기
buybitcoinsmart

용어집 / 트랜잭션과 수수료

트랜잭션 버전 번호

트랜잭션 버전 번호란 무엇입니까?
트랜잭션 버전 번호는 트랜잭션의 처음 4바이트로, 검증자에게 상대적 타임락 같은 어떤 선택적 규칙 집합이 해당 트랜잭션에 적용되는지를 알려 줍니다.

의미가 있었던 값은 지금까지 세 가지뿐입니다. 이 필드는 소프트웨어 버전도, 프로토콜 버전도, 어떤 주소 유형이 들어 있는지에 대한 힌트도 아닙니다. 사람들이 처음 이 필드를 볼 때 대개 그렇게 짐작합니다. 합의 규칙은 이 필드에 대체로 무관심하지만 중계 정책은 그렇지 않으며, 그 간극이 이 필드에 관한 이야기의 전부입니다.

작동 방식

버전은 직렬화 형식에서 입력 개수 앞에 있는 1번째 바이트부터 4번째 바이트까지를 차지하며, Bitcoin Core는 이를 부호 있는 32비트 정수로 읽습니다.

버전 1은 원래의 값으로, 체인의 초기 몇 년 동안 모든 트랜잭션이 사용했습니다. 버전 2가 존재하는 이유는 BIP68이 기존 트랜잭션을 무효화하지 않으면서 시퀀스 번호를 상대적 타임락으로 재해석할 방법이 필요했기 때문이며, 그래서 버전 번호를 올리는 것에 새로운 의미를 붙였습니다. 2016년 7월의 블록 419,328부터 버전 2를 선언한 트랜잭션은 시퀀스 번호가 대기 기간으로 검사되고, 버전 1을 선언한 트랜잭션은 그렇지 않습니다. 현대 지갑은 타임락을 사용하든 하지 않든 기본으로 버전 2를 설정하며, 탐색기에서 조회하는 거의 모든 트랜잭션이 2로 표시되는 이유가 여기에 있습니다.

버전 3은 2024년 10월에 Bitcoin Core 28.0과 함께 등장했으며, 이름은 topology restricted transactions, 즉 TRUC입니다. 버전 3을 선언하면 더 엄격한 조건을 선택하는 것입니다. 트랜잭션은 항상 대체 가능한 것으로 취급되고, 미확인 부모는 최대 1개, 미확인 자식은 최대 1개만 가질 수 있으며, 자식은 1,000 가상 바이트, 트랜잭션 자체는 10,000 가상 바이트로 제한됩니다. 이런 제한은 핀(pinning)을 겪기 전까지는 후퇴처럼 들립니다. 핀은 상대방이 미확인 트랜잭션에 크고 값싼 후손 트랜잭션을 붙여 수수료를 올리는 일이 감당할 수 없게 만드는 상황입니다. 라이트닝 구현이 정확히 그 이유로 버전 3을 채택했습니다.

합의 규칙에는 버전 7이거나 버전 0이라는 이유로 트랜잭션을 거부하는 것이 없습니다. 표준성 규칙은 다릅니다. Bitcoin Core는 허용된 집합 밖의 버전은 중계하거나 채굴하지 않으므로, 특이한 버전은 다른 경로로 채굴업자에게 도달해야 하는 트랜잭션입니다.

확인하는 곳

모든 블록 탐색기는 트랜잭션 상세 페이지 상단 부근에 버전을 표시하며, Bitcoin Core의 decoderawtransaction은 이를 첫 번째 필드로 반환합니다.

비트코인을 구매하거나 보유하는 사람에게 이 필드는 결정이 아니라 진단입니다. 이 필드를 선택하는 것은 사용자가 아니라 지갑입니다. 실제 가치는 낯선 소프트웨어를 읽어 내는 데 있습니다. 상대적 타임락이 쓰이는 세상에서 여전히 버전 1 트랜잭션을 만드는 지갑은 오래된 것이고, 버전 3을 선언하는 결제는 거의 확실히 사람이 전송을 누른 것이 아니라 라이트닝 노드의 채널 처리 과정에서 나온 것입니다.

트랜잭션 버전 번호 vs 블록 버전 번호

트랜잭션과 블록은 모두 4바이트 버전 필드를 지니지만, 둘은 서로 아무 관련이 없습니다.

블록 버전은 합의 업그레이드를 추적합니다. 버전 2 블록은 2013년 3월의 블록 227,931에서 BIP34가 코인베이스 입력 안에 블록 높이를 요구하면서 의무가 되었고, 버전 3은 BIP66에 따라 엄격한 DER 서명 인코딩을 강제했으며, 버전 4는 CHECKLOCKTIMEVERIFY 배포와 함께 도입되었습니다. 2015년부터 이 필드는 BIP9에 따라 다시 용도가 바뀌어 일련의 신호 비트가 되었고, 채굴업자는 그중 1비트를 뒤집어 소프트 포크에 찬성표를 던질 수 있었습니다. 트랜잭션 버전은 그런 일을 하지 않습니다. 신호를 보내지 않고, 업그레이드마다 올라가지도 않으며, 네트워크 전체의 규칙 집합이 아니라 트랜잭션 1건에 적용됩니다.

혼동하기 쉬운 용어

자주 묻는 질문

왜 거의 모든 비트코인 트랜잭션이 버전 2로 표시됩니까?

지갑이 기본으로 설정하기 때문입니다. 버전 2는 BIP68이 도입한 시퀀스 번호의 상대적 타임락 해석을 활성화하는 값이며, 소프트웨어는 그 기능을 사용하든 하지 않든 이 값을 설정하므로 이것이 일반적인 값이 되었습니다.

버전 3 트랜잭션이 버전 2 트랜잭션보다 더 나은 것입니까?

더 나은 것이 아니라 제한이 더 많을 뿐입니다. 버전 3은 미확인 친족 트랜잭션에 대한 제한을 받아들이고 항상 대체 가능하므로, 라이트닝 같은 컨트랙트 프로토콜을 수수료 핀으로부터 보호합니다. 일반적인 결제에서는 이런 제한이 아무런 이점을 주지 않습니다.

관련 용어

트랜잭션과 수수료 분야의 다른 용어

이 페이지를 영어로 읽기