본문으로 건너뛰기
buybitcoinsmart

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

상대적 타임락

상대적 타임락이란 무엇입니까?
상대적 타임락은 해당 트랜잭션 입력이 사용하는 코인이 자체 확인 시점으로부터 정해진 블록 수나 512초 간격만큼 경과하기 전까지 유효하지 않게 만듭니다.

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

BIP-68은 각 입력의 4바이트 시퀀스 필드에 합의상 의미를 부여했지만, 버전 2 이상을 선언한 트랜잭션에만 적용됩니다. 이 규칙은 2016년 5월 1일에 열린 비트 0의 BIP-9 버전비트 배포를 통해 네트워크에 도입되었고, BIP-112 및 BIP-113과 함께 배포되었습니다. 복구 스크립트나 채널 스크립트 뒤에 코인을 보관하고 있다면, 그 코인이 이동할 때마다 카운트다운이 다시 시작됩니다.

작동 방식

상대적 타임락은 시퀀스 필드에 인코딩되며, 최상위 비트가 무언가 일어날지 여부를 결정합니다.

비트 31이 설정되어 있으면 이 필드는 합의상 의미를 지니지 않으며 입력은 어느 블록에나 포함될 수 있습니다. 비트 31이 해제되어 있으면 노드는 필드에 0x0000ffff 마스크를 적용하고 남은 16비트를 대기 기간으로 읽습니다. 비트 22가 단위를 선택합니다. 해제되어 있으면 숫자는 블록을 세며, BIP-68은 범위를 0에서 65,535블록으로 제시하는데, 이를 1.25년이라고 부릅니다. 설정되어 있으면 숫자는 512초 기간을 세며, BIP는 이 범위를 33,554,431초 미만, 약 1.06년으로 명시합니다. 이 특이한 512는 블록이 대략 600초마다 도착하기 때문에 선택되었으며, 따라서 두 단위는 같은 16비트 안에서 비슷한 범위를 포괄합니다.

블록 기반 값 n을 지닌 입력은 자신이 사용하는 출력을 채굴한 블록 이후 n블록 뒤에 포함될 수 있으므로, 1이라는 값은 그다음 다음 블록이 아니라 바로 다음 블록에서 충족됩니다. 시간 기반 값은 시계와 비교되지 않습니다. BIP-68은 출력을 채굴한 블록의 이전 블록의 중간 과거 시간부터 측정하며, 생성 중인 블록의 이전 블록의 중간 과거 시간과 비교하고, BIP-113은 그 수치를 최근 11개 블록 타임스탬프의 중앙값으로 정의합니다. 원시 타임스탬프 대신 중앙값이 사용되는 이유는 합의 규칙이 중앙값의 단조 증가를 보장하기 때문이며, 이로써 채굴업자가 블록 시간에 대해 거짓말을 하여 추가 수수료를 받는 것을 막습니다.

두 가지 예외가 중요합니다. 이 규칙은 코인베이스 트랜잭션 입력의 시퀀스 필드에는 결코 적용되지 않습니다. 그리고 16부터 21까지 여섯 위치는 정의되지 않은 채 남겨져, 이후 소프트 포크가 새 필드 없이 세분성이나 상한을 높일 수 있습니다.

볼 수 있는 곳

BIP-112는 자금이 입금된 후 30일 뒤에 만료되는 에스크로 계약을 예로 들어 상대적 타임락의 작동을 설명합니다.

Alice, Bob 그리고 에스크로 담당자는 2-of-3 스크립트를 공유합니다. 세 사람 중 어느 둘이든 언제든 사용할 수 있으며, 지연 후에는 Alice가 단독으로 서명합니다. 이 BIP는 트리거에 대해 단호합니다. 에스크로 주소로의 지급이 확인되기 전까지 시계는 째깍거리기 시작하지 않습니다. 이것이 달력상 기한과의 전적인 차이이며, 재작성 없이 하나의 스크립트가 모든 새 에스크로에 쓰이는 이유입니다.

이 규칙은 멤풀의 동작 방식도 형성합니다. Bitcoin Core의 시퀀스 잠금 검사는 현재 체인 끝이 아니라 다음 블록의 높이를 기준으로 실행되며, 확인되지 않은 부모가 그 블록에서 확인될 것처럼 취급하므로, 대기가 다음 블록과 함께 만료되는 지출은 사용 가능해지기 직전에 약간 미리 릴레이됩니다. 그 여유를 벗어나면 대기열은 없습니다. 미성숙 지출은 보류가 아니라 무효입니다.

상대적 타임락 vs OP_CHECKSEQUENCEVERIFY

상대적 타임락은 트랜잭션 입력에 존재하는 반면, OP_CHECKSEQUENCEVERIFY는 코인의 스크립트에 존재하며 사용하는 입력이 이를 준수하는지 검사합니다.

BIP-68 단독으로는 아무도 구속하지 않습니다. 지출을 구성하는 사람이 시퀀스 값을 선택하므로, 거기에 적힌 지연은 선호일 뿐 상대방이 의존할 수 있는 규칙이 아닙니다. BIP-112는 이 필드를 스크립트에서 읽을 수 있게 함으로써 이 틈을 메웁니다. 트랜잭션 버전이 2 미만이거나, 입력 시퀀스에 비활성화 플래그가 설정되어 있거나, 두 값의 단위가 일치하지 않거나, 스택의 숫자가 마스크된 시퀀스를 초과하면 이 오피코드는 실패합니다. 비활성화 플래그를 지닌 스택 값 자체는 오피코드가 NOP처럼 동작하게 하며, 이는 향후 소프트 포크를 위한 의도적인 여지입니다. 이러한 검사가 갖추어져야만 대기가 에스크로 담당자나 라이트닝 상대방이 의존할 수 있는 것이 됩니다.

혼동하기 쉬운 용어

자주 묻는 질문

상대적 타임락은 제가 만든 날부터 세어집니까?

아닙니다. 사용되는 코인의 확인 시점부터 셉니다. BIP-112는 에스크로 예시에서 이를 분명히 밝힙니다. 에스크로 주소로의 지급이 확인되기 전까지 시계는 째깍거리기 시작하지 않습니다.

제 상대적 타임락이 왜 무시됩니까?

트랜잭션이 버전 1을 선언했거나 입력의 시퀀스 필드 비트 31이 설정되어 있기 때문입니다. BIP-68은 버전 2 이상에서만 적용되며, 비활성화 비트가 설정되면 필드에서 모든 합의상 의미가 제거됩니다.

시간 기반 상대적 타임락은 시계로 측정됩니까?

실제 시계 시간으로 측정되지는 않습니다. 시간 기반 잠금은 두 중간 과거 시간 값 사이에서 비교되며, BIP-113은 그 수치를 최근 11개 블록 타임스탬프의 중앙값으로 정의합니다. 이 값은 합의 규칙에 의해 단조 증가하도록 강제되므로, 채굴업자가 트랜잭션을 조기에 성숙시키기 위해 블록의 시간을 앞당길 수 없습니다.

다음에 읽을 글

관련 용어

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

이 페이지를 영어로 읽기