Chains and assets

Chains#

chain_id Chain Native asset Confirmations Status
56 BNB Chain BNB 15 Live
728126428 TRON TRX 19 Live
1 Ethereum ETH 3 Supported
8453 Base ETH 10 Supported
42161 Arbitrum One ETH 20 Supported
137 Polygon PoS POL 32 Supported
  • Live: the chain is read continuously; alerts go out within seconds.
  • Supported: the chain is known to the service (addresses and rules are accepted); reading is enabled on demand.
  • Confirmations: number of blocks waited for before the "confirmed" alert. A rule that sends an immediate alert warns first as soon as the block is included, then at confirmation; if a reorganization removes the block, a "cancelled" alert follows.

The list of chains actually being read, with the last processed block, is returned by GET /v1/health and shown on the status page. An unknown chain_id answers 422 validation_failed (details.field = "chain_id").

Addresses#

Chain Accepted input Returned form
EVM (BNB Chain, Ethereum, Base, Arbitrum, Polygon) 0x + 40 hex characters. In mixed case, the EIP-55 checksum must be right. address lowercase, display_address EIP-55.
TRON T… (base58 with checksum) or hex 0x…. address lowercase hex, display_address base58 T….
JSON
{
  "chain_id": 56,
  "address": "0x8894e0a0c962cb723c1976a4421c95949be2d4e3",
  "display_address": "0x8894E0a0c962CB723c1976a4421c95949bE2D4E3"
}

Store and compare address; display display_address.

Rule assets#

The asset field of a rule accepts:

Value Meaning Threshold unit
native (default) The chain's native coin (BNB, ETH, POL, TRX), direct and internal transfers. Native units: "1.5" = 1.5 BNB.
a token address One specific token, identified by its contract address. Token units: "50000" = 50,000 USDT.
any Any token and the native coin. Raw units (smallest unit).

A token is accepted if it is in the reference list below or has already been observed by the service (its decimals are then known). Otherwise: 422 validation_failed on asset; use any with a raw threshold, or write to support@aicscan.io. GET /v1/tokens/{chain_id}/{address} tells you whether a token is known.

Reference tokens#

Chain Token Contract Decimals
BNB Chain USDT 0x55d398326f99059ff775485246999027b3197955 18
BNB Chain USDC 0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d 18
Ethereum USDT 0xdac17f958d2ee523a2206206994597c13d831ec7 6
Ethereum USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 6
Base USDC 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 6
Arbitrum One USDC 0xaf88d065e77c8cc2239327c5edb3a432268e5831 6
Polygon PoS USDC 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 6
TRON USDT (TRC-20) TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t 6

Amounts#

In responses, amounts are raw integers in strings ("250000000000000000000000"), in the token's smallest unit: divide by 10^decimals to get the readable amount. Use a big-number type (BigInt in JavaScript, int or Decimal in Python): these values exceed floating-point precision.

JavaScript
const raw = BigInt(event.amount);          // 250000000000000000000000n
const units = raw / 10n ** 18n;            // 250000n (USDT on BNB Chain: 18 decimals)