
타임락: 특정 시점까지 움직일 수 없는 코인
암호화폐 보안의 대부분은 누가 지출할 수 있는지, 즉 어떤 키가, 몇 개의 서명이 필요한지에 관한 것입니다. 타임락은 여기에 두 번째 차원인 언제를 더합니다. 타임락이 걸린 코인은 누가 키를 가지고 있든 정해진 날짜나 블록 높이 이전에는 지출할 수 없습니다.
틈새 기능처럼 들리지만, 타임락은 결제 채널, 베스팅 일정, 상속 계획, 거버넌스 지연 등 암호화폐의 많은 부분을 조용히 떠받치고 있습니다. 타임락을 이해하면 대부분의 지갑에서 마주치게 되는 한 가지 설계 선택도 이해할 수 있습니다.
두 가지 시간
블록체인은 시간을 두 가지 방식으로 측정하며, 타임락은 둘 다 사용합니다.
- 절대 시간. "2030년 1월 1일 이전에는 불가" 또는 "1,000,000번 블록 이전에는 불가"와 같은 방식입니다. 코인은 그 시점까지 잠겨 있다가 이후에는 평소처럼 작동합니다.
- 상대 시간. "이 코인을 받은 뒤 1,000블록이 지나기 전에는 불가"와 같은 방식입니다. 시계는 코인이 생성될 때부터 돌기 시작하므로, 입금마다 각자의 카운트다운이 진행됩니다.
절대 락은 베스팅의 클리프처럼 고정된 날짜에 적합합니다. 상대 락은 "30일 안에 아무도 조치하지 않으면 이 다른 키로 지출할 수 있다"와 같은 규칙에 적합하며, 이는 복구 및 상속 설계에서 자주 볼 수 있는 패턴입니다.
비트코인의 방식
비트코인에는 두 가지 수준의 타임락이 있습니다.
- 트랜잭션 수준. 모든 트랜잭션에는
nLockTime필드가 있습니다. 이 값이 미래의 시각이나 블록으로 설정되면, 네트워크는 그때까지 해당 트랜잭션을 받아들이지 않습니다. 이것이 잠그는 것은 코인이 아니라 트랜잭션입니다. 키를 가진 사람은 여전히 락이 없는 다른 트랜잭션에 서명할 수 있습니다. - 스크립트 수준. 두 개의 옵코드,
OP_CHECKLOCKTIMEVERIFY(절대)와OP_CHECKSEQUENCEVERIFY(상대)를 사용하면 주소 자체의 지출 규칙이 일정 시간의 경과를 요구하도록 할 수 있습니다. 이것들은 코인을 잠급니다. 누가 서명하든 어떤 트랜잭션도 코인을 미리 지출할 수 없습니다.
강력한 것은 스크립트 수준의 방식입니다. 이를 통해 "언제든 이 3개의 키 중 2개로, 또는 1년 후에는 이 단일 백업 키로"처럼 여러 지출 경로를 가진 주소를 만들 수 있습니다.
스마트 컨트랙트 체인의 방식
이더리움 및 유사한 체인에서 타임락은 단순한 컨트랙트 로직입니다. 컨트랙트가 현재 블록 시간을 저장된 기한과 비교하고, 기한 이전에는 실행을 거부합니다. 덕분에 타임락은 유연해집니다. 매달 토큰을 풀어 주는 베스팅 컨트랙트, 투표 통과와 실행 사이에 대기 기간을 강제하는 거버넌스 시스템, 사용자가 대응할 수 있도록 며칠 전에 변경 사항을 공지하는 업그레이드 가능한 컨트랙트 등이 그 예입니다.
마지막 용도는 보안상 중요합니다. "관리자 키가 무언가를 결정했다"와 "그것이 실행되었다" 사이에 지연이 있으면, 모두가 악의적인 변경을 알아챌 시간을 얻게 됩니다. 이는 어떤 컨트랙트든 업그레이드 권한에 대해 꼭 따져 볼 만한 질문 중 하나입니다.
타임락의 쓰임새
- 상속과 긴급 접근. 오랜 기간 활동이 없을 때에만 열리는 백업 경로가 있으면, 상속인은 자금을 되찾을 수 있지만 당신이 활동하는 동안에는 손댈 수 없습니다. 상속 계획은 결국 바로 이런 종류의 규칙으로 귀결되는 경우가 많습니다.
- 복구 키. 단독으로 행동할 수 있지만 지연 후에만 가능한 복구 키는 도난당하더라도 훨씬 덜 위험합니다. 소유자가 먼저 자금을 옮길 시간이 있기 때문입니다.
- 결제 채널. Lightning Network는 상대 타임락을 이용해 양측에 부정 행위 시도에 이의를 제기할 수 있는 시간 창을 제공합니다.
- 베스팅과 약정. 토큰을 특정 날짜까지 잠가 두면, 약속이 신뢰가 아니라 체인에 의해 강제됩니다.
감수해야 할 점
타임락에는 대가가 따릅니다.
- 당신도 잠겨 버립니다. 락은 공격자와 긴급 상황을 구별하지 못합니다. 기한 전에 돈이 필요해도 여전히 잠겨 있습니다.
- 복잡성에는 비용이 따릅니다. 경로가 여러 개인 스크립트는 만들고, 감사하고, 복구하기가 더 어렵습니다. 타임락 스크립트의 실수 하나로 자금을 영영 지출할 수 없게 될 수 있고, 그 실수는 몇 년 뒤 락이 만료될 때에야 드러날 수도 있습니다.
- 상대 락은 관리가 필요합니다. "1년간 활동이 없으면" 방식은 보통 소유자가 시계를 다시 시작하기 위해 주기적으로 코인을 갱신해야 합니다.
- 지갑 지원이 고르지 않습니다. 타임락 주소는 나중에 복구할 때 사용할 소프트웨어가 그것을 이해할 때에만 쓸모가 있습니다.
타임락과 SSP
현재 SSP의 볼트는 순수한 멀티시그입니다. 시간 기반 지출 조건이 없는 M-of-N 키 집합입니다. 당신의 2-of-2 볼트는 두 키가 모두 동의하면 언제든 지출할 수 있고, 그렇지 않으면 절대 지출할 수 없습니다. 이는 의도적인 절충입니다. 단순한 스크립트는 검증하기 쉽고, 표준 도구로 복원하기 쉬우며, 몇 년 뒤 당신을 놀라게 할 시계도 없습니다.
SSP의 복구는 시간 지연 경로가 아니라 당신의 키와 그 백업을 통해 이루어집니다. 다양한 멀티시그 구성 비교에서는 대부분의 사람에게 중요한 선택지를 다루며, 팀의 경우 SSP Enterprise 볼트에서 몇 명의 서명자가 승인해야 하는지 선택할 수 있습니다.
솔직한 요약
타임락을 사용하면 체인이 누가 코인을 옮길 수 있는지뿐 아니라 언제 옮길 수 있는지도 강제할 수 있습니다. 누군가 기다려 줄 것이라고 믿지 않고도 상속 계획, 복구 키, 결제 채널을 가능하게 합니다.
동시에 타임락은 복잡성을 더하며, 공격자만큼이나 확실하게 소유자 자신을 막아 버릴 수도 있습니다. 신중하게 사용하면 암호화폐에서 가장 유용한 도구 중 하나이지만, 가장 단순한 스크립트가 여전히 가장 안전한 경우가 많습니다.


