Chainlink for the fetch. Predge for the commit.
A Chainlink Runtime Environment (CRE) workflow fetches an outcome off-chain; the DON signs it into a report; Predge turns that report into a committed, counterparty-verifiable verdict — tied to a request that was published on-chain before the outcome was knowable, with a slashable bond behind it, and (on Rootstock) anchored to Bitcoin. CRE and Predge are complementary primitives: the fetch layer and the commit layer.
off-chain Chainlink CRE (DON) on-chain
┌────────┐ fetch ┌───────────────┐ signed report ┌────────────────────┐ commit ┌──────────────────────┐
│ outcome │────────▶│ CRE workflow │────────────────▶│ KeystoneForwarder │──onReport─▶│ PredgeCREReceiver │
│ / API │ http │ (main.ts) │ writeReport └────────────────────┘ │ → PredgeValidator │
└────────┘ └───────────────┘ │ (commit + slash) │
└──────────────────────┘
CRE answers "what is the value?" — it fetches and computes, and the output is "the oracle reported X." It does not answer "was this committed before the outcome, by a party that staked capital on being right, in a way nobody can silently rewrite?" — that is Predge. A prediction market or agent-settlement contract can take prices from Chainlink and outcomes from Predge without either duplicating the other's work.
| Piece | Status |
|---|---|
contracts/PredgeCREReceiver.sol |
✅ on-chain bridge — accepts a CRE report via the Keystone onReport(bytes,bytes) standard, verifies the forwarder, decodes (requestHash, score, responseHash), and commits it into a Predge validator (validationResponse). |
workflows/settlement/main.ts |
⏳ CRE workflow — scaffolded via cre init once authenticated (see below), so the SDK version matches the CLI (1.30.x). Fetches an outcome (http.Client), encodes it, runtime.report(...), evmClient.writeReport(...) → PredgeCREReceiver. |
The Predge validator (PredgeAgentValidator) is already live on Circle Arc and Rootstock
testnets — see predge-arc and
predge-rootstock. This repo wires CRE to it.
Built as one core CRE→Predge workflow, then forked per Chainlink track / grant angle:
- Core — CRE→Predge settlement. CRE fetches an outcome → Predge commits the verdict, bond slashable against a deterministic acceptance test. → Chainlink Integration / Community grant.
- Fork A — Prediction market. CRE fetches a price → Predge resolves a commit-before-outcome call as Hit/Miss. → Prediction Markets track.
- Fork B — Agent settlement (x402). Agent pays via x402 → CRE verifies delivery data → Predge commits the verdict. → Autonomous Agents track.
Forks A/B are a few lines over the core with different data sources.
CRE tooling requires a Chainlink account. Auth once, then scaffold + simulate:
# 1. Authenticate the CRE CLI (use a Predge-associated Chainlink account).
cre login # ~/.cre/bin/cre — installer added it to PATH
# 2. Scaffold the TypeScript workflow (pins the correct SDK version).
cre init --project-name predge-cre --template helloworld-typescript \
--workflow-name settlement
# 3. Deploy PredgeCREReceiver, point the workflow config at its address,
# fund the CRE key with Sepolia ETH (faucets.chain.link), then simulate.
cre workflow simulate settlement --target staging-settingsLocal simulation runs against Sepolia; production deployment to a DON needs CRE Early Access
(cre account access / app.chain.link/cre/request-access) — requested in parallel.
creCLI ≥ 1.30 · Bun ≥ 1.2.21 · Node 20 · (Go ≥ 1.25 for Go workflows)@chainlink/cre-sdk(installed via thecre inittemplate so its version tracks the CLI)- Solidity ^0.8.24 for
PredgeCREReceiver.sol(deploys as-is to Arc / Rootstock / Sepolia)
- ✅
PredgeCREReceiver.solwritten — the on-chain half, CLI-independent. - ✅ CRE CLI installed, toolchain verified, SDK model mapped (trigger → http fetch → report → writeReport).
- ⏳ Workflow
main.ts— pendingcre login(Chainlink account) for a version-correctcre initscaffold.
Predge is independent and self-funded. If it's useful, you can back development directly — any chain works:
| Chain | Address |
|---|---|
| EVM (ETH / Arc / Rootstock / Robinhood / Base) | 0x9084f5000E07C7133D6dA5eE4f271AB6D1821144 |
| Bitcoin | bc1q50nqg5lxkac9mwqdnj6lt0369mg8snkfam0e3p |
| Solana | 9dxMRRtC7RKZH5rFZpUywjmnQ87H9qHhtW43u5LYmpV |
| TRON (TRX / USDT-TRC20) | TVeWNcGwisQaL5Ge5B3GHG4tN5xX5VGxuU |
More at data.predge.io/settlement.