개요
Atomic Swap 스마트 컨트랙트는 블록체인에서 두 당사자의 자산을 맞교환할 때 모든 동작이 한 번에 완료되거나 전혀 일어나지 않음을 보장하는 메커니즘을 제공함 사용자 간 신뢰 없이도 안전하게 교환할 수 있게 만드는 자동화 에스크로 역할의 코드임
핵심 개념: 원자성
원자성은 트랜잭션이 더 쪼갤 수 없는 단위로 실행됨을 의미함
- 성공 시: A가 B에게 자산 X를 이전 AND B가 A에게 자산 Y를 이전, 두 동작이 한 묶음으로 처리됨
- 실패 시: 아무 변경 없음, 각자 자산 유지 중간 상태가 발생하지 않도록 보장하는 것이 핵심임
왜 필요한가
서로 신뢰가 없을 때 누가 먼저 보낼지에 대한 교착 상태 발생함
- A: 네가 먼저 보내라는 요구
- B: 상대가 미전송 시 손실 우려 기존에는 중개자 에스크로가 필요했으나, 블록체인에서는 스마트 컨트랙트가 조건부 실행과 롤백으로 동일한 안전성을 제공함
동작 원리
일반적인 교환 흐름 정리
- 매칭 성사: 백엔드 매칭 엔진 등에서 User A(NFT X)와 User B(NFT Y) 교환 의사 확인
- 승인 부여: 각 유저가 컨트랙트에 자산 이동 권한 승인 수행, 예시 setApprovalForAll 또는 approve 호출
- 실행 트리거: 백엔드 또는 사용자가 컨트랙트의 swap(UserA, NftX, UserB, NftY) 호출
- 원자적 처리
- 컨트랙트가 소유권과 승인 상태를 검증함
- 조건 충족 시 같은 트랜잭션 내에서 양방향 이전 수행
- 하나라도 불일치 시 전체 Revert 발생, 상태 변경 없음, 가스 비용만 소모됨 이 과정 전체가 단일 트랜잭션으로 묶여 있어 중간 상태가 존재하지 않음
기술적 포인트: Simple Swap vs HTLC
- Simple Swap, 동일 체인
- 같은 체인 내에서는 컨트랙트 함수에서 transferFrom(A→B, token1)과 transferFrom(B→A, token2)를 연속 수행하면 EVM 트랜잭션 원자성에 의해 자동으로 원자적 교환 달성
- 중간 전송 실패 시 전체 트랜잭션 Revert로 이전된 자산도 원복됨
- 전제 조건: 충분한 승인, 소유권 유효성, 재진입 취약점 방지 등 기본 보안 수칙 준수
- HTLC, 타 체인 간
- 서로 다른 체인은 장부가 분리되어 단일 트랜잭션 원자성 적용 불가
- Hash Time Locked Contract 사용
- 해시 값으로 잠금 설정, 사전 이미지 공개 시 수령 가능
- 타임락 만료 시 자산 반환 경로 확보
- 체인 간 동기화와 페널티 설계가 핵심이며, 실패 시 자산 회수 가능해야 함
적용 효과
- 사기 리스크 제거에 따른 CS 비용 감소
- 별도 중개자 없이 코드 기반 에스크로로 수수료 및 운영비 절감
- 신뢰 요구 없는 즉시 교환 UX 제공
간단 예시 상황 정리
- A와 B가 각자 보유한 NFT를 교환하려는 경우
- 두 사용자가 컨트랙트에 승인 부여 완료 상태
- swap 호출 시 소유권과 승인 검증 후 동시 이전 수행
- 한쪽이 교환 직전 NFT를 이동했다면 조건 불충족으로 Revert 발생, 자산 상태 원상 유지
한 줄 요약
서로 신뢰가 없어도 코드가 조건을 검증하고 하나의 트랜잭션에서 양방향 이전을 처리해 중간 상태 없이 맞교환을 보장하는 기술임
참고자료
- ERC 표준의 승인과 전송 semantics 참고 권장