Farbeam

Anatomy of a token report: USDT and USDC

2026-11-04 UTC · Farbeam research

Snapshot time: 2026-11-04T19:45:13Z for USDT and 19:45:20Z for USDC on Ethereum. The other tokens here were read within the next minute. This note reads two real reports line by line. They are useful examples because both tokens are large and long established, and even so neither report is clean. That is the correct result. The checks report contract features, and they do not judge a token.

#The call

curl -s "https://farbeamlabs.com/api/v1/tokens/ethereum/0xdAC17F958D2ee523a2206206994597C13D831ec7"
curl -s "https://farbeamlabs.com/api/v1/tokens/ethereum/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
const addr = "0xdAC17F958D2ee523a2206206994597C13D831ec7";
const { data } = await (await fetch(`https://farbeamlabs.com/api/v1/tokens/ethereum/${addr}`)).json();
console.log(data.counts);
for (const c of data.checks) console.log(c.id, c.status, c.source, c.field);
import requests

addr = "0xdAC17F958D2ee523a2206206994597C13D831ec7"
data = requests.get(f"https://farbeamlabs.com/api/v1/tokens/ethereum/{addr}", timeout=30).json()["data"]
print(data["counts"])
for c in data["checks"]:
    print(c["id"], c["status"], c["source"], c["field"])

#Side by side

CheckSource fieldUSDTUSDC
liquidityliquidity.usdpass, $66,975,773 in 30 poolspass, $223,484,788 in 30 pools
pool_agepairCreatedAtpass, 1987 dayspass, 2361 days
open_sourceis_open_sourcepasspass
honeypotis_honeypotpasspass
mintableis_mintablewarnunknown
proxyis_proxypasswarn
balance_changeowner_change_balancefailunknown
hidden_ownerhidden_ownerpassunknown
pausabletransfer_pausablewarnunknown
blacklistis_blacklistedwarnunknown
buy_taxbuy_taxpass, 0%pass, 0%
sell_taxsell_taxpass, 0%pass, 0%
top10holders[].percentwarn, 46.2%pass, 24.6%
lp_lockedlp_holders[].is_lockedunknownunknown
Counts8 pass, 4 warn, 1 fail, 1 unknown7 pass, 1 warn, 0 fail, 6 unknown

The contract and holder fields come from GoPlus, and the market fields from DexScreener. The thresholds are on token checks.

#Why USDT shows a fail

GoPlus returned owner_change_balance as true for USDT, and the report maps that to fail with the text "Owner can edit balances." The mapping is fixed. It does not know who the owner is.

USDT is a centrally issued token, and its published contract gives the issuer several powers. These correspond to the flagged fields:

FieldResultWhat it reflects
is_mintablewarnThe issuer can create new supply
transfer_pausablewarnThe owner can pause transfers
is_blacklistedwarnThe contract can block addresses
owner_change_balancefailThe contract has a function that removes funds of blocked addresses, which the field describes as a balance change

For a small token with an anonymous deployer, these same fields would be a serious concern. For USDT they describe a known design of a centrally issued token. The report shows the same result either way, because it reads a field and does not rate an issuer. The reader has to add that context.

#Why USDC shows mostly unknown

USDC is deployed behind a proxy. GoPlus returned is_proxy as true, and it left out is_mintable, owner_change_balance, hidden_owner, transfer_pausable and is_blacklisted.

The report shows these as unknown. It would be a mistake to read that as a clean result. The published USDC contract has roles for minting, pausing and blocking addresses, so the powers exist even though the source did not return them. The USDC report has 0 fails and the USDT report has 1, and that difference comes from what the source returned. It does not show that one token gives its issuer fewer powers. This is why Farbeam has no composite score.

The proxy warning is a separate fact: "Logic can change through a proxy." An upgrade can change contract behaviour.

#Holders

FieldUSDTUSDC
total_supply84,298,550,18146,832,426,791
holder_count15,929,3589,409,681
owner0xc6cd...a828null
Largest holderBinance 8, 16.845%Unlabeled, 7.361%
Second largestUnlabeled, 10.896%Unlabeled contract, 3.377%
Top 10 share46.2%24.6%

The top10 check includes exchanges and contracts. USDT is in warn partly because exchange wallets hold customer balances. A high share does not prove concentrated ownership, and a low one does not rule it out. The owner value of null for USDC is what the source returned for this proxy.

#Same issuers on Solana

Solana reports read authorities directly from the mint account by RPC, so this part does not depend on GoPlus.

Mintmint_authorityfreeze_authoritytop10Read at
USDCwarn, BJE5...5ruGwarn, 7dGb...Crarunknown19:46:04Z
USDTwarn, Q6Xp...69Giwarn, Q6Xp...69Giunknown19:46:15Z

Both authorities are present, so the issuer powers appear as direct facts here. top10 is unknown because the getTokenLargestAccounts call failed for these mints in this run, and sources shows solana-holders with ok: false. See authorities in major Solana mints.

#For contrast

TokenCountsWarnings and fails
WETH on Ethereum12 pass, 1 warn, 0 fail, 1 unknowntop10 warn only
DAI on Ethereum12 pass, 1 warn, 0 fail, 1 unknownmintable warn only

#Limits

A report is a set of field readings. It is not a safety rating, and it is not financial advice. Run your own in the token report tool.