Contracts & Addresses
Verglas runs on two networks. Everything below is real and verifiable on-chain — no stand-ins.
Avalanche C-Chain mainnet (43114)
| Contract | Address |
|---|---|
| VerglasHub | 0x2b6466EC93C064f67C260c30613593460252169C |
| ValidationRegistry (Verglas) | 0x332fc886dd6ab933c89a1149e7D938a6B4214a01 |
| Groth16Verifier | 0xa24972871B987cC7feD401Ea8e46F6D85F88a24C |
| VerglasOracle | 0x31900CA6bBd05ac2516feB6798f6aeB86FD41239 |
| VerglasFactory (daily-limit vaults) | 0x7eC0c53fC6C865c1865aef6c744f5b9B1b7CD758 |
| VerglasFactory (legacy, pre daily-limit) | 0xc07ef259Eb88742e00113d9F460F5D2081078960 |
| ERC-8004 Identity Registry (canonical) | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 |
| USDC (Circle official) | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E |
The Validation Registry, honestly
Identity is the canonical ERC-8004 registry — already live on Avalanche mainnet, and note it sits at a different address than on Fuji (the reference deployment mines a separate vanity address per network). Validation is messier: no network has an authoritative Validation deployment — the reference repository lists no Validation address for any network and that section of the spec is still under revision with the TEE community. On Fuji we stamp into the reference deployment at the ERC-8004 vanity address; on mainnet, where none exists, we run our own — event- and interface-compatible with ERC-8004, so any 8004 explorer indexes it as-is.
Fuji testnet (43113)
| Contract | Address |
|---|---|
| VerglasHub | 0xBDC5eca7253caC347Cf690Ead10dfFda0284A9d5 |
| VerglasOracle (keeper-signed price shim) | 0x11a5Bd2295B316eEB53101cdB8B16D7A61A3bF4E |
| Groth16Verifier | 0xD8A0b54325B52345E390A4B297bC0629000960DE |
| VerglasAccount (demo vault) | 0x8Ede2dB4a519B260944EE58125d6ecfA33CfaE72 |
| VerglasAccount (treasury vault) | 0xec9fb95C029980B80F63FfA27c20b98f586c564c |
| VerglasTreasurer | 0xf9098c210C5918F7dE01aA7E96b997C819Fb4614 |
| VerglasFactory (daily-limit vaults) | 0x2efB8F4654D192531fB350bA2915a55c9Bd690e0 |
| VerglasFactory (legacy, refillable-budget) | 0x54Ea4db6Ba394B5853BB2271c8C1838549c7aE2B |
| VerglasAccount (x402 float vault, agent #223) | 0x2a410bC662cAE7f445c3B7B7277248B446ac1357 |
Canonical infrastructure we build on
| Contract | Address |
|---|---|
| ERC-8004 Identity Registry (canonical) | 0x8004A818BFB912233c491871b3d84c89A494BD9e |
| ERC-8004 Validation Registry (reference deployment) | 0x8004Cb1BF31DAf7788923b405b754f57acEB4272 |
| USDC (Circle official, 6 decimals) | 0x5425890298aed601595a70AB815c96711a31Bc65 |
Echo L1 (173750) — the live border
| Contract | Address |
|---|---|
VerglasGate (minScore 100, maxAge 7 days) | 0xD09c7baE6A2eE0E1E1C9443EF2a2791d8a97dc36 |
Blockchain ID (for carryAttestation): 0x1278d1be4b987e847be3465940eb5066c4604a7fbd6e086900823597d81af4c1.
Off-chain surfaces
| Surface | Where |
|---|---|
| verglas-pay MCP server | verglas-mcp on npm — npx verglas-mcp |
| x402 demo seller (0.01 USDC, Fuji) | verglas-x402-demo.l3ekirerdem.workers.dev/frost-report |
| x402 settlement verify | Ultravioleta facilitator (community-run, C-Chain + Fuji) |
| TeleporterMessenger (every Avalanche EVM chain) | 0x253b2784c75e510dD0fF1da844684a1aC0aa5fcf |
USD/TRY feed id (Pyth's id, kept as the VerglasOracle storage key): 0x032a2eba1c2635bf973e95fb62b2c0705c1be2603b9572cc8d5edeaf8744e058
Why VerglasOracle instead of Pyth?
Pyth's free Hermes endpoint shut down with the July 2026 protocol migration. VerglasOracle keeps the exact IPyth surface the treasurer was built against; the keeper reads two independent public FX references (ECB via Frankfurter + open.er-api.com), cross-checks them, and pushes a signed price the contract verifies with ecrecover. Monotonic publish times, a future-skew bound and a ±10% deviation guard protect against bad source reads.
Echo L1 (173750)
| Contract | Address |
|---|---|
| VerglasGate | 0xD09c7baE6A2eE0E1E1C9443EF2a2791d8a97dc36 |
Gate parameters: minScore = 100, maxAge = 7 days, trusts the Hub on Fuji C-Chain (blockchain ID 0x7fc93d85…cac10d5, read from the Warp precompile — don't trust third-party listings). Alongside the legacy isCleared(agentId), this Gate answers the strict isClearedFor(agentId, account) — the attestation names which vault was proven, so a consumer can refuse clearance earned on a different vault.
The demo's second chain was the Dispatch L1 until its public RPC died on 2026-07-30; the retired v2 Gate there (0xa24972871B987cC7feD401Ea8e46F6D85F88a24C) trusts a pre-v4 Hub. Gates are cheap and per-L1 by design — if Dispatch returns, a fresh Gate lands there with the same script.
Agent identities
Real ERC-721 tokens minted by the canonical Identity Registry: #219 (demo vault) and #220 (treasurer vault).
Source
All contracts live in src/ — Solidity 0.8.25, no proxies, no upgradability, custom errors, 92 Foundry tests. Deploy scripts under script/, full deployment history in deployments/fuji-testnet.md.
