A network of heterogeneous AI settler nodes that coordinate over Gensyn AXL to reach cryptographic consensus on settlement outcomes for AI-settled prediction/information markets.
Gensyn launched Delphi on mainnet on April 22, 2026. Delphi resolves markets via AI models picked by the market creator at creation time. The model weights are fixed at market creation and cannot be changed (source). This produces a single-model trust dependency: a creator who picks one biased or hallucinating AI model can produce wrong settlements with no recourse.
Synod replaces that single point of trust with a heterogeneous network: AI models from independent providers, each running on a separate machine, coordinating over an encrypted P2P channel (AXL), and submitting an on-chain proof only when a quorum of distinct, registered model identities agree on the winning outcome.
The public Delphi SDK (@gensyn/delphi-sdk) exposes only trader/predictor methods: quoteBuyExactOut, quoteSellExactIn, spotPrice, getMarket, marketStatus, buyExactOut, sellExactIn, redeem. There is no exposed settler-side method (no submitSettlement, no resolveMarket, no settler registration). Settlement is permissioned to Gensyn-internal infrastructure today.
Implication: Synod cannot, in this hackathon window, plug into a live Delphi market as the actual settler. Instead, Synod ships as:
- A working multi-node consensus protocol over AXL (the AXL prize-winning core).
- An on-chain settlement registry deployed by us on Gensyn L2 that records Synod consensus decisions with cryptographic quorum proofs.
- A parallel-run demo: pick a real, currently-active Delphi market; run Synod's full consensus protocol against the same resolution prompt; show what Synod would have settled to; compare with what Delphi's single settler eventually decides when the market resolves.
- A reference implementation Gensyn could integrate into Delphi v2.
This is positioned to grant committees as infrastructure Gensyn objectively needs to ship — the next-version settler architecture for their just-launched flagship product.
┌──────────────────────────────────────────────────────────────────────┐
│ Synod Settler Network │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Settler #1 │ │ Settler #2 │ │ Settler #3 │ ... │
│ │ Claude │ │ GPT-4 │ │ Gemini │ │
│ │ AXL node A │ │ AXL node B │ │ AXL node C │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ └─────────────── AXL P2P (encrypted, signed) ─────────────────┤
│ │ │
│ ▼ │
│ Quorum proof (k-of-n) │
│ │ │
│ ▼ │
│ SynodRegistry.recordSettlement(...) ← Gensyn L2 │
└──────────────────────────────────────────────────────────────────────┘
Every settler node is the same role architecturally — there is no leader, no coordinator. Each node:
- Subscribes to the question stream over AXL (in v1, the question is broadcast manually; in v2, it could be triggered by a Delphi market resolution event).
- Runs inference against its own LLM provider with the resolution prompt.
- Constructs a
SettlementVotemessage signed with its AXL ed25519 identity key. The signed domain includes protocol version, question id, prompt hash, outcomes hash, deadline, settler pubkey, model tag, outcome, confidence, and timestamp. - Broadcasts the vote to all peers via AXL.
- Collects votes from peers within a deadline.
- Computes the consensus result locally (deterministic algorithm: weighted majority by confidence).
- If the winning outcome itself reaches quorum threshold (e.g., 4-of-5 or 3-of-5), the supporting voter with the lowest peer ID submits the on-chain transaction; all others verify and stand by.
- A question payload is published to AXL on a known topic name (
synod.questions.v1). - Payload:
{ questionId: hex, prompt: string, deadline: unix_ts, threshold: int }.
- Each settler runs inference. Result includes:
outcome(binary: 0|1; multi-outcome: index)confidence(0-1 float)reasoning(string, optional, for audit; not part of the cryptographic proof)
- Vote payload (canonical JSON, signed):
{ "questionId": "<hex>", "promptHash": "<sha256>", "outcomesHash": "<sha256>", "deadline": <unix_ts>, "settlerKey": "<ed25519 pubkey hex>", "modelTag": "anthropic-claude-opus-4-7", "outcome": 1, "confidence": 0.92, "timestamp": <unix_ts> } - Signature:
ed25519(canonical_json(payload))using AXL identity key.
- Each settler collects votes from configured peers until
deadlineor untilnvotes received. - AXL sender headers are treated as routing metadata because local AXL masks the full sender key; the ed25519 signature is the authoritative identity check.
- Votes are accepted only when the signed
settlerKeyis a configured peer and, when on-chain mode is enabled, an AXL pubkey registered inSynodRegistry. - Votes are deduplicated by
settlerKey(one vote per settler); conflicting second votes are rejected as equivocation. - Invalid signatures, invalid outcomes, stale deadlines, future timestamps, and domain mismatches are rejected.
- First filter candidates to outcomes with at least
thresholdregistered votes. - Among eligible candidates, compute weighted score:
sum(confidence_i for vote_i where outcome_i = candidate). - Settlement outcome = eligible candidate with highest weighted score. Ties resolve to lower outcome index.
- If no outcome has at least
thresholdvotes, mark asNO_QUORUM.
- Lowest-peer-ID node (deterministic across the network) submits the transaction:
SynodRegistry.recordSettlement( bytes32 questionId, uint8 outcome, uint256 quorumSize, uint256 weightedScoreScaled, bytes calldata signedVotesPayload );
- The contract verifies caller authorization, nonzero question id, nonempty bounded proof payload, and quorum size bounded by registered settler count. It stores the proof immutably and exposes registered AXL pubkeys.
- The server-side verifier, independent CLI verifier, and any external auditor verify ed25519 signatures, registered AXL membership, domain binding, quorum, and weighted score from the stored payload.
- All other nodes verify the on-chain submission.
registerSettler(address settler, bytes32 axlPubKey, string modelTag)— admin-gated, lists approved Synod settler nodes and rejects duplicate or zero AXL pubkeys.recordSettlement(bytes32 questionId, uint8 outcome, uint256 quorumSize, uint256 weightedScoreScaled, bytes signedVotesPayload)— registered settlers can anchor one immutable proof per question; emitsSettlementRecorded.- View:
getSettlement(bytes32 questionId) returns (Settlement)andregisteredAxlPubKeys(bytes32) returns (bool).
(v2: stake-based participation, slashing, $AI rewards. Out of scope for hackathon submission.)
| Layer | Choice | Rationale |
|---|---|---|
| P2P comms | Gensyn AXL (Go binary, runs as local daemon) | Prize requirement; encrypted; built-in MCP/A2A |
| Settler agent runtime | Python 3.11+ | AXL has Python sample client; Anthropic/OpenAI/Gemini SDKs are Python-native |
| Cryptography | ed25519 (via PyNaCl or cryptography lib) | AXL identity keys are ed25519 |
| Smart contracts | Solidity 0.8.24 + Foundry | Standard EVM; Gensyn L2 is OP Stack |
| L2 deployment | Gensyn L2 mainnet | Real on-chain activity, demonstrates ecosystem fit |
| LLM providers | Anthropic Claude, OpenAI GPT, Google Gemini, plus 1-2 open-source via fal/Together | Heterogeneity is the security model |
| UI | Next.js 16 + Tailwind | Fast iteration; live deliberation viewer |
- Stake/slashing — recorded as v2 in the spec for grant proposal.
- Permissionless settler enrollment — admin-gated registry for v1.
- ERC-7857 iNFT settler-as-NFT — out of scope for AXL prize focus.
- Multiple market types — focus on binary first, extend to multi-outcome only if time permits.
Day-by-day execution tracked via tasks. Spec will be updated as protocol decisions are finalized.
Last updated: Day 1 (April 28, 2026)