메인 콘텐츠로 건너뛰기
Didit의 암호화폐 지갑 스크리닝은 주소 스크리닝 또는 KYT(거래 파악, know your transaction)라고도 합니다. 각 암호화폐 전송의 지갑 주소와 거래 해시를 AML 위험을 확인하고, 위험 점수, 위험한 출처와의 노출 정도, 제재 목록과의 일치 여부를 반환합니다. 암호화폐 거래의 경우 Didit은 거래 생성 중에 Merkle Science, Crystal, Chainalysis, Elliptic, TRM Labs 같은 블록체인 분석 제공업체를 통해 지갑 주소와 거래 해시를 스크리닝할 수 있습니다. 스크리닝은 서버 측에서 실행되므로 고객사 측에서 별도의 API 호출이 필요하지 않습니다.
거래 없이 주소를 스크리닝해야 하나요? API 호출 한 번으로 단일 지갑에 대해 동일한 위험 결과를 얻으려면 온디맨드 지갑 스크리닝 endpoint(POST /v3/wallet-screening/)를 사용하세요.

스크리닝 트리거 방식

다음 두 조건을 모두 충족하면 암호화폐 스크리닝이 자동으로 실행됩니다.
  1. 거래 세부 정보에 currency_kind: "crypto"가 있어야 합니다.
  2. 애플리케이션 설정에서 거래 모니터링이 활성화되어 있어야 합니다.
거래 생성 payload의 include_crypto_screening으로 거래별로 이 기본값을 재정의할 수 있습니다.
애플리케이션 수준 기본값은 Business Console의 거래 > 설정에 있습니다. include_crypto_screening은 생성 중인 단일 거래에 대해서만 해당 기본값을 재정의합니다.

자산 및 네트워크 선택

자산과 네트워크는 별도의 필드입니다. transaction_details.currency에는 토큰 심볼을, transaction_details.currency_kind에는 crypto를, transaction_details.crypto_params.crypto_chain에는 네트워크를 설정합니다. 예를 들어, 다음 코드 조각은 Base의 사용자 지정 토큰을 기록합니다.
관리형 스크리닝은 BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE, OP, ARB, AVAX, ADA, XLM, HBAR를 지원합니다. BASE는 Base, OP는 Optimism, ARB는 Arbitrum One, AVAX는 Avalanche C-Chain, ADA는 Cardano, XLM은 Stellar, HBAR는 Hedera를 의미합니다. POLYGON 또는 POL은 MATIC, BSC는 BNB, TRON은 TRX를 뜻하는 것처럼 일반적인 네트워크 이름도 허용됩니다. Celo, Mode, Plume은 관리형 통합에서 다루지 않으며, 연결된 TRM Labs 계정을 통해 스크리닝합니다(CELO, MODE, PLUME). 연결된 제공업체는 자체적인 적용 범위가 있으며, Lightning에는 아래에 설명된 추가 요건이 있습니다. 토큰에는 USDT와 USDC를 포함하여 항상 crypto_chain을 지정해야 합니다. 이 값이 없으면 통화가 네트워크로 사용되며, USDT와 USDC는 거래 해시에서 네트워크를 가져오고, 해시가 없으면 지갑 주소에서 가져옵니다. Tron 또는 Solana 해시는 Tron 또는 Solana를 선택합니다. 0x 해시는 모든 EVM 네트워크에서 동일하게 보이므로, USDT, USDC, ETH의 경우 Didit은 Ethereum, BNB Chain, Polygon, Base, Arbitrum, Optimism에서 해시를 조회하고, 해시가 발견된 네트워크에서 거래를 스크리닝합니다. ETH는 Ethereum, Base, Arbitrum, Optimism에서 네이티브 토큰이며 BNB Chain에서도 브리지된 BEP-20 토큰으로 전송되므로 포함됩니다. 어떤 네트워크에서도 해시를 찾지 못하거나 그 시점에 네트워크를 확인할 수 없으면, 거래는 스크리닝되지 않으며 스크리닝 요금도 청구되지 않습니다. 이 경우 custom_values.aml_screening_status는 FAILED가 되고, custom_values.aml_screening_error에 그 이유가 기록되며, 승인된 거래는 검토 중 상태로 전환됩니다. 거래 해시가 없는 USDT 또는 USDC 거래는 지갑을 스크리닝하며, 지갑 주소가 네트워크를 선택합니다. Tron 주소는 Tron에서, Solana 주소는 Solana에서 스크리닝합니다. 0x 주소는 Ethereum, BNB Chain, Polygon, Base, Arbitrum, Optimism 중 해당 주소가 거래를 보냈거나 토큰을 보유한 첫 번째 네트워크에서 스크리닝합니다. 이 여섯 네트워크 어디에도 활동이 없거나, 그 시점에 네트워크를 확인할 수 없는 0x 주소는 Ethereum에서 스크리닝합니다. crypto_chain을 보내면 이 조회를 생략할 수 있습니다. 실제 네트워크를 ETH로 대체하지 마세요. 사용자 지정 토큰 심볼을 기록한다고 해서 해당 토큰의 전송이 거래 해시 스크리닝을 위해 인덱싱된다고 보장되지는 않습니다. 토큰 적용 범위는 토큰 컨트랙트와 네트워크를 기준으로 확인해야 합니다. 생성된 거래가 스크리닝 완료를 의미하지는 않습니다. 스크리닝된 것으로 간주하기 전에 스크리닝 상태와 제공업체 결과를 확인하세요.

수신 및 송신 비교

transaction_details.direction은 필수이며, Didit에 이체의 어느 쪽을 스크리닝할지 알려줍니다. 전송 전 스크리닝에서는 transaction_details.payment_reference_id를 생략합니다. Didit은 해당 지갑 주소에 대해 지갑 스크리닝을 실행합니다. 전송 후 스크리닝에서는 transaction_details.payment_reference_id에 블록체인 거래 해시를 포함합니다. Didit은 거래 스크리닝을 실행하며, 온체인 데이터 보강이 가능한 경우 거래 요약 데이터를 저장합니다.

라이트닝 네트워크

라이트닝 네트워크 스크리닝을 하려면 transaction_details.crypto_params.crypto_chain을 LIGHTNING으로 설정합니다. 라이트닝 스크리닝에는 콘솔의 Marketplace에 연결된 Elliptic 또는 Chainalysis BYOK 제공업체가 필요합니다. 관리형 Merkle Science, Crystal, TRM Labs는 LIGHTNING을 지원하지 않습니다. Didit은 스크리닝 또는 결제가 이루어지기 전에 해당 요청을 400으로 거부합니다. Elliptic의 경우 Didit은 Elliptic의 BTC 라이트닝 지갑 분석을 통해 제공된 라이트닝 식별자를 스크리닝합니다. Chainalysis의 경우 transaction_details.payment_reference_id가 있으면 Didit은 라이트닝 전송을 KYT에 제출합니다.

필수 필드

모든 가상자산 스크리닝 요청에 다음을 전송합니다:
  • transaction_details.direction: INBOUND 또는 OUTBOUND
  • transaction_details.currency_kind: crypto
  • transaction_details.currency: 자산 심볼(예: BTC, ETH, USDC) 또는 사용자 정의 토큰
  • 위의 방향 규칙에 따라 해당 참여자에 속한 지갑 주소
전송이 온체인에 기록된 후 거래 해시 스크리닝을 하려면 다음도 전송합니다:
  • transaction_details.payment_reference_id: 블록체인 거래 해시
가상자산 스크리닝이 활성화되어 있는데 방향에 필요한 지갑 주소가 없으면 Create Transaction API가 요청을 거부합니다.

예시: 전송 전 송신 스크리닝

자금을 보내기 전에 거래 해시 없이 송신 가상자산 거래를 생성합니다. Didit은 목적지 지갑을 스크리닝합니다.

예시: 전송 후 수신 스크리닝

자금을 수신한 후 거래 해시를 포함합니다. Didit은 입금 주소 기준으로 거래 해시를 스크리닝하고, 가능한 경우 거래 요약 정보로 응답을 보강합니다.

지원되는 제공업체

Business Console에서 거래 > 설정 > Provider Preferences로 이동해 원하는 제공업체를 설정하거나, 콘솔의 Marketplace(가상자산 모니터링 카테고리)에서 자신의 제공업체 키를 연결하세요. LIGHTNING은 연결된 키를 사용하는 Chainalysis 및 Elliptic 구성에서만 지원됩니다.
연결된 키 요금을 사용하면 기존 제공업체 API 키를 연결하고, 스크리닝 건당 표시된 인프라 수수료를 지불합니다. 블록체인 분석 제공업체와 이미 상용 계약이 있는 경우 이 옵션을 사용하세요.

스크리닝 결과

모든 스크리닝은 사용하는 제공업체와 관계없이 표준화된 결과를 생성합니다.

스크리닝 상태

custom_values.aml_screening_status는 거래가 스크리닝되었는지 알려 줍니다. 스크리닝 상태가 COMPLETED가 아닌 동안에는 승인될 거래가 IN_REVIEW로 전환됩니다.

아직 인덱싱되지 않은 거래 해시

블록체인 분석 제공업체는 방금 채굴된 전송을 인덱싱하는 데 몇 분이 걸릴 수 있으며, 그동안에는 해당 전송을 스크리닝할 수 없습니다. 제공업체가 거래 해시를 아직 인덱싱하지 않았다고 응답하고, 네트워크 자체가 해당 거래의 존재를 확인하면, Didit은 실패 처리하는 대신 백그라운드에서 다시 스크리닝합니다.
  • 생성 응답에는 이미 custom_values.aml_screening_status가 PENDING으로 표시되며, 이유는 custom_values.aml_screening_error에 나옵니다. 승인될 거래는 decision_reason_code aml_screening_pending과 함께 IN_REVIEW로 보류됩니다.
  • Didit은 거래가 생성된 후 약 2분, 12분, 42분에 거래 해시를 다시 스크리닝합니다.
  • 재시도에서 스크리닝되면, 결과는 다른 스크리닝과 똑같이 저장되고 스크리닝 요금은 한 번만 부과됩니다. 규칙이 스크리닝 데이터에 대해 다시 실행되고, 보류가 해제되며, 상태가 바뀌었는지와 관계없이 규칙 적용 후 거래 상태를 담은 transaction.status.updated webhook이 한 번 전송됩니다. 그 사이에 거부되었거나 검토자가 처리한 거래는 현재 상태를 유지합니다.
  • 마지막 재시도 후에도 제공업체가 거래 해시를 인덱싱하지 않았다면, 스크리닝은 처음 생성 시와 같이 FAILED로 끝납니다. 거래는 decision_reason_code aml_screening_failed와 함께 IN_REVIEW 상태로 남으며, 과금은 생성 시 실패와 같은 방식으로 적용됩니다. Didit 관리형 스크리닝에서는 요금이 없고, 마지막 시도가 연결된 제공업체에 도달했다면 제공업체 요청 1건이 집계됩니다. 재시도된 이전 시도에는 요금이 부과되지 않습니다.
  • 재시도 실행 시 잔액으로 스크리닝 비용을 더 이상 감당할 수 없으면, 스크리닝은 FAILED로 끝나며 요금이 부과되지 않습니다.
재시도는 Ethereum, BNB Chain, Polygon, Base, Arbitrum, Optimism, Tron의 거래 해시에 적용됩니다. 해당 네트워크가 알지 못하는 해시이거나 다른 네트워크의 해시라면 재시도하지 않으며, 스크리닝은 즉시 실패합니다.

위험 점수와 심각도

스크리닝된 모든 지갑이나 거래에는 다음이 부여됩니다.
  • 위험 점수(0–100): 점수가 높을수록 위험한 개체에 더 많이 노출되어 있음을 뜻합니다.
  • 심각도 수준: 점수에서 도출되며, LOW, MEDIUM, HIGH, CRITICAL 중 하나입니다.

자금 출처 분석

자금이 어디에서 왔는지를 개체 유형별로 분류한 백분율 내역입니다. 내역의 각 개체에는 자금 비율, 수취 및 송금 금액, 그리고 연결이 직접인지 간접인지가 포함됩니다.

노출 표

출처, 목적지, 거래 상대방 개체를 보여 주는 노출 표이며, 다음 내용을 포함합니다.
  • 개체 이름과 카테고리
  • 직접 연결과 간접 연결 구분(홉 거리)
  • 수취 및 송금 금액
  • 개체별 위험 수준

네트워크 그래프

지갑의 거래 관계를 시각적인 노드-엣지 형태로 나타낸 그래프입니다.
  • 노드는 지갑, 거래소, 서비스 및 기타 개체를 나타냅니다.
  • 엣지는 노드 사이의 거래를 나타내며, 금액과 거래 해시가 포함됩니다.
  • 지표에는 중심성(centrality)과 깊이(depth) 같은 그래프 수준 통계가 포함됩니다.
네트워크 그래프는 Business Console에서 대화형 시각화로 제공됩니다.

규칙과의 연동

스크리닝 결과는 규칙 엔진에 직접 반영됩니다. Didit에는 스크리닝 데이터를 기반으로 자동 실행되는 사전 설정 규칙이 포함되어 있습니다:

규칙용 스크리닝 필드

가상자산 스크리닝은 거래의 custom_values에 다음 키를 기록하므로, 규칙에서 custom_values.<key> 형태로 사용할 수 있습니다: 제재 대상 지갑으로의 송금은 차단하면서 간접 노출만 있는 주요 거래소로의 송금은 거부하지 않으려면 wallet_sanctioned를 사용합니다. 노출을 검토하거나 점수를 매길 때는 sanctions_hit 또는 aml_sanctions_exposure_pct를 사용합니다. Sanctions counterparty 사전 설정 규칙은 wallet_sanctioned가 true일 때 거래를 거부하고, 제재 노출 사전 설정 규칙은 노출만 있는 지갑을 검토 대상으로 보냅니다. 두 규칙이 같은 거래에 동시에 적용되지 않으므로, 제재 대상 지갑은 항상 거부됩니다. 이 변경 전에 Sanctions counterparty를 설치했다면, Didit이 해당 규칙을 wallet_sanctioned로 자동 이전하고 같은 모드로 제재 노출 규칙을 추가했습니다. 따라서 기존 규칙이 노출만을 이유로 거부했던 거래는 이제 검토 대상으로 넘어갑니다. 스크리닝이 완료되면 Didit은 강화된 거래 데이터를 기준으로 모든 규칙을 자동으로 다시 평가하고, 해당하는 webhook을 트리거합니다.

다음 단계

거래 제출

가상자산 지갑 정보를 포함하여 거래를 제출하는 방법입니다.

규칙 및 점수 산정

스크리닝 결과가 규칙 엔진에 반영되는 방식입니다.

콘솔 가이드

콘솔에서 가상자산 스크리닝 분석, 자금 출처, 네트워크 그래프를 확인하는 방법입니다.
마지막 수정일 2026년 11월 7일