Timewarp Attack은 블록 헤더의 시간을 함께 조작해 다음 난이도 계산을 왜곡하는 공격입니다. 해시레이트가 그만큼 줄지 않아도 난이도를 낮춰 블록 생성을 빠르게 할 수 있습니다.
Bitcoin은 2016개 블록마다 난이도를 다시 계산하며 평균 10분의 블록 간격을 목표로 합니다. 한 기간의 마지막 블록 시간에서 첫 블록 시간을 빼므로 실제로 측정하는 간격은 2015개뿐입니다. 한 기간의 마지막 블록과 다음 기간의 첫 블록 사이 간격은 이 차이에 포함되지 않습니다. 이 경계에서는 두 계산이 기간을 연속적으로 연결하지 않은 채 시간을 되돌릴 수 있습니다. [4] [3]
새 블록의 시간은 이전 11개 블록 시간의 중앙값인 Median Time Past(MTP)보다 커야 합니다. 하지만 바로 앞 블록의 시간보다 늦을 필요는 없습니다. 공격자는 대부분의 시간을 MTP보다 1초만 크게 설정하고, 기간의 마지막 블록에는 대략 실제 시간을 넣은 뒤 다시 과거 시간으로 돌아갈 수 있습니다. 이미 확인된 헤더를 고치는 것이 아니라 새로 채굴하는 블록의 시간을 조작합니다. [1]
고전적 시나리오는 해시레이트 과반수, 또는 Selfish Mining처럼 블록 순서에 추가 영향력을 얻은 소수를 가정합니다. 특이한 시간을 가진 블록 하나가 아니라 시간의 흐름을 지속적으로 통제해야 합니다. 고전적 공격은 약 한 달의 준비가 필요하며 그 흔적은 체인에 공개됩니다. [1]
공격한 두 번째 기간에는 블록당 평균 20분이 걸린 것처럼 만들어 난이도를 대략 절반으로 낮출 수 있습니다. 다음 기간은 더 빨리 채굴되지만 조작된 시간은 다시 난이도 하락을 요구합니다. 한 번의 조정을 네 배 범위로 제한해도 반복은 막지 못합니다. MTP에 따른 이론적 장기 한계는 초당 약 6개 블록에 해당하며, 이는 실제 네트워크 처리량의 보장이 아닙니다. [1] [3]
빠른 블록은 미래의 블록 보조금을 더 짧은 기간에 앞당겨 지급하게 합니다. 그 자체로 2100만 BTC 한도가 늘어나지는 않습니다. 노드는 데이터를 더 빨리 검증하고 전달해야 합니다. 프로세서 과부하, 부족한 연결 성능, 경쟁 분기와 잦은 재구성은 확인의 신뢰성을 떨어뜨릴 수 있습니다. [1]
BIP 113은 시간으로 지정된 절대 nLockTime 잠금을 평가할 때 이전 블록의 MTP를 사용합니다. 블록 높이로 지정한 잠금은 계속 높이를 기준으로 합니다. 공격 중에는 MTP가 실제 시계보다 훨씬 느리게 갈 수 있습니다. 시간 조건이 있는 자금이 예상보다 오래 묶이고, 복잡한 절차에서는 단계 사이의 시간 조율이 깨질 수 있습니다. [5] [1]
제안은 기간의 첫 블록 시간을 제한합니다. 앞 블록보다 7200초, 즉 두 시간을 초과해 과거일 수 없습니다. 마지막 블록 시간도 첫 블록보다 이를 수 없습니다. 명세 상태는 Complete입니다. 제안이 완성되었다는 뜻이지 활성화되었다는 뜻은 아닙니다. mainnet에서 새 합의 규칙을 강제하려면 별도 활성화가 필요합니다. [2]
헤더 시간, MTP, 2016개 블록마다의 경계, 실제 채굴 속도, 난이도, 해시레이트를 비교하세요. 고전적 공격과 Murch–Zawy 변형, testnet과 mainnet의 규칙을 구분해야 합니다. 소프트웨어가 예방적으로 더 안전한 블록 템플릿을 만들더라도, 제안된 보호 규칙을 위반하는 모든 블록을 네트워크 전체가 거부한다는 뜻은 아닙니다. [3] [2]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Difficulty Adjustment, 채굴, Proof of Work, Consensus Cleanup, Timelock, Reorg. 다음 항목에서도 이 글을 참조합니다 Consensus Cleanup.
01공격에 해시레이트 과반수가 필요한가요?+
고전적 시나리오는 과반수 또는 블록 순서에 필요한 영향력을 주는 다른 이점을 가정합니다. 그런 이점이 없는 작은 채굴자는 시간을 충분히 통제할 수 없습니다.
02Median Time Past 보호만으로 충분한가요?+
아닙니다. MTP는 개별 시간을 제한하지만 기간 경계의 빈틈을 메우지 않습니다. BIP 54는 첫 블록과 마지막 블록 시간의 관계에 추가 제한을 제안합니다.