발행사의 동결, 동결 해제, 소각은 어떻게 조회합니까?
발행사 동결 · 토큰 컨트랙트가 발생시킨 실행된 기록을 최신순으로, 네트워크·토큰·종류·대상으로 필터링 — 그리고 거래 하나의 기록
- API 가이드
- 8분
- 중급
- 개발자
- GET /v1/freezes/acts
- GET /v1/freezes?tx=
GET /v1/freezes/acts는 원장입니다. 인덱싱된 네트워크에서 발행사 컨트랙트가 발생시킨 모든 freeze, unfreeze, seize 이벤트를 최신순으로, 한 페이지에 50개(1–200)씩 보여 주며, 각 행에는 subject, token, action, raw_event, tx_hash, block_time, finality가 있고 소각에는 amount_usd6가 있습니다. chain, token, kind, address로 필터링합니다. chain이 없으면 모든 네트워크를 나열하고 그렇다고 밝힙니다. GET /v1/freezes?tx=&chain=은 거래 하나가 발생시킨 기록을 답합니다. 피드가 아니라 조회입니다. address로 필터링한 페이지는 기록의 목록이지, 결코 판정이 아닙니다.
원장
curl -s 'https://stablescan.achivx.com/v1/freezes/acts?chain=1&limit=3'2026-10-24의 이더리움(Ethereum)입니다. 전날의 USDT 동결 세 건입니다.
{
"items": [
{"chain_id": 1, "chain_slug": "ethereum", "token": "USDT",
"subject": "0xb84e20794fd31fcb93e4b621440fbc5af5ef8f60", "action": "freeze", "raw_event": "AddedBlackList",
"tx_hash": "0x00c3cea47aac0a3c4fccbac87eb38b628d17ce0c2c3d13d57dfeabebe1f61410",
"block_time": "2026-10-23T16:32:47Z", "log_index": 26, "block_number": 26256543,
"token_address": "0xdac17f958d2ee523a2206206994597c13d831ec7", "finality": "final", "variant": "native"},
{"chain_id": 1, "token": "USDT", "subject": "0x9226682de1ae52f8ab5bd6f7b827ddf07ed90a80", "action": "freeze", "raw_event": "AddedBlackList",
"tx_hash": "0x2526469b…be26", "block_time": "2026-10-23T15:19:35Z", "block_number": 26256179, "finality": "final", "…": "…"},
{"…": "…"}
],
"next_cursor": "ZmExOjE3OTI3MDc0NTUwMDAwMDA6MjYyNTEwOTA6MTA6MTpjZjg0…",
"chain_id": 1,
"chain_slug": "ethereum",
"chain_source": "explicit",
"indexed": true,
"freeze_log_backfilled": true,
"limit": 3,
"note": "One network: Ethereum. Executed issuer acts — the freeze, unfreeze and seize events the token contracts emitted — newest first; follow next_cursor for older ones. A page without it ends at the oldest act this scanner holds for these filters …"
}그리고 모든 네트워크의 소각입니다. seize에 있는 amount_usd6와, 범위를 밝히는 응답에 주목하십시오.
{
"items": [
{"chain_id": 728126428, "chain_slug": "tron", "token": "USDT", "subject": "THvX6FFfKK6ZsVB4ArtYTFR4SSMU2S11Gu",
"action": "seize", "raw_event": "DestroyedBlackFunds", "amount_usd6": 480325649852,
"tx_hash": "22cb6034…c583", "block_time": "2026-10-23T16:51:18Z", "block_number": 87367039, "finality": "final"},
{"…": "…"}
],
"chain_id": null,
"chain_source": "all_networks",
"kind": "seize",
"limit": 3,
"note": "No chain was given, so this page lists every network whose issuer acts this scanner indexes (GET /v1/freezes/networks, indexed: true) …"
}첫 요청의 세 가지 헬퍼로 같은 호출을 하면 다음과 같습니다.
Python
import time
seen = set()
while True: # a poller: new acts since the last pass
page = scan("/v1/freezes/acts", limit=100) # every network; add chain= or token= to narrow
for act in page["items"]:
key = (act["tx_hash"], act["log_index"])
if key in seen: continue
seen.add(key)
usd = act.get("amount_usd6", 0) / 1e6
print(act["block_time"], act["chain_slug"], act["token"], act["action"], act["subject"], f"${usd:,.0f}" if usd else "")
time.sleep(30) # the ledger's max-ageGo
type act struct {
ChainSlug string `json:"chain_slug"`
Token string `json:"token"`
Subject string `json:"subject"`
Action string `json:"action"` // freeze | unfreeze | seize
RawEvent string `json:"raw_event"`
AmountUSD6 int64 `json:"amount_usd6"` // seize only
TxHash string `json:"tx_hash"`
LogIndex int `json:"log_index"`
BlockTime time.Time `json:"block_time"`
Finality string `json:"finality"`
}
var page struct {
Items []act `json:"items"`
NextCursor string `json:"next_cursor"`
}
if err := get("/v1/freezes/acts", url.Values{"chain": {"tron"}, "token": {"USDT"}, "kind": {"seize"}, "limit": {"100"}}, &page); err != nil {
return err
}TypeScript
type Act = { chain_id: number; chain_slug: string; token: string; subject: string; action: "freeze" | "unfreeze" | "seize"; raw_event: string; amount_usd6?: number; tx_hash: string; log_index: number; block_number: number; block_time: string; finality: "final" | "pending"; variant: string };
type ActsPage = { items: Act[]; next_cursor?: string; chain_id: number | null; chain_source: "explicit" | "all_networks"; indexed?: boolean; freeze_log_backfilled?: boolean };
const page = await scan<ActsPage>("/v1/freezes/acts", { address: addr, limit: 50 }); // a T… or Solana address selects its network without chain=필드별 설명
action과 raw_event — 스캐너의 용어와 컨트랙트의 용어로 나타낸 기록입니다. freeze는 AddedBlackList(테더(Tether)) 또는 Blacklisted(서클(Circle), 팍소스(Paxos))이고, unfreeze는 RemovedBlackList / UnBlacklisted, seize는 DestroyedBlackFunds입니다. amount_usd6는 소각에만 있으며, 파기된 잔액입니다. subject는 기록이 지목한 주소입니다. finality는 블록이 네트워크의 확정된 헤드 뒤로 넘어가면 final이 됩니다. 원장은 주소 개요보다 기록을 더 일찍, finality: "pending"과 함께 보여 줍니다.
chain_id, chain_source, indexed, freeze_log_backfilled — 페이지 자체의 범위입니다. chain이 있으면 해당 네트워크이며, indexed: true(그 네트워크의 발행사 기록이 로그에 있음)와 freeze_log_backfilled(토큰의 첫 블록까지 거슬러 읽음)가 함께 옵니다. 없으면 기록이 인덱싱되는 모든 네트워크이며, chain_id: null, chain_source: "all_networks"입니다.
필터
| 매개변수 | 값 | 참고 |
|---|---|---|
chain | ID, 슬러그 또는 CAIP-2 | 없으면 모든 네트워크; 있는데 비어 있으면 400 invalid_chain(chain is empty: name a network …, or leave the parameter off) |
token | 정확한 레지스트리 심볼 또는 컨트랙트 주소 | USDT는 USDT0이 아닙니다. USDT0에는 별도의 행이 있습니다 |
kind | freeze, unfreeze, seize | 행의 action |
address | 대상 | chain 없이 T… 또는 솔라나(Solana) 주소를 주면 해당 네트워크가 선택됨 |
limit | 1–200, 기본값 50 | |
cursor | 이전 페이지의 next_cursor | 같은 필터와 함께 |
그 밖의 매개변수는 400 unknown_param입니다. 2026-10-24에 ?foo=1은 accepted filters: chain, token, kind, address, limit, cursor (the act’s kind is spelled kind: freeze, unfreeze or seize — the rows’ action field; the address the act names is spelled address …)라고 답했습니다.
거래 하나의 기록
curl -s 'https://stablescan.achivx.com/v1/freezes?chain=1&tx=0x00c3cea47aac0a3c4fccbac87eb38b628d17ce0c2c3d13d57dfeabebe1f61410'{
"chain_id": 1, "chain_slug": "ethereum", "chain_source": "explicit",
"tx_hash": "0x00c3cea47aac0a3c4fccbac87eb38b628d17ce0c2c3d13d57dfeabebe1f61410",
"items": [
{"token": "USDT", "subject": "0xb84e20794fd31fcb93e4b621440fbc5af5ef8f60", "action": "freeze", "raw_event": "AddedBlackList",
"block_time": "2026-10-23T16:32:47Z", "log_index": 26, "block_number": 26256543, "token_address": "0xdac17f95…1ec7", "finality": "final"}
]
}한 시간 동안 캐시되는 조회입니다. chain이 없으면 베이스(Base)에서만 찾고 chain_source가 그렇다고 밝힙니다. 멀티시그 제출은 기록을 발생시키지 않습니다. 테더 제안인 해시에 빈 응답이 오는 것은 정상이며, /v1/freezes/proposals?tx=에서 찾아보십시오. /v1/verify?tx=는 이 조회와 전송 조회를 함께 실행합니다.
목록은 판정이 아닙니다
/v1/freezes/acts?address=는 주소를 지목한 기록 — 동결 해제까지 포함한 전부 — 를 답하며, 지금 주소의 상태에 대해서는 아무것도 말하지 않습니다. 상태는 개요의 freeze[].status입니다. 동결되었다가 동결 해제된 주소는 여기서 행이 두 개이고 저기서는 clear입니다. 지켜볼 때(마지막 조회 이후 무슨 일이 있었는가)는 원장을, 결정할 때는 개요를 쓰십시오.
Stablecoin scanner ACHIVX에서
- 모든 네트워크의 원장: /v1/freezes/acts?limit=10; 트론(Tron)의 소각: ?chain=tron&kind=seize.
- 페이지의 Acts(기록) 아래에 있는 같은 원장: /freezes/ethereum; 기록 하나의 페이지: 0xb84e…8f60을 동결한 거래.
출처
- REST 인터페이스의 OpenAPI 3.1 명세(API 1.4.0)
- 에이전트 매뉴얼 — agents.md(버전 2026-10-05)
- GET /v1/freezes/acts?chain=1&limit=3 (2026-10-24 조회)
더 알아보기
관련 질문
- 동결이 실행되기 전에 미리 보려면 어떻게 합니까: 발행사 멀티시그의 제안
- 네트워크에서 어떤 스테이블코인을 누가 동결할 수 있습니까?
- 레시피: 동결 기록 원장을 폴링하고 새 기록을 알리기
발행사 동결 · GET /v1/freezes/acts · GET /v1/freezes?tx= · 2026-10-24 작성, openapi.json, agents.md 및 당일 실제 호출 기준. 응답 형태는 인용이며, 수치는 날짜 기준이고 인덱스에 따라 달라집니다.
이 페이지는 ACHIVX Academy 영어 원문을 한국어로 옮긴 것입니다. 번역과 원문이 다르면 영어 원문이 기준입니다.