더블 스펜드 어택이란?
더블 스펜드 어택은 누군가가 네트워크를 속여 한 번의 결제가 인정된 것처럼 보이게 한 뒤, 조용히 다른 결제로 바꿔 같은 코인을 두 번 쓰려는 시도이다. 소매점에 신발을 계산하고 나가려다 영수증을 되돌려 돈이 다시 돌아오는 상황을 떠올려 보라. 이는 타이밍과 합의의 게임이지 마법이 아니다.
“결제가 한 번 표시되면 불가능하다.” 잘못된 생각이다. 충분한 확인이 있을 때까지도 더블 스펜드 어택은 여전히 상황을 뒤집을 수 있다. 최초로 보였다고 해서 확정된 건 아니다.
더블 스펜드 어택이 작동하는 방법
공격자가 상인에게 결제를 하면서 secretly 같은 코인을 자신에게 되돌려 주는 상충되는 결제를 준비하는 모습을 상상해 보라. 그들의 버전이 수락되기 경쟁에서 이기면 상인은 아무것도 받지 못한다.
- Setup: 공격자가 같은 코인을 소비하는 두 트랜잭션을 만든다.
- Send: 하나가 상인에게 가고, 상인은 이를 브로드캐스트되어 “결제 수신”으로 보일 수 있다.
- Compete: 공격자가 두 번째 트랜잭션을 밀어 첫 번째를 블록 포함에서 앞서게 한다.
- Confirm: 마이너들이 proof of work (PoW)를 통해 블록을 추가하고, 어느 체인이 더 빨리 자라느냐에 따라 진실처럼 보인다.
- Reorg: 공격자의 버전이 더 깊은 확인을 얻으면, 초기 버전이 고아화되어 상인의 결제가 되돌려질 수 있다.
예, 타이밍과 인센티브가 이 과정의 무거운 역할을 한다.
왜 더블 스펜드 어택이 중요한가
누군가 시도한다고 해서 대단한 건 아닐지라도, 당신은 이것이 공개 돈의 신뢰 모델을 시험한다는 점에서 중요하다고 본다.
- 이득: 어떻게 작동하는지 아는 것이 안전한 확인 정책을 선택하고 즉시 후회를 피하는 데 도움을 준다.
- 관점: 개방 시스템은 인센티브 위에서 운영된다; 더 많은 해시레이트와 정직한 참여가 공격을 더 어렵게 만든다 Decentralized 네트워크에서.
- 관련성: 암호화폐 지불, 거래소, 심지어 코인을 깊은 확인 이전에 받는 모든 앱에서 이를 볼 수 있다.
큰 결제의 경우 여러 확인을 기다리십시오. 작은 거래의 경우 한도, 신용도 확인, 결제 채널과 같은 스마트 위험 규칙을 사용하세요. 미래의 자신이 감사할 겁니다.
주요 특징 - Double Spend Attack
다양한 일반적인 결제 실패와 차별화되는 점은 다음과 같습니다:
- 타이밍: 트랜잭션이 깊이 확인되기 전의 짧은 창을 겨냥한다.
- Reorg: 체인이 공격자의 버전이 우선시되도록 재구성되는 것을 기대한다.
- 인센티브: 정직한 트랜잭션보다 우위를 점하기 위해 마이너와 네트워크의 인센티브를 악용한다.
- 범위: 최종 목적은 하나의 코인 세트로 이루어진 고전적 double spending이다.
Variations
암호화 대화 및 개발자 스레드에서 몇 가지 변형을 들여다볼 것이다:
- Race: 두 트랜잭션 간의 빠른 방송 경쟁으로 흔히 Race Attack이라 한다.
- Finney: 마이너가 충돌하는 트랜잭션으로 블록을 미리 채굴한 다음, 이를 공개하기 전에 피해자와 함께 사용한다. 이를 Finney Attack라고 한다.
- Majority: 충분한 해시레이트가 있으면 공격자가 최근 히스토리를 다시 쓸 수 있는데, 이는 고전적인 51% Attack이다.
제로 컨펌은 비최종이다. 결제를 즉시 수락하면 속도 대 안전의 선택을 하는 것이며, 그 트레이드오프는 당신 몫이다.
Example
사기가점에서 노트북을 매장에서 사고, 점원이 fresh한 트랜잭션을 수락하고, 수 분 뒤 체인이 공격자의 상충되는 지출을 지지하게 되어 상인은 코인과 노트북을 잃게 된다.
Fun Fact
사토시는 초기 더블 스펜드 트릭을 포럼에서 논의하며 인내와 확인이 대부분의 일반적인 시도를 훨씬 앞서 이긴다고 지적했다. 옛 조언이었지만 여전히 확고하다.
Wrap-Up
한 줄로 정리하면: 더블 스펜드 어택은 합의에 대한 타이밍 플레이이고, 당신의 최선의 방어는 확인 규율과 약간의 거리두기