Keyless verify0G Aristotle Mainnet

AZULENE · Relic #112

Do not take our word for it. This page re-derives from a keyless endpoint and the raw chain; every command below runs with no wallet in about ten seconds.

On-chain verification
Verified on-chain
All checks passed
  • Creator agent exists on-chain
  • Image root committed on-chain
  • TEE attestation present
  • Provenance hash matches
  • Royalty resolves to current agent owner

Verified: AZULENE · TEE-attested on 0G. Royalty -> 0x8a3bCd5937C1f5847CAfCb98Cf748C88A9e9Bf3d.

On-chain facts
Creating Aura
AZULENE (#18)
Relic owner
0x56b4…f28D
TEE attestation
0x4d34…4549
0G storage root
0x7d4c…fd2a
Provenance hash
0x1e6d…73b2
Seed
106980503777283674165960120995719832666444400842649462756473140024037217022172
Rarity
Common
On-chain TEE-verified
no on-chain TEE dataHash for this relic
TEE signer (pinned)
0x2A94…2e69 · once armed
Royalty
9% · EIP-2981
Royalty receiver
0x8a3b…Bf3d
Agent standard
ERC-7857 iNFT
Image model
qwen/qwen-image-edit-2511 · TeeML
Verify it yourselfno wallet · ~10s

Tier 1 · Provenance + attestation + royalty

Live · keyless

The API is not lying: re-read the same values straight off the chain and confirm they agree.

curl -s https://aura.topengdev.com/api/verify?token=112
the keyless JSON this page renders
cast call 0xF31fD2235a5db76020b2a6F1CBC06e13E25E4805 'provenanceOf(uint256)' 112 --rpc-url https://evmrpc.0g.ai
the imageRoot / provenanceHash / teeAttestation / seed must match the JSON
cast call 0xF31fD2235a5db76020b2a6F1CBC06e13E25E4805 'royaltyInfo(uint256,uint256)' 112 1000000000000000000 --rpc-url https://evmrpc.0g.ai
the receiver must equal ownerOf(creatorAgentId) - royalty follows the agent owner
cast call 0xEEb18eC6a7Bbe4d356862D7710C1259dAcd7c50b 'ownerOf(uint256)' 18 --rpc-url https://evmrpc.0g.ai
the royalty receiver above must equal this address
https://indexer-storage-testnet-turbo.0g.ai/file/info/0x7d4c7d16d9769221fe3d1dd766d4e2f36aecd164cd98b81234675f866301fd2a
returns { finalized: true, size, ... } - the image blob is committed on 0G Storage

Tier 2 · On-chain TEE-verified (sha256 bound to the 0G enclave signer)

Activates at mainnet deploy

activates at the mainnet deploy: after setTeeSigner + a fresh mintOutputVerified mint, `curl image | sha256sum` equals dataHashOf(token) and teeSigner() equals the 0G-published enclave signer.

curl -sL https://aura.topengdev.com/images/0x7d4c7d16d9769221fe3d1dd766d4e2f36aecd164cd98b81234675f866301fd2a | sha256sum
must equal dataHashOf(token) when the on-chain-TEE-verified tier is armed
cast call 0xF31fD2235a5db76020b2a6F1CBC06e13E25E4805 'teeSigner()' --rpc-url https://evmrpc.0g.ai
must equal the 0G-published enclave signer once setTeeSigner is armed at the mainnet deploy
What we do NOT hide
  • attestor == platform == deployer == one key (0x8a3bCd5937C1f5847CAfCb98Cf748C88A9e9Bf3d) - a disclosed single-platform trust boundary
  • the image-gen TEE runs on 0G Galileo testnet (16602); the contracts, on-chain verify and marketplace run on 0G Aristotle Mainnet
  • dataHash is 0 for this token: the on-chain sha256-bound-to-0G-signer tier activates only for mintOutputVerified mints after setTeeSigner is armed. Verification here is the provenance + attestation + royalty tier (all keyless).
  • the raw TEE envelope (teeText/teeSig) is transient + owner-gated; the keyless proof anchors on the on-chain dataHash + pinned teeSigner - the mint itself already ecrecovered the enclave signature and reverts on forgery
  • agents are real ERC-7857 iNFTs (AuraINFT configured): ownership moves only through a proof-gated sealed transfer, and raw ERC-721 transfer reverts

Machine-readable JSON: GET /api/verify?token=112 · generated 2026-08-23T14:56:34.214Z