레이스 공격 (Race Attack)

중급보안수정일

레이스 공격은 같은 코인을 쓰는 두 거래를 거의 동시에 전파해, 컨펌(블록 포함)을 기다리지 않고 결제를 받은 상대방을 속이는 이중 지불 공격입니다. 이름의 '레이스(race)'는 두 거래 중 어느 쪽이 먼저 블록에 들어가느냐의 '경쟁'을 뜻하며, 사람의 인종과는 관계가 없습니다.

자세히 알아보기

공격자는 판매자에게 대금을 보내는 거래 A와, 같은 입력(UTXO)을 자기 자신에게 되돌리는 거래 B를 만듭니다. 거래 A는 판매자의 노드에, 거래 B는 더 높은 수수료를 붙여 다른 노드와 채굴자에게 퍼뜨립니다. 판매자가 멤풀에서 거래 A를 보고 곧바로 상품을 넘기면, 실제로는 거래 B가 블록에 포함되어 거래 A는 무효가 됩니다. 판매자는 상품도 대금도 잃게 됩니다.

이 공격은 해시파워가 필요 없다는 점에서 51% 공격과 다릅니다. 노릴 수 있는 대상은 오직 '0-컨펌(미확인 거래) 결제'를 받아 주는 상대방뿐입니다. 거래가 블록에 포함되고 몇 개의 블록이 그 위에 쌓이면, 같은 수법으로 되돌리는 것은 사실상 불가능해집니다.

소프트웨어 공학에서 말하는 '경쟁 상태(race condition)'와는 다른 개념이지만, 두 처리 중 먼저 끝나는 쪽이 결과를 정한다는 점은 닮았습니다.

블록체인·암호화폐에서는

비트코인에서는 RBF(수수료 대체) 정책이 널리 쓰이면서 멤풀에 있는 미확인 거래를 더 높은 수수료의 충돌 거래로 바꾸기가 쉬워졌고, 그만큼 0-컨펌 결제는 더 위험해졌습니다. 그래서 거래소와 결제 서비스는 입금을 일정 수의 컨펌 이후에만 반영합니다. 이더리움이나 트론처럼 계정 모델을 쓰는 체인에서도 같은 논스의 거래를 바꿔치기할 수 있으므로, USDT 같은 스테이블코인 입금 역시 블록 포함과 확정(finality)을 확인한 뒤 처리하는 것이 원칙입니다.

방어 방법은 단순합니다. 금액이 클수록 더 많은 컨펌을 기다리고, 멤풀에서 충돌 거래를 감시하며, 여러 노드에 연결해 한 노드만 보고 판단하지 않는 것입니다.

주의할 점

레이스 공격과 비슷한 이름의 공격으로 '피니 공격(Finney attack)'이 있습니다. 피니 공격은 채굴자가 충돌 거래를 미리 담은 블록을 숨겨 두었다가 결제 직후 공개하는 방식이라 채굴 능력이 필요하다는 점에서 다릅니다. 두 공격 모두 미확인 거래를 '받은 돈'으로 취급할 때만 성립하므로, 받는 쪽의 정책이 가장 확실한 방어입니다.

쉽게 말하면

같은 수표를 두 사람에게 동시에 써 주고, 은행이 먼저 처리하는 쪽만 진짜가 되도록 하는 속임수입니다. 은행 확인(컨펌)을 기다린 사람만 안전합니다.

예시

공격자가 0.1 BTC짜리 UTXO 하나로 판매자에게 보내는 거래(수수료 낮음)와 자기 주소로 보내는 거래(수수료 높음)를 동시에 전파합니다. 다음 블록에 후자가 포함되면 판매자가 받은 '미확인 입금'은 사라집니다.

최근 스테이블코인 동결·소각 기록

전체 기록 보기 → · 2026년 10월 12일~18일 주간 리포트 →
시각 (KST)네트워크행위금액주소원문
2026-10-20 10:24이더리움동결109,000 USDT0x89012a…24919b원문 ↗
2026-10-20 10:23이더리움동결94,866.74 USDT0xd74feb…646b5e원문 ↗
2026-10-20 10:18트론동결802,490.31 USDTTLhouDRQ…oStg4z원문 ↗
2026-10-20 10:18트론동결609,924.27 USDTTP6jUy5q…kQXn6k원문 ↗
2026-10-20 10:18트론동결640,020.18 USDTTJhpBRFX…8eCxJu원문 ↗

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.