iNFT²
inft2.0g /

iNFT² · ERC-7857 × ERC-6551 · 0G Galileo

An agent is an asset.
Not a subscription.

Every trading agent — and every fund of agents — is an NFT whose hidden state (its “brain”) is encrypted to the owner’s key, lives on 0G Storage, and is re-keyed atomically on sale. Inference is TEE-attested. Children are owned by their parents. Compose, audit, transfer.

Testnet live · chainId 16602 · 21/21 forge tests · 14/14 vitest

FUND · LIVE

Combined return · subtree

+0.00%
+$0.00 · last 30d

AUM

$0

Sharpe

0.00

Ticks

0

TEE-attested inference via 0G ComputeBrain blobs on 0G StorageERC-7857 transferWithReKeyERC-6551 token-bound accountsEIP-712 signed intents60s tick cadence6h snapshot cadenceGalileo chainId 16602TEE-attested inference via 0G ComputeBrain blobs on 0G StorageERC-7857 transferWithReKeyERC-6551 token-bound accountsEIP-712 signed intents60s tick cadence6h snapshot cadenceGalileo chainId 16602

01 · The brain

Encrypted to the owner’s pubkey.

Model state, prompts, position memory — sealed with secp256k1 ECDH + AES-256-GCM. Stored on 0G Storage. Rotated on every updateBrain(); previous root is chained.

Cipher
AES-256-GCM
KDF
secp256k1 ECDH
Storage
0G Storage
Lineage
prev → curr root

02 · The wallet

A token-bound account, deterministic.

Every iNFT has an ERC-6551 wallet computed from (salt, chainId, tc, tid). It can hold tokens — including other iNFTs. The recursion lives here.

Standard
ERC-6551
Registry
Holds
USDC, RISK, iNFTs
Recursion
≤ 3 hops

03 · The intent

Signed by the owner, relayed by us.

Each trade is an EIP-712 intent: nonce + expiry + cap + target allowlist. The operator can relay; it can never move funds out of the TBA or read the brain.

Standard
EIP-712
Controller
Allowlist
DEX routers only
Replay
nonce-protected

System map

Four layers. Every box runs on 0G.

Frontend reads from a backend that indexes chain + storage. A single runtime loop is the only writer — it decides in a TEE, signs as the owner, and lets the contract enforce policy.

FRONTEND · NEXT.JS 14 · PRIVY · VIEM/demo/agent/[id]/audit · /pitch/createBuy flowREST · GET /api/*BACKEND · FASTIFY · SUPABASE LEDGERREST apiindexersnapshot fetcherattestation cache0G CHAIN · chainId 16602iNFT2 · ERC-721 + brain root lineageAgentController · EIP-712 intents · policySnapshotAttestor · per-token snapshot log0G STORAGE · 0G DAbrain blob · AES-256-GCM · secp256k1 ECDHsnapshot blob · prev → curr lineageattestations · DA-anchored every 6hRUNTIME LOOP · runtime/src/main.ts · 60s tick / 6h snapshotdecide() → 0G Compute (TEE attested · GLM-5-FP8)signIntent (EIP-712) → AgentController.execute → TBA callpublishSnapshot → 0G Storageepoch anchor → 0G DA → SnapshotAttestor.submit

End-to-end · request flow + write path · TEE attested · 6h anchored

Per-tick path

Owner signs. Operator relays. Contract enforces.

Every 60 seconds a child agent observes the market, asks GLM-5 in TEE, signs an EIP-712 intent, and the operator relays it. The contract checks nonce, expiry, target, value cap, daily cap — then the TBA executes.

01 · Runtimeobserve(market)60s tick · price + vol02 · 0G Computedecide()GLM-5 · TEE · verify_tee:true03 · Owner keysignIntentEIP-712 · nonce + expiry04 · OperatorrelayAgentController.executeIntent05 · TBAexecute(call)allowlist · cap · daily vol06 · 0G ChaincommitIntentExecuted eventPER-TICK INTENT PATH · 60s cadence · ~5s wall-clock end-to-endThe operator never holds owner keys. Cannot move funds, cannot read the brain.

Owner signs · operator relays · contract enforces · chain commits

What happens on sale

transferWithReKey — atomic.

transferWithReKey · atomic · seller key dies the instant ownership flipsSELLERold brain pubkey0xS3LL…2c4OPERATOR · INSIDE TEE1 · fetch blob from 0G Storage2 · decrypt under seller key3 · re-encrypt to buyer pubkey4 · upload new blob → new rootattested · plaintext never leaves enclaveBUYERnew brain pubkey0xB04…9aFiNFT2.transferWithReKey(id, buyer, newRoot, sealedKey, proof) · one tx · ownership + key + brain all flip together

The brain is re-keyed before the deed flips · no replay window · no leaked secrets

01

Buyer commits

Buyer signs a Privy-derived secp256k1 pubkey and posts it to the transfer queue.

02

Operator re-keys

Operator downloads the blob, decrypts to memory, re-encrypts to the buyer pubkey, uploads.

03

Oracle signs

Oracle co-signs the digest binding new storage root to the new owner.

04

Ownership flips

iNFT2.transferWithReKey commits new root + new owner in one tx. Seller key is dead.