01 · Объяснение

USDT 블랙리스트의 해부: Tether는 어떻게 토큰을 동결하는가

2017년 이후 Tether는 40억 달러가 넘는 자산을 보유한 약 8,000개의 블록체인 주소를 블랙리스트에 등록했습니다. 우리는 그 기술적 메커니즘을 분석합니다: 평범한 전송이 어떻게 AddedBlackList 이벤트가 되는지, preban → ban이 무엇을 의미하는지, 주소를 확인하는 방법, 그리고 기회의 창이 어디에 있는지.

explainerCryptoAlert Research

Tether는 임의의 블록체인 주소에 보유된 USDT를 동결할 수 있는 기술적 능력을 가지고 있습니다. 그러한 동결 이후, 주소 소유자는 USDT가 여전히 잔액에 표시되더라도 더 이상 그것을 전송할 수 없습니다.

2017년 이후 Tether는 합계 40억 달러가 넘는 가치를 지닌 약 8,000개의 블록체인 주소에 대한 블랙리스트 등록을 개시해 왔습니다.

USDT 유통의 전체 규모에 비하면 이 수치는 작아 보일 수 있습니다. 그러나 개별 시장 참여자에게 블랙리스트는 결정적인 사건이 됩니다——특히 자신이 어떤 불법 행위도 하지 않았다고 확신할 때는 더욱 그렇습니다. 그러한 경우는 보이는 것만큼 드물지 않습니다. 일부 주소가 나중에 해제된다는 사실은, 개별 결정이 때로는 발동자의 잘못된 결론에 근거해 내려졌음을 확인해 줍니다.

블랙리스트 등록은 임의로 일어나지 않습니다——근거가 있어야 하며, 그 절차에는 법적 측면과 운영적 측면이 모두 있습니다. 우리는 실제로 누가 결정을 내리는지에 관한 별도의 글에서 이러한 측면을 다룹니다. 이 글의 목적은 USDT 블랙리스트 등록의 기술적 메커니즘을 설명하는 것입니다.

01기초

일반적인 USDT 전송은 어떻게 작동하는가

동결 과정을 이해하려면, 먼저 일반적인 USDT 전송이 기술적으로 어떻게 일어나는지 이해할 필요가 있습니다.

TRON 네트워크에서의 USDT 트랜잭션 예를 살펴봅시다. 사용자가 자신의 주소에서 수신자의 주소로 USDT 전송을 개시합니다. 그 순간, 트랜잭션은 TRON의 USDT 스마트 컨트랙트와 상호작용합니다:

TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t

스마트 컨트랙트는 잔액 회계와 토큰 전송 처리를 담당하는 것입니다. 전송이 실행되면, 컨트랙트 내부의 토큰 전송 로직이 호출됩니다. 컨트랙트의 이벤트 수준에서 이것은 Transfer 이벤트——즉 송신자에서 수신자로의 자산 이동——로 기록됩니다.

간단히 말하면, 그 과정은 다음과 같습니다:

  1. 사용자가 USDT 전송을 개시함;
  2. 트랜잭션이 USDT 스마트 컨트랙트를 호출함;
  3. 컨트랙트가 전송 조건을 검증함;
  4. 제한이 없으면 송신자의 잔액이 감소하고 수신자의 잔액이 증가함;
  5. Transfer 이벤트가 온체인에 기록됨.

Ethereum의 USDT도 유사하게 작동합니다: 전송은 토큰의 스마트 컨트랙트를 통해 처리되고, 성공한 전송은 Transfer 이벤트로 기록됩니다. TRON과 Ethereum의 주요 차이는 기술적 환경에서 비롯됩니다: 토큰 표준, 주소 형식, 수수료, 트랜잭션 처리 속도.

주요 네트워크의 USDT 컨트랙트
02통제

USDT 스마트 컨트랙트의 통제 메커니즘

일반적인 전송 외에도, USDT 스마트 컨트랙트에는 발행자가 특정 주소에 대한 토큰 유통 방식을 관리할 수 있게 하는 관리 기능이 있습니다. 발행자는 주소를 블랙리스트에 추가하고, 블랙리스트에서 제거하며, 블랙리스트에 등록된 주소에 보유된 USDT를 소각할 수 있습니다.

이러한 동작은 컨트랙트 이벤트를 통해 반영됩니다. 블랙리스트를 분석하는 데 세 가지 이벤트가 핵심입니다:

  • AddedBlackList — 주소를 블랙리스트에 추가하는 것;
  • RemovedBlackList — 주소를 블랙리스트에서 제거하는 것;
  • DestroyedBlackFunds — 블랙리스트에 등록된 주소의 자금을 소각하는 것.

간단히 말하면, 그 로직은 다음과 같습니다:

  1. Tether가 주소를 BlackList에 추가함;
  2. 스마트 컨트랙트가 이 주소를 블랙리스트에 등록된 것으로 인식하기 시작함;
  3. 출금이 시도되면, 컨트랙트가 주소 상태를 확인함;
  4. 주소가 BlackList에 있으면, 전송이 거부됨;
  5. 주소가 BlackList에 없으면, 전송이 진행될 수 있음.
032단계 블랙리스트

preban에서 ban으로: 블랙리스트는 온체인에 어떻게 나타나는가

TRON의 USDT 블랙리스트 등록은 하나가 아니라 두 개의 관련된 온체인 단계로 기록됩니다: 먼저 Tether의 MultisigWallet에 작업이 생성되고, 그다음 그 작업이 실행되어 주소가 BlackList에 추가됩니다.

이 순서는 편의상 두 개의 이벤트로 나눌 수 있습니다:

  1. Preban — Tether의 MultisigWallet에서의 작업 생성.
  2. Ban — 작업의 실제 실행, 이후 주소가 BlackList에 진입.

Preban: Tether의 MultisigWallet에서의 작업 생성

preban 단계에서는 multisig 컨트랙트의 메서드가 호출됩니다. 이 트랜잭션에서 주소는 아직 실제로 블랙리스트에 등록되지 않습니다——단지 multisig가 필요한 승인 후에 실행해야 할 작업을 생성할 뿐입니다.

preban 트랜잭션의 주요 매개변수:

MultisigWallet에서의 preban 트랜잭션 매개변수

preban 트랜잭션의 이벤트 로그에는 multisig 컨트랙트의 이벤트가 기록됩니다. TransactionId는 나중에 실행될 Tether의 MultisigWallet 내 작업의 내부 식별자입니다.

블랙리스트에 등록될 주소는 어디에 숨어 있는가

블랙리스트에 등록될 주소는 preban 트랜잭션의 이벤트 로그에 직접 표시되지 않습니다. 그것은 Data 매개변수 안에 숨겨져 있으며, Solidity ABI 규칙에 따라 디코딩해야 합니다.

작업이 blacklist 함수 호출을 준비하고 있다면, 데이터 구조는 다음과 같습니다:

0xecb93c0 + 32-byte address argument
(<function selector> + <ABI-encoded arguments>)

처음 4바이트는 함수 선택자입니다. 나머지는 ABI로 인코딩된 인수입니다. 주소를 추출하려면 인수의 마지막 20바이트를 취해 디코딩합니다.

TRON에서 주소는 두 가지 형식으로 표시될 수 있습니다:

  • Hex 형식41 접두사로 시작;
  • Base58Check 형식 — 사람이 읽을 수 있으며, T로 시작.

Ban: 실제로 주소를 BlackList에 추가하기

실제 블랙리스트 등록은 나중에, 생성된 multisig 작업이 실행될 때 일어납니다. ban 트랜잭션에서 USDT 컨트랙트 로그에는 다음이 표시됩니다:

AddedBlackList(address target)

이 이벤트는 주소가 BlackList에 추가되었다는 온체인 확인입니다.

04반응 창

기회의 창: preban에서 ban까지의 시간

preban과 ban 사이에는 시간 간격이 있습니다. AddedBlackList 이벤트가 나타나기 전에는, 주소가 아직 BlackList에 없으며 기술적으로 USDT를 사용할 능력을 유지합니다. 이 간격이 바로 우리가 기회의 창이라고 부르는 것입니다.

며칠
한때의 창
2017년~2020년대 초: preban과 ban 사이——최대 며칠
몇 시간
지금의 창
일반적인 평균: 1~24시간
몇 분
조율된 경우에는
일괄 블랙리스트 이벤트에서——수십 초에서 몇 분

창은 한때 며칠이었습니다. 지금은 눈에 띄게 짧아졌습니다——때로는 몇 시간, 때로는 몇 분입니다. 이는 주소 소유자에게 예측 가능성을 낮추고 신속한 대응을 결정적으로 중요하게 만듭니다.

AddedBlackList 이벤트 이전에는 주소가 여전히 USDT 출금을 수행할 수 있습니다. 따라서 임박한 블랙리스트의 위험을 감지하는 선의의 사용자 관점에서 합리적인 행동 순서는 다음과 같습니다: 먼저 자금을 이동시켜 동결될 수 있는 주소에서 빼내고, 그다음 그 이유를 처리하는 것입니다.

05ban 이후

실제 ban 이후 무슨 일이 일어나는가

블랙리스트에 등록된 후, 주소는 더 이상 USDT를 전송할 수 없습니다. 출금은 스마트 컨트랙트 로직에 의해 거부됩니다. 자금은 계속 잔액에 표시되며, 입금은 기술적으로 그 주소에 도착할 수 있습니다.

다음에 무슨 일이 일어나는지는 블랙리스트 등록의 근거에 달려 있습니다:

  • 주소는 무기한으로 BlackList에 남아 있을 수 있습니다;
  • 주소는 RemovedBlackList를 통해 해제될 수 있습니다;
  • 자금은 DestroyedBlackFunds를 통해 소각될 수 있으며, 새로운 주소로 재발행될 가능성이 있습니다.

실제 ban 이후, 작업은 법적 및 분석적 트랙으로 옮겨 갑니다: 위험의 원천 식별, 온체인 분석 준비, 자금 출처 확인, 그리고 Tether 및 블랙리스트를 발동한 국가 기관과의 소통——관련 법률 자문을 참여시켜서.

06징후

당신의 주소가 Tether에 의해 블랙리스트에 등록되었는지 알아보는 방법

사용자는 종종 블랙리스트를 즉시 알아차리지 못합니다. 언뜻 보기에 모든 것이 정상으로 보입니다: USDT가 잔액에 표시되고, 네트워크가 작동하며, 주소가 올바르고, 입금이 성공적으로 처리됩니다. 그러나 USDT를 보내려고 하면 트랜잭션이 실패합니다.

주소의 다른 작업은 정상적으로 계속 작동할 수 있습니다. 예를 들어, 사용자는 TRX나 다른 토큰을 성공적으로 보낼 수 있는 반면, 문제는 오직 USDT 출금에서만 나타납니다. 이것은 중요한 징후입니다: Tether의 블랙리스트는 TRON 네트워크의 주소 전체가 아니라 USDT 스마트 컨트랙트 수준에서 적용됩니다.

USDT 출금은 실패하는 반면, 다른 작업(네이티브 토큰 전송, 입금 수신)은 정상적으로 작동한다.

블랙리스트의 주요 징후

주소가 Tether의 BlackList에 있으면, USDT 스마트 컨트랙트는 출금 시도를 거부합니다. 지갑에서는 이것이 전송 오류로 나타날 수 있으며, 블록 탐색기에서는 트랜잭션이 Failed 상태로 표시될 수 있습니다.

블랙리스트 등록을 일반적인 기술적 문제와 구분하는 것이 중요합니다:

  • 수수료를 지불할 네이티브 토큰(TRX, ETH)이 부족함;
  • 지갑이 트랜잭션을 보내지 않음(UI, RPC 또는 지갑의 버그);
  • 네트워크 혼잡 또는 일시적인 인프라 중단.
07확인

USDT 스마트 컨트랙트를 통해 블랙리스트를 확인하는 방법

1단계. Tronscan에서 TRON의 USDT 스마트 컨트랙트를 엽니다: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t

2단계. Contract 탭으로 이동합니다.

3단계. Read Contract 섹션을 엽니다.

4단계. getBlackListStatus 메서드를 찾습니다. Tronscan에서는 **「8. getBlackListStatus (59bf1abe)」**로 표시될 수 있습니다.

5단계. 확인하려는 주소를 입력하고 쿼리를 실행합니다.

getBlackListStatus 호출 결과

Tronscan을 통한 수동 확인은 일회성 검증에는 적합합니다. 신속한 대응을 위해서는 자동 모니터링을 사용하는 것이 좋습니다: 그것은 AddedBlackList 이벤트를 통해 BlackList 추가를 추적할 수 있으며——해당 기능을 사용할 수 있을 때——실제 AddedBlackList 이벤트 이전에 임박한 블랙리스트 등록의 징후를 드러낼 수 있습니다.

08실시간으로 볼 수 있는 곳

USDT 블랙리스트 활동을 실시간으로 모니터링하는 방법

모든 이벤트——preban, ban, unban, destroy——는 온체인에 공개적으로 기록됩니다. 이는 누구나 모니터링을 구축할 수 있음을 의미합니다:

  • 직접적인 접근 — TRON과 Ethereum archive node를 운영하고, WebSocket을 통해 USDT 컨트랙트의 이벤트 로그를 구독합니다. 비용 면에서 가장 저렴하지만 인프라가 필요합니다.
  • 제3자 서비스를 통해 — QuickNode Streams, Alchemy webhooks, Infura. 유료이지만 자체 인프라가 필요 없습니다.
  • 완성된 제품을 통해 — 우리는 2017년 이후 이것을 실시간으로 하고 있습니다: Telegram 경보 피드, REST API, AI 도구용 MCP 서버, 그리고 연구자를 위한 HuggingFace 데이터셋.

더 읽을거리