# 주소가 제재 대상인지, 동결되었는지, 알려진 서비스인지 어떻게 확인합니까?

주소 · 컴플라이언스 사실: OFAC 목록 등재, 스테이블코인별 발행사 동결, 다른 곳의 유효한 기록, 라벨

*API 가이드 · 9분 · 중급 · 개발자 · GET /v1/addresses/{address}*

`GET /v1/addresses/{address}?chain=`은 사실 요약표입니다. `sanctioned`(OFAC SDN 목록), 해당 네트워크에서 동결 가능한 스테이블코인마다 `status`(`clear`, `frozen`, `seized`, `unknown`)가 있는 `freeze[]` 행 하나, 어떤 발행사도 건드릴 수 없는 코인을 담은 `not_freezable[]`, 다른 인덱싱된 네트워크의 유효한 기록을 담은 `frozen_elsewhere[]`, `freeze_proposals[]`, 그리고 라벨(`is_service`, `name`, `name_category`)이 들어 있습니다. 이것은 사실일 뿐 *신원, AML, 법적 판정이 아니며*, 이 사실들로 만든 판정은 [`/risk`](https://achivx.kr/academy/api/address-risk/)입니다.

## 요청

```
curl -s 'https://stablescan.achivx.com/v1/addresses/0x098B716B8Aaf21512996dC57EB0615e2383E2f96?chain=1'
```

2026-10-24, 이더리움(Ethereum)의 제재 대상 예시입니다. 긴 목록은 첫 행들만 남기고 잘랐습니다.

```
{
  "address": "0x098b716b8aaf21512996dc57eb0615e2383e2f96",
  "chain_id": 1,
  "sanctioned": true,
  "is_service": false,
  "freeze": [
    {"token": "PYUSD", "token_address": "0x6c3e…a0e8", "variant": "native", "own_token_contract": false,
     "status": "frozen", "since_block": 18929201, "since_time": "2024-01-03T20:27:59Z", "last_tx": "0xdbd2…c949",
     "freeze_log_backfilled": true, "coverage": true, "frozen_usd6": 0, "frozen_asof_block": 26258208},
    {"token": "USD1",  "token_address": "0x8d0d…8b0d", "variant": "native", "own_token_contract": false,
     "status": "clear", "freeze_log_backfilled": true, "coverage": true},
    {"token": "USDC",  "status": "frozen", "since_time": "2022-04-14T21:32:53Z", "frozen_usd6": 0, "…": "…"},
    {"token": "USDT",  "…": "…"}
  ],
  "not_freezable": [
    {"token": "DAI",  "token_address": "0x6b17…1d0f", "variant": "native", "reason": "no_freeze_function"},
    {"token": "USDS", "reason": "no_freeze_function"},
    {"token": "USDe", "reason": "no_freeze_function"}
  ],
  "frozen_elsewhere": [
    {"chain_id": 42161, "chain_slug": "arbitrum", "token": "PYUSD", "status": "frozen", "since_time": "2025-07-10T19:02:46Z", "frozen_usd6": 0},
    {"chain_id": 8453,  "chain_slug": "base",     "token": "USDC",  "status": "frozen", "since_time": "2023-08-18T20:19:25Z", "frozen_usd6": 0},
    {"chain_id": 10,    "chain_slug": "optimism", "token": "USDC",  "status": "frozen", "…": "…"}
  ],
  "freeze_proposals": [],
  "data_vintage": "2026-09-10T00:00:11Z",
  "note": "Issuer freeze/seize and OFAC listing are decoded on-chain facts cited with their source; heuristic signals are not included here. Not an identity, AML, or legal determination.",
  "chain_source": "explicit",
  "chains_with_data": [{"chain_id": 1, "kinds": ["issuer_acts"]}, {"chain_id": 10, "kinds": ["issuer_acts"]}, {"chain_id": 8453, "kinds": ["issuer_acts"]}, {"chain_id": 42161, "kinds": ["issuer_acts"]}],
  "freshness_seconds": 199,
  "requested_address": "0x098B716B8Aaf21512996dC57EB0615e2383E2f96",
  "address_respelled": false
}
```

[첫 요청](https://achivx.kr/academy/api/first-request/)의 세 가지 헬퍼로 같은 호출을 하면 다음과 같습니다.

**Python**

```
facts = scan(f"/v1/addresses/{addr}", chain=1)
if facts["sanctioned"] or any(r["status"] in ("frozen", "seized") for r in facts["freeze"]):
    print("do not transact:", facts["requested_address"])
```

**Go**

```
var facts struct {
	Sanctioned bool `json:"sanctioned"`
	Freeze     []struct {
		Token  string `json:"token"`
		Status string `json:"status"`
	} `json:"freeze"`
}
if err := get("/v1/addresses/"+addr, url.Values{"chain": {"1"}}, &facts); err != nil {
	return err
}
for _, row := range facts.Freeze {
	if row.Status == "frozen" || row.Status == "seized" {
		fmt.Println("frozen by the", row.Token, "issuer")
	}
}
```

**TypeScript**

```
type Overview = { sanctioned: boolean; freeze: { token: string; status: "clear" | "frozen" | "seized" | "unknown" }[] };
const facts = await scan<Overview>(`/v1/addresses/${addr}`, { chain: 1 });
const frozen = facts.freeze.filter((r) => r.status === "frozen" || r.status === "seized").map((r) => r.token);
if (facts.sanctioned || frozen.length) console.log("do not transact", { sanctioned: facts.sanctioned, frozen });
```

## 필드별 설명

**`sanctioned`** — 주소가 스캐너가 로드하는 [OFAC](https://achivx.kr/academy/how-it-works/what-is-the-ofac-sdn-list/) SDN 디지털 통화 목록에 올라 있다는 뜻입니다(`/v1/sanctions`가 마지막 갱신 시각을 알려 주며, 2026-10-24 기준 매일 04:00 UTC입니다). 출처를 밝힌 사실이며, `note`는 이것이 *법적 판정이 아니라고* 말합니다.

**`freeze[]`** — 이 네트워크에서 컨트랙트가 [동결](https://achivx.kr/academy/how-it-works/how-does-a-freeze-happen/)할 수 있는 스테이블코인마다 행이 하나 있으며, 중요한 필드는 네 가지입니다.

- `status`는 그 쌍에 대한 판정입니다. `frozen`과 `seized`는 관측된 기록이며 플래그가 무엇이든 유효합니다. `clear`는 발행사 로그를 토큰의 첫 블록까지 거슬러 읽었을 때만 주장됩니다. 그 외에는 `unknown`입니다.
- `freeze_log_backfilled`가 바로 그 진술입니다. 인덱서가 이 쌍의 로그를 토큰의 첫 블록까지 읽었다는 뜻입니다. `coverage`는 이 네트워크의 [발행사 기록](https://achivx.kr/academy/guides/issuer-freezes/)이 인덱싱된 로그에 아예 들어 있는지를 알려 줍니다. 행이 없다는 사실로 `clear`를 답할 수 있는 것은 백필된 쌍뿐이며, 그렇지 않은 쌍은 절대 `clear`가 아니라 `unknown`을 답합니다.
- `since_block`, `since_time`, `last_tx`는 기록을 가리킵니다. `frozen_usd6`는 그 기록으로 묶인 잔액이며(여기서는 0입니다. 주소에 [PYUSD](https://achivx.kr/academy/issuers/paxos/)나 USDC가 없습니다), `frozen_asof_block`에서 읽은 값입니다.
- `own_token_contract: true`는 주소가 토큰 컨트랙트 *자체*인 행을 표시합니다. 트론(Tron) USDT 컨트랙트는 자기 자신의 쌍에서 `frozen_usd6: 9610432043160`(파기된 동결 자금 960만 달러)과 함께 `status: "seized"`를 답하며, 이 행은 컨트랙트가 나쁜 거래 상대라는 뜻이 아닙니다.

**`not_freezable[]`** — 이 네트워크에서 어떤 발행사도 동결할 수 없는 코인과 그 `reason`(`no_freeze_function`; 솔라나(Solana)에서는 [동결 권한(freeze authority)](https://achivx.kr/academy/reference/glossary/#g-freeze-authority)이 없는 [민트](https://achivx.kr/academy/reference/glossary/#g-mint-burn))입니다. 이들은 판정이 있는 쌍이 결코 아닙니다. `clear`도 `unknown`도 아닙니다.

**`frozen_elsewhere[]`** — 다른 인덱싱된 네트워크의 유효한 기록이며, 각각 `chain_slug`, `token`, `status`, `since_time`, `frozen_usd6`가 있습니다. 제재 대상 예시는 아비트럼(Arbitrum), 베이스(Base), 옵티미즘(Optimism)에서도 동결되어 있습니다. `[]`는 *이 스캐너가 인덱싱하는 범위 안에서* 다른 곳에 유효한 기록이 없다는 뜻이지(솔라나 기록은 수집되지 않습니다), 모든 곳에서 깨끗하다는 뜻이 아닙니다.

**`freeze_proposals[]`** — 발행사 소유자 [멀티시그](https://achivx.kr/academy/reference/glossary/#g-multisig)에 올라 이 주소를 지목하고 있지만 아직 실행되지 않은 제안입니다. `[]`는 공개된 제안이 없다는 뜻입니다. [대기 중인 제안](https://achivx.kr/academy/reference/glossary/#g-pending-proposal)을 공개할지 여부 자체가 [배포](https://achivx.kr/academy/reference/glossary/#g-deployment) 설정이므로, 절대 *대기 중인 것이 없음*으로 읽지 마십시오. 목록은 [제안](https://achivx.kr/academy/api/freeze-proposals/) 페이지에 있습니다.

**`is_service`, `service_category`, `name`, `name_category`** — 라벨입니다. 바이낸스(Binance) 핫월렛은 `"is_service": true, "service_category": "exchange_hot", "name": "Binance"`를 답했습니다. 라벨은 [출처 기록](https://achivx.kr/academy/concepts/labels-and-attribution/)이 있는 커뮤니티 귀속이지 신원이 아니며, 라벨 집계 범위는 체인마다 고르지 않습니다. 같은 주체가 이더리움에서는 이름이 붙어 있고 BNB 체인(BNB Chain)에서는 새로 만든 익명 지갑처럼 보일 수 있습니다.

**`chains_with_data[]`** — 비용이 적은 존재 확인입니다. 주소에 무엇이든 있는 모든 인덱싱된 네트워크를 `transfers`, `labels`, `issuer_acts` 중의 `kinds`와 함께 나열합니다. 제재 대상 예시는 네 개 네트워크에 `issuer_acts`가 있고 어디에도 전송은 없습니다. `[]`는 어떤 인덱싱된 네트워크에도 아무것도 없다는 뜻입니다. 판정은 아니지만, 어떤 `chain` 값으로 물어볼 가치가 있는지 아는 가장 저렴한 방법입니다.

**`data_vintage`** — 이 네트워크의 [관측된 이력이 시작되는 지점](https://achivx.kr/academy/concepts/coverage-and-freshness/)입니다(이더리움에서는 `2026-09-10T00:00:11Z`). 전송이 없다는 사실은 이 시점 이후에 대해서만 의미가 있습니다. 최신성이 아닙니다. 최신성은 **`freshness_seconds`**로, 응답이 제공된 시점에 이 네트워크에서 가장 최근에 인덱싱된 전송의 경과 시간(199초)입니다.

## 다른 것을 읽어야 할 때

- *거래해도 되는가?* — [`/risk`](https://achivx.kr/academy/api/address-risk/)가 이 사실들을 점수화합니다(이 체인의 `freeze[]` 상태만 반영하며, `frozen_elsewhere`, [제안](https://achivx.kr/academy/guides/issuer-freezes/), 묶인 잔액은 등급에 들어가지 않습니다).
- *스테이블코인이 나쁜 곳에서 왔을 수 있는가?* — [`/exposure`](https://achivx.kr/academy/api/address-exposure/). 여기의 `sanctioned: false`는 그에 대해 아무것도 말하지 않습니다.
- *동결 상태는 확정성을 따릅니다.* 이 행들은 기록이 확정되어야 바뀝니다. [기록 원장](https://achivx.kr/academy/api/freeze-acts-ledger/)은 `finality: pending`과 함께 더 일찍 보여 줍니다.

## 이런 것이 보이면 …

- **`"address_respelled": true`** — 주소 표기와 다른 종류의 네트워크에 대해 물었습니다. 응답은 같은 바이트를 그 네트워크의 표기(`address`)로 나타낸 것에 대한 것이며, 일반 키 계정인 경우에만 소유자가 같습니다. `requested_address`를 확인한 다음, 주소가 속한 체인으로 다시 물어보십시오.
- **`"chain_source": "default"`** — `chain`을 빠뜨렸습니다. 이것은 베이스입니다. [규칙](https://achivx.kr/academy/api/the-rules-every-call-follows/)을 참조하십시오.
- **`"freshness_seconds": null`** — 최신성 조회가 끝나지 않았습니다. 응답은 `no-store`이므로 다시 요청하십시오.
- **`"coverage_status": "pending"` 또는 `"partial"`**(솔라나만 해당) — 주소의 이력을 채우는 중이며, 이 조회가 채움을 요청합니다. 응답이 늘어날 수 있으니 나중에 다시 요청하십시오.

## Stablecoin scanner ACHIVX에서

- JSON 형태의 제재 대상 예시: [/v1/addresses/0x098B…2f96?chain=1](https://stablescan.achivx.com/v1/addresses/0x098B716B8Aaf21512996dC57EB0615e2383E2f96?chain=1); 같은 주소의 페이지: [/ethereum/address/0x098B…2f96](https://stablescan.achivx.com/ethereum/address/0x098B716B8Aaf21512996dC57EB0615e2383E2f96).
- 라벨이 붙은 서비스: [바이낸스 핫월렛](https://stablescan.achivx.com/v1/addresses/0x28C6c06298d514Db089934071355E5743bf21d60?chain=1); 자기 자신의 쌍에 있는 토큰 컨트랙트: [트론의 USDT 컨트랙트](https://stablescan.achivx.com/v1/addresses/TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t?chain=tron).

## 출처

- [REST 인터페이스의 OpenAPI 3.1 명세(API 1.4.0)](https://stablescan.achivx.com/openapi.json)
- [에이전트 매뉴얼 — agents.md(버전 2026-10-05)](https://stablescan.achivx.com/agents.md)
- [GET /v1/addresses/0x098B…2f96?chain=1 (2026-10-24 조회)](https://stablescan.achivx.com/v1/addresses/0x098B716B8Aaf21512996dC57EB0615e2383E2f96?chain=1)

## 더 알아보기

- [가이드: 주소 페이지](https://achivx.kr/academy/guides/address-page/)
- [get-address-compliance는 무엇을 반환합니까?](https://achivx.kr/academy/for-agents/get-address-compliance/)
- [집계 범위와 최신성](https://achivx.kr/academy/concepts/coverage-and-freshness/)

## 관련 질문

- [주소에 대한 단일 위험 판정은 어떻게 얻고, 언제 unknown이 됩니까?](https://achivx.kr/academy/api/address-risk/)
- [발행사의 동결, 동결 해제, 소각은 어떻게 조회합니까?](https://achivx.kr/academy/api/freeze-acts-ledger/)
- [응답은 어떻게 읽습니까: unknown, null, 빈 목록, no-store](https://achivx.kr/academy/api/reading-an-answer/)

주소 · GET /v1/addresses/{address} · 2026-10-24 작성, openapi.json, agents.md 및 당일 실제 호출 기준. 응답 형태는 인용이며, 수치는 날짜 기준이고 인덱스에 따라 달라집니다.

---

출처: https://achivx.kr/academy/api/address-overview/ · 영어 원문: https://achivx.com/academy/api/address-overview.html
