Submission · 0G APAC Hackathon

Chain-verifiable proof — every contract, EOA, and link Foundry shipped.

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

FieldValue
Network0G Aristotle Mainnet
Chain ID16661
EVM RPChttps://evmrpc.0g.ai
Block explorerhttps://chainscan.0g.ai
Deploy block33325628 (0x1fc823c)
Deploy date2026-05-15 13:17 UTC
Source commit9675b5c
Deployer EOA0x4f1866324c7F42E175794C864E649ECBAe07CfE8

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.

ContractAddressRole
ForgeFactoryuser-facing0x6361…e23DEntry point. createForge(...) spins up a new Forge.
Ingotuser-facing0x39B7…e1d3ERC-721 cap table. Holders earn revenue per share.
RevenueSplitter0xC58E…9289Routes inference payments to Ingot holders.
ContributionRegistry0x0523…2d86Logs Smith contributions to each Forge.
IngotRegistry0xF8f3…b7e1Canonical directory of all minted Ingots.
FORGEToken0xE716…20CaERC-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:

ContractCounts asEvent
ForgeFactoryA user who creates a Forge (founder / collective initiator).ForgeCreated(forge, creator, …)
IngotA 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

FieldValue
Storage indexerhttps://indexer-storage.0g.network
Storage SDK@0gfoundation/0g-storage-ts-sdk ^1.2.9
Upload signer (EOA)0x4f1866324c7F42E175794C864E649ECBAe07CfE8
Upload proxyPOST /api/storage/upload
Published root hashes0 today — Ingot.weightsRoot is set when a Forge mints; no Forge has minted yet.

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

FieldValue
Deposit wallet (EOA)0xAE64220d1639b0E6F9D78Aa2954a84e8B3f557Cd
On-chain provider counterparty0xd9966e13a6026Fcca4b13E7ff95c94DE268C471C
Compute SDK@0gfoundation/0g-compute-ts-sdk ^0.8.3
Broker RPChttps://evmrpc.0g.ai
Used byapps/web/lib/zg-compute.ts, apps/eval-coordinator/src/index.ts

All EOAs involved

RoleAddress
Deployer + coordinator + storage uploader0x4f1866324c7F42E175794C864E649ECBAe07CfE8
Treasury (FORGE supply + 2.5% protocol fee)0x6B130682699955932F4E07aF91581e94920606d7
0G Compute broker (deposit wallet)0xAE64220d1639b0E6F9D78Aa2954a84e8B3f557Cd
0G Compute provider (on-chain counterparty)0xd9966e13a6026Fcca4b13E7ff95c94DE268C471C

Deployment transactions

All seven transactions landed in block 33325628 from deployer 0x4f1866324c7F42E175794C864E649ECBAe07CfE8. Every receipt has status=0x1 (success).

StepActionTx hash
1Deploy ForgeFactory0xe307da04576e3a695818d0
2Deploy Ingot0x9f29bf63b497767f711c65
3Deploy RevenueSplitter0x813d2ed42e270c8d778dd4
4Deploy ContributionRegistry0xfdd4331b06bf1a0875ad46
5Deploy IngotRegistry0x40d8df433a7813195ac48c
6Deploy FORGEToken0xf7d67458f582b366198450
7Ingot.setFactory(ForgeFactory)0x7492e97cbe9f2fb67b887c

0G infrastructure used

LayerEndpoint / package
0G Chain (EVM L1)https://evmrpc.0g.ai
0G Storagehttps://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 docsdocs.0g.ai

Live dApp

Marketing & discovery

Live chain state (reads the 6 contracts above)

RouteURL
Dashboard (event stream)/dashboard
All Forges/forges
Create a Forge/forges/new
All Ingots/ingots
All Smiths/smiths
Lineage graph/lineage

API endpoints

EndpointPurpose
POST /api/v1/chat/completionsOpenAI-compatible chat completions, attestation-tagged.
GET /api/v1/modelsList of live Foundry Ingots.
GET /api/v1/demo/receiptSample TEE attestation + revenue receipt envelope.
POST /api/storage/upload0G Storage upload proxy (browsers can't sign directly).
POST /api/forge/draftForge metadata draft (modelSpec + evalSpec).
POST /api/forge/manifestPin a Forge manifest to 0G Storage.

Base URL: https://foundryprotocol.xyz (or the dedicated subdomain https://api.foundryprotocol.xyz).

Source code

Repo / pathLink
Main monorepo (rajkaria/foundry)github.com/rajkaria/foundry
Contracts sourcecontracts/src/
Deploy scriptcontracts/script/Deploy.s.sol
Mainnet deployment artifactcontracts/deployments/aristotle.json
SDKpackages/sdk/
MCP serverpackages/mcp-foundry/
Indexerpackages/indexer/
Web appapps/web/
Eval coordinatorapps/eval-coordinator/
Sister toolkit (rajkaria/0gkit)github.com/rajkaria/0gkit
0gkit docsdocs.0gkit.com

Published npm packages

Foundry SDK & tooling

PackagePurpose
@foundryprotocol/sdkFoundry class — viem-based, OpenAI-compatible inference
@foundryprotocol/mcpMCP server (npx @foundryprotocol/mcp)
@foundryprotocol/indexerEvent indexer for ForgeCreated / IngotMinted / RevenueClaimed
@foundryprotocol/design-tokensShared design tokens

0gkit primitives (neutral 0G toolkit)

Eighteen packages shipped under the @foundryprotocol/0gkit-* namespace. Full list searchable on npm.

PackagePurpose
@foundryprotocol/0gkit-coreEnv validation, network presets, define0GConfig
@foundryprotocol/0gkit-chaincreateClient, balance, faucet, explorerUrl
@foundryprotocol/0gkit-storage0G Storage wrapper — upload, download, computeRoot
@foundryprotocol/0gkit-compute0G Compute broker + OpenAI-compatible shim
@foundryprotocol/0gkit-daData Availability publish / verify
@foundryprotocol/0gkit-attestationTEE attestation envelopes (EIP-191)
@foundryprotocol/0gkit-reactReact hooks for storage / compute / chain
@foundryprotocol/0gkit-cli0g doctor / 0g dev / 0g traces / 0g cost forecast
@foundryprotocol/0gkit-mcp0gkit MCP server
@foundryprotocol/0gkit-devnetLocal 0G devnet harness
@foundryprotocol/0gkit-playgroundInteractive sandbox
@foundryprotocol/0gkit-jobsDurable job runner
@foundryprotocol/0gkit-testingMocks + fakes for tests
@foundryprotocol/0gkit-observabilityOpenTelemetry traces + cost forecast
@foundryprotocol/0gkit-indexerReorg-safe event indexer
@foundryprotocol/0gkit-contractsTyped contract clients
create-0gkit-appScaffolder (npx create-0gkit-app)
create-0g-appAlias scaffolder (npx create-0g-app)

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))"