Skip to main content

Network

Settlement asset is Circle USDC 6 decimals at 0x3600000000000000000000000000000000000000. Native gas is a different USDC (18 decimals). Do not mix them.

Addresses

Sources live in the TrustGate repo under contracts/. ABIs are exported from frontend/src/lib/abi/. TrustAttestationVerifier.sol is implemented. Deploy it per protocol (constructor: initial issuer). It is not a shared singleton on the table above.

Read a tier from another contract

Onchain values: 0 = LOW, 1 = MEDIUM, 2 = HIGH. HIGH_ELITE shares 2. Uncached or expired plaintext reads revert (TierUncached / ScoreExpired) — fail closed.
These three bands are the payment-routing map. They are not a recommended lending policy. For access control prefer a protocol-owned ladder plus attestations.

Register an agent

An address can only register itself.
Anyone else reverts CallerMustBeAgent. The caller is recorded as the agent owner. Lifecycle after that: There is no transferOwnership on an agent, and the agent owner cannot suspend themselves or anyone else.

Claim USDC

  1. Depositor deposit(amount) — USDC pulled into TrustGate.
  2. Depositor setAllowance(agent, cap).
  3. Agent claim(depositor, amount).
  4. Routing:
    • HIGH → transfer now
    • MEDIUM → pending, 24h, then releaseClaim()
    • LOW → pending escrow, depositor approveClaim() (or cancelClaim())
Scores older than 90 days fail closed. Reentrancy-guarded. Ownable2Step on all contracts. Only the oracle may write plaintext scores; agent owners cannot mint HIGH. The dashboard “Calculate Score” action calls setTrustScore and reverts unless the connected wallet is an authorized oracle. Partners read scores; they do not write them. Dashboard: trustgated.xyz/dashboard. Product writeup: Agent payments.

Verify an attestation onchain

See Gate with attestations for the EIP-712 types. After verify(...) succeeds, apply your ladder in your own module. The verifier never sets a borrow limit.