주소의 스테이블코인 잔액과 거래량은 어떻게 읽습니까?

주소 · 인덱싱된 스테이블코인별 실시간 balanceOf, 그리고 기간별·전체 기간의 정산된 입출금 달러 금액

  • API 가이드
  • 7분
  • 중급
  • 개발자
  • GET …/balances
  • GET …/volume

ACHIVX Academy 원문 (영어) ↗

/v1/addresses/{address}/balances?chain=은 요청 시점에 인덱싱된 모든 스테이블코인의 balanceOf를 체인에서 실시간으로 읽어, 실제 0을 포함한 전부를 최소 단위 문자열과 decimals로 나열합니다. /v1/addresses/{address}/volume?chain=&days=는 일별 집계에서 정산된 입출금 달러 금액을 답합니다. days에 걸친 period(기본값 30, 최대 3,650)와 all_time이며, 각 합계에는 *_complete 플래그가 있어 수치나 0을 믿기 전에 반드시 확인해야 합니다. 발행, 소각, 자기 자신에게 보낸 전송, 1달러 그래프 하한 미만의 일별 쌍은 제외됩니다. 거래량은 정산이지, 모든 Transfer 로그의 합이 아닙니다.

잔액

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

2026-10-24, 이더리움(Ethereum)의 바이낸스(Binance) 핫월렛입니다(행 일곱 개 중 세 개 표시).

{
  "chain_id": 1,
  "address": "0x28C6c06298d514Db089934071355E5743bf21d60",
  "items": [
    {"symbol": "USDT", "token": "0xdac17f958d2ee523a2206206994597c13d831ec7", "decimals": 6,  "balance": "567667828814321"},
    {"symbol": "USD1", "token": "0x8d0d000ee44948fc98c9b98a4fa4921476f08b0d", "decimals": 18, "balance": "12634092351409304697742144"},
    {"symbol": "USDe", "token": "0x4c9edd5852cd905f086c759e8383e09bff1e68b3", "decimals": 18, "balance": "11226265557419218882322902"}
  ],
  "is_contract": false,
  "note": "Live on-chain ERC-20 balanceOf of this address for each indexed stablecoin, read at the latest block via the RPC pool at request time (Class-F fact, not a heuristic). Every indexed stablecoin is listed with its balance, INCLUDING a genuine zero …",
  "chain_source": "explicit",
  "freshness_seconds": 205
}

decimals: 6인 567667828814321은 567,667,828.81 USDT이고, 18인 12634092351409304697742144는 12,634,092.35 USD1입니다. 잔액은 의도적으로 문자열입니다. double이 정확히 담을 수 있는 범위를 넘기 때문입니다. 정수 타입(Python의 int, Go의 *big.Int, TypeScript의 BigInt)으로 파싱하고, 10**decimals로 나누는 것은 표시할 때만 하십시오.

이것은 address에 여러분이 입력한 표기를 그대로 돌려주는 유일한 주소 라우트입니다(다른 라우트는 체인 자체의 표기로 다시 씁니다). is_contract는 주소가 코드인지 알려 줍니다. Cache-Control: public, max-age=30.

첫 요청의 세 가지 헬퍼로 같은 호출을 하면 다음과 같습니다.

Python

bal = scan(f"/v1/addresses/{addr}/balances", chain=1)
for row in bal["items"]:
    units = int(row["balance"])
    if units:
        print(row["symbol"], units / 10 ** row["decimals"])

Go

var bal struct {
	Items []struct {
		Symbol   string `json:"symbol"`
		Decimals int    `json:"decimals"`
		Balance  string `json:"balance"`
	} `json:"items"`
}
if err := get("/v1/addresses/"+addr+"/balances", url.Values{"chain": {"1"}}, &bal); err != nil {
	return err
}
for _, row := range bal.Items {
	units, _ := new(big.Int).SetString(row.Balance, 10)
	if units.Sign() != 0 {
		fmt.Println(row.Symbol, units, "minor units,", row.Decimals, "decimals")
	}
}

TypeScript

type Balances = { items: { symbol: string; token: string; decimals: number; balance: string }[]; is_contract: boolean };
const bal = await scan<Balances>(`/v1/addresses/${addr}/balances`, { chain: 1 });
for (const row of bal.items) {
  const units = BigInt(row.balance);
  if (units !== 0n) console.log(row.symbol, units, "minor units,", row.decimals, "decimals");
}

거래량

curl -s 'https://stablescan.achivx.com/v1/addresses/0x28C6c06298d514Db089934071355E5743bf21d60/volume?chain=1&days=30'
{
  "address": "0x28c6c06298d514db089934071355e5743bf21d60",
  "chain_id": 1,
  "all_time": {"in_usd6": 51212686119569437, "out_usd6": 51776095888785117, "total_usd6": 102988782008354554, "transfers": 3205310},
  "period":   {"in_usd6": 17085867659507583, "out_usd6": 18464258443073691, "total_usd6": 35550126102581274, "transfers": 1086498},
  "period_days": 30,
  "period_complete": true,
  "all_time_complete": true,
  "since_day": "2026-07-22",
  "note": "Settled payment volume from the daily edge rollup, normalized to US dollars (USDC==USD, peg 1). Mints and burns are excluded (0x0 is not a counterparty), as are day-pairs under the $1 graph floor — this is not the sum of every Transfer log. Finalized rows only …",
  "freshness_seconds": 198
}

30일 동안 입금 171억 달러, 출금 185억 달러, 전체 기간 1,030억 달러, 전송 320만 건입니다. since_day: "2026-07-22"는 이 네트워크의 집계에서 전체 기간이 어디서 시작하는지 알려 줍니다. 두 *_complete 플래그가 모두 true이므로 합계는 실제 합계입니다. 허브 규모의 주소에서는 조회가 예산을 다 쓸 수 있으며, 그때 period_complete: false는 최소한 이만큼을 뜻합니다. 제재 대상 예시는 모든 필드에 0을 답하고 두 플래그 모두 true였습니다. 측정된 없음이며, 측정되지 않은 없음과는 다릅니다.

days는 1부터 3,650까지이며, 그 밖의 값은 400 invalid_days입니다. 솔라나(Solana)에서는 응답에 주소의 채움 상태인 coverage_status(pending 또는 partial)도 포함됩니다. *_complete 플래그는 요청 예산만 설명할 뿐 채움 상태는 절대 설명하지 않으며, coverage_status가 없는 솔라나 응답은 그것을 제때 읽지 못한 것이므로 pending으로 취급하십시오.

첫 요청의 세 가지 헬퍼로 같은 호출을 하면 다음과 같습니다.

Python

vol = scan(f"/v1/addresses/{addr}/volume", chain=1, days=90)
if not vol["period_complete"]:
    print("floor, not total:")
print(f'in ${vol["period"]["in_usd6"] / 1e6:,.0f}  out ${vol["period"]["out_usd6"] / 1e6:,.0f}  over {vol["period_days"]} days')

Go

var vol struct {
	Period struct {
		InUSD6    int64 `json:"in_usd6"`
		OutUSD6   int64 `json:"out_usd6"`
		TotalUSD6 int64 `json:"total_usd6"`
		Transfers int64 `json:"transfers"`
	} `json:"period"`
	PeriodDays     int  `json:"period_days"`
	PeriodComplete bool `json:"period_complete"`
}
if err := get("/v1/addresses/"+addr+"/volume", url.Values{"chain": {"1"}, "days": {"90"}}, &vol); err != nil {
	return err
}
fmt.Printf("in $%.0f out $%.0f over %d days (complete: %v)\n", float64(vol.Period.InUSD6)/1e6, float64(vol.Period.OutUSD6)/1e6, vol.PeriodDays, vol.PeriodComplete)

TypeScript

type Volume = { period: { in_usd6: number; out_usd6: number; total_usd6: number; transfers: number }; period_days: number; period_complete: boolean; all_time_complete: boolean };
const vol = await scan<Volume>(`/v1/addresses/${addr}/volume`, { chain: 1, days: 90 });
console.log(`in $${(vol.period.in_usd6 / 1e6).toFixed(0)} out $${(vol.period.out_usd6 / 1e6).toFixed(0)}`, vol.period_complete ? "" : "(floor, not total)");

거래량은 정산이고, 잔액은 현재입니다

두 라우트는 서로 다른 질문에 답하며, 설계상 값이 일치하지 않습니다. 잔액은 최신 블록에서 체인 자체의 balanceOf입니다. 거래량은 일별 집계가 정산으로 센 것입니다. 확정된 행만 포함하며, 발행과 소각(0x0은 거래 상대가 아닙니다), 자기 자신에게 보낸 전송, 1달러 그래프 하한 미만의 일별 쌍을 제외하고, 페그 1로 달러 환산합니다. 같은 날 USDC 1,000달러를 받아 그대로 보낸 주소는 잔액이 0이고 거래량이 2,000달러입니다. 어느 쪽도 위험 신호가 아닙니다.

Stablecoin scanner ACHIVX에서

출처

더 알아보기

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

이 페이지는 ACHIVX Academy 영어 원문을 한국어로 옮긴 것입니다. 번역과 원문이 다르면 영어 원문이 기준입니다.