This page is the single source of truth for the 0G APAC hackathon data-validation review. Every contract address, deployer EOA, transaction hash, npm package, and live URL below is verifiable on chainscan.0g.ai (chain 16661) and on npm. We follow our own honesty rule: nothing on this page is aspirational.
TL;DR
Foundry Protocol is live on 0G Aristotle mainnet (chain 16661). Six contracts deployed in block 33325628 on 2026-05-15 13:17 UTC, all transactions succeeded. The main user-facing contract is ForgeFactory (entry point for creating Forges), and users hold the ERC-721 Ingot (cap table) when they earn revenue from a model. 0G Storage upload proxy and 0G Compute broker integration are wired into the web app, with the deposit wallet and on-chain provider listed below.
Network + deployment
Deployed contracts (mainnet, chain 16661)
All six contracts below were deployed by Foundry script contracts/script/Deploy.s.sol from commit 9675b5c. The deployment artifact is checked in at contracts/deployments/aristotle.json. Click any address to verify on chainscan.
| Contract | Address | Role |
|---|
| ForgeFactoryuser-facing | 0x6361…e23D | Entry point. createForge(...) spins up a new Forge. |
| Ingotuser-facing | 0x39B7…e1d3 | ERC-721 cap table. Holders earn revenue per share. |
| RevenueSplitter | 0xC58E…9289 | Routes inference payments to Ingot holders. |
| ContributionRegistry | 0x0523…2d86 | Logs Smith contributions to each Forge. |
| IngotRegistry | 0xF8f3…b7e1 | Canonical directory of all minted Ingots. |
| FORGEToken | 0xE716…20Ca | ERC-20 protocol token; denominates Ingot shares. |
Main user-facing contracts — the ones to count users on
Two contracts emit the events that map 1:1 to real users:
| Contract | Counts as | Event |
|---|
| ForgeFactory | A user who creates a Forge (founder / collective initiator). | ForgeCreated(forge, creator, …) |
| Ingot | A user who holds a share in a co-owned model (data / compute / capital Smith). | IngotMinted / ShareMinted |
The indexer at packages/indexer/src/index.ts listens to both event ABIs from block 0; the live dashboard at foundryprotocol.xyz/dashboard renders the same stream.
Agent ID adaptor
Not deployed yet
Foundry's architecture references an Agent ID identity for each Ingot, but no Agent-ID adapter contract is deployed on Aristotle today. Agent ID is on the post-v1 roadmap; the Ingot ERC-721 currently functions as the model identity.
0G Storage
Honest status
Storage integration is fully wired (proxy + SDK + neutral @foundryprotocol/0gkit-storage client), but no concrete root hash is on-chain yet because no Ingot has been minted. Once the first Forge calls setWeightsAndGoLive(weightsRoot), that root will appear in the IngotMinted event on the Ingot contract above.
0G Compute deposit wallet
All EOAs involved
Deployment transactions
All seven transactions landed in block 33325628 from deployer 0x4f1866324c7F42E175794C864E649ECBAe07CfE8. Every receipt has status=0x1 (success).
0G infrastructure used
| Layer | Endpoint / package |
|---|
| 0G Chain (EVM L1) | https://evmrpc.0g.ai |
| 0G Storage | https://indexer-storage.0g.network |
| 0G Storage SDK | @0gfoundation/0g-storage-ts-sdk ^1.2.9 |
| 0G Compute SDK | @0gfoundation/0g-compute-ts-sdk ^0.8.3 |
| 0G docs | docs.0g.ai |
Live dApp
Marketing & discovery
Live chain state (reads the 6 contracts above)
API endpoints
| Endpoint | Purpose |
|---|
POST /api/v1/chat/completions | OpenAI-compatible chat completions, attestation-tagged. |
GET /api/v1/models | List of live Foundry Ingots. |
GET /api/v1/demo/receipt | Sample TEE attestation + revenue receipt envelope. |
POST /api/storage/upload | 0G Storage upload proxy (browsers can't sign directly). |
POST /api/forge/draft | Forge metadata draft (modelSpec + evalSpec). |
POST /api/forge/manifest | Pin a Forge manifest to 0G Storage. |
Base URL: https://foundryprotocol.xyz (or the dedicated subdomain https://api.foundryprotocol.xyz).
Source code
Published npm packages
Foundry SDK & tooling
0gkit primitives (neutral 0G toolkit)
Eighteen packages shipped under the @foundryprotocol/0gkit-* namespace. Full list searchable on npm.
How to verify (commands a reviewer can run)
bash
# 1. Bytecode exists for every contract (non-empty hex output → success)
for a in 0x636109264EBF6cFD18CC38bD43eDf9cCad7ae23D \
0x39B736f424754d05a0da186d89015b74d1DDe1d3 \
0xC58E0F32BD43e43153D3CA8ee8F25C8198789289 \
0x05235Ba0F2a77bcaB87371E4d797D6830ddC2d86 \
0xF8f3fAE648A8d7ee4Df0A7b10a0F759938aab7e1 \
0xE716B0260f462b2A1789cB6cfCBd825736b920Ca; do
echo -n "$a "; cast code --rpc-url https://evmrpc.0g.ai $a | head -c 12; echo "…"
done
# 2. Hit the OpenAI-compatible inference API
curl https://foundryprotocol.xyz/api/v1/chat/completions \
-H "content-type: application/json" \
-d '{"messages":[{"role":"user","content":"hello"}]}'
# 3. List live Ingots
curl https://foundryprotocol.xyz/api/v1/models
# 4. Install the SDK + dry-run construct the client
npm i @foundryprotocol/sdk
node -e "import('@foundryprotocol/sdk').then(({Foundry}) => \
console.log(new Foundry({contracts:'aristotle'}).contracts))"