Skip to main content

A Sui surface, not a copy of Arc

Sui is a separate app and a separate contract package. It is not the Arc HTTP API with different addresses. The idea is the same: read behavior, emit a tier and flags, let the host decide. The engine and the gate are not the Arc stack. Sui TokenShield scores coins from SuiScan and market signals. Wallets write into an onchain ScoreRegistry. Access is a non-transferable capability object. There is no x402, no AgentRegistry, and no Knowledge Graph.
TokenShield on Sui scores mainnet coin types. Wallet scores, caps, and the gated pool are Sui testnet. Do not mix those environments in one sentence to a user.

What is the same

Tiers still read as BLOCKED through ELITE / HIGH_ELITE, with VERIFIED for official assets such as 0x2::sui::SUI. Flags are still plain-language warnings. Surfaces stay non-invasive. You consume a signal; you keep the interface.

What is specific to Sui

Non-transferable capability

Standing is a TrustedAgentCap or TrustedAgentCapElite object. No store, so it cannot be transferred. Validity is 30 epochs. Standard mint threshold 70, elite 85.

Scores as onchain objects

The oracle writes a shared ScoreRegistry. Other Move packages read get_score / get_tier / is_trusted with devInspect, no gas.

Demo gated pool

deepbook_gated_pool records orders if you hold a valid cap. It is a self-contained demo table, not a fork of DeepBook and not wired into the native order book.

Coin-type widget

https://sui.trustgated.xyz/widget.js plus data-trustgate-coin="0x2::sui::SUI". This is not the Arc widget.js.

Onchain reference (Sui testnet)

Onchain tier enum on Sui is four values, not Arc’s three: LOW=0, MEDIUM=1, HIGH=2, HIGH_ELITE=3. Confidence is LOW=0, MEDIUM=1, HIGH=2. Score is 0..=100. OracleCap and MintAuthority object IDs are owned by the publisher after init. They are not in the public frontend constants.

HTTP surface

Open CORS on the coin route. Wallet scoring forwards to SUI_WALLET_ORACLE_URL (not in this docs repo). The oracle is expected to write ScoreRegistry and optionally mint a cap.

Go

Open the Sui app

Read a coin type or a wallet live.

Gate by capability

Require the capability object in your own Move package.