Research Map · Source-Verified (main branch)

RMT — Citations, Attestations & the Oracle How the Reputation & Merit Token system actually works, what research we finalized, and every visual we built — one map.

2026-06-24 · antilles-v2 @ main (RMT layer = 33 audited files) · flow verified at the file:line refs shown below
The whole system in one sentence: a citation is one verified agent vouching for another; an attestation is the on-chain gate that decides whether a citation is allowed to count; the oracle turns the resulting web of citations into a PageRank score (after stripping out fake/collusive ones); and the RMT reputation is that score, capped by the agent's trust tier. Citations are the edges of the trust graph — attestations decide which edges are real — the oracle weighs them — reputation is the readout.
01

The simple map

Left to right: an agent cites another → the attestation gate checks it → it's recorded on-chain → the off-chain oracle scores the whole graph → the score is written back and read out as reputation. Blue = on-chain contract. Purple = off-chain oracle service.

ON-CHAIN (Solidity contract) OFF-CHAIN (oracle/ TypeScript service)
◆ ON-CHAIN — write path
ACTOR
Agent A cites Agent B
A verified bot vouches for another via an EAS attestation (data: fromBot, toBot, tier).
EAS routes
THE GATE
ShyftGatedResolver.attest()
Runs 4 checks (below). If any fails, the citation is rejected — it never counts.
ShyftGatedResolver.sol:158·173·184
if all pass
LEDGER
CitationCounters.recordCitation()
Increments received/given/pair counts + emits CitationRecorded. Append-only — revocation never decrements (survives event pruning).
CitationCounters.sol:28
off-chain oracle reads the on-chain citation graph
◆ OFF-CHAIN — scoring pipeline
1 · FETCH+GRAPH
Build the citation graph
Read EAS events → nodes = agents, edges = citations.
oracle/ CitationFetcher · CitationGraph
2 · SYBIL
Strip fake edges
Penalize reciprocal pairs, clusters, carousels, star fan-ins.
oracle/ SybilDetector
3 · PAGERANK
Score the graph
Power-iteration PageRank, damping α≈0.85 (read from chain).
oracle/ pagerank.ts
4 · CLAMP+SUBMIT
Bound & write back
Normalize to 0–10000 bp; cap per-epoch delta + first-score; submit.
oracle/ delta.ts · ScoreSubmitter
back on-chain — store & read
STORE
PageRankOracle.submitScores()
Only the oracle operator can write. Enforces cooldown, max-delta, first-score cap, epoch staleness.
PageRankOracle.sol:74 · getCompositeScore:155
getScore()
READOUT
ReputationEngine.getReputation()
Returns the oracle score for a registered bot, then applies the tier cap (T0 / T2).
ReputationEngine.sol:196→199
final
RESULT
Reputation 0–10000 bp
Tier-capped trust score consumed by x402 channels, gating, credit lines.
① Trust Anchor
Attester must be a Shyft-verified Trust Anchor.
isTrustAnchorVerified · :158
② Attribution
Only the TA that registered A may cite on A's behalf.
getBotTrustAnchor(fromBot)
③ Both in Shyft
Both A and B must hold Shyft attestations.
TrustAnchorStorage length > 0
④ Trust Channel
A and B must share an active RMT trust-channel route.
getActiveTrustChannelRoutePossible · :173
02

How citations relate to RMT, in plain English

The mechanism above, told as a story. This is the citation↔attestation↔oracle↔reputation relationship specifically.

1

A citation is a vote of confidence — recorded, not just emitted

When Agent A cites Agent B, that's A staking its own credibility on B. It becomes a permanent directed edge (A→B) in the citation ledger. Because it's append-only, the trust graph has memory: pulling an attestation later doesn't erase that the citation happened.

CitationCounters.sol:28 — citationsReceived[B]++, pairCitationCount[A,B]++, emit CitationRecorded
2

The attestation gate is what makes citations meaningful

Anyone can claim to cite anyone — so the value is entirely in the gate. A citation only enters the graph if the attester is a verified Trust Anchor, is the anchor that actually registered A, and both agents are real Shyft members sharing a trust channel. This is why "roll Shyft's attestation core" is the foundation: the gate is Shyft.

ShyftGatedResolver.attest() :158 (TA) · :173 (channel) · attribution binding · :184 record
3

The oracle converts "who cited whom" into "how trustworthy" — and resists gaming

A raw citation count is trivially farmed. So the off-chain oracle runs PageRank over the whole graph (your trust flows from who trusts you, recursively) and first strips collusive structures — mutual back-scratching, citation rings, fake-account fan-ins. This is the RMT "intelligence" layer (S33): the contracts stay simple and audited; the smart part is off-chain and swappable.

oracle/ SybilDetector → pagerank.ts → delta.ts → submitScores
4

RMT reputation is the tier-capped readout

The final score (0–10000 basis points) is the oracle's PageRank result, then clamped by the agent's tier — e.g. a ghost/unverified agent (T0) is capped at 3500 bp, an anchor-attested agent (T2) at 8500 bp — so identity strength bounds how much reputation you can ever accrue. That score is what x402 payment channels and credit lines read.

ReputationEngine.getReputation :196 → PageRankOracle.getScore :199 · tier caps T0/T2

↪ The hook for the payments work (your 2nd task)

Notice step 2 already moves value: attest() transfers a citation fee in the RMT token from the attester to the cited agent. That existing fee path is exactly where the Shyft-token-vs-USDT attestation-fee / fee-split mechanism plugs in — I'll detail that next, against your 27_test_attestationFee.js reference, staying on the audited main branch.

03

What we actually got to (finalized research)

The state of the research across the four tracks that make up RMT & its infrastructure — honest status, closest-to-deployment first.

RMT Reputation LOCKED BASELINE

0.9397
Phase-7b composite (synthetic)

8 scoring algorithms (PageRank, EigenTrust, PPR, HITS, SybilRank, Spectral, AbsorbingWalks, Ensemble). H6 ensemble hit 94% sybil / 100% eclipse detection.

Got to: locked, tested baseline; Phase 8 now validating on mixed synthetic+real data (target ≥0.85). Most deployment-ready of the four.

Identity & Attestation BELOW TARGET

0.512
composite (target 0.80) · +21% from 0.423

Locked params v1 (pohCapGhost 0.35, taAggregateWeight 0.30, tierBoundarySignal 400, taCascadeDepth 3). Tier system Unverified→T2→T1; Shyft mainnet topology integrated. 816 experiments.

Got to: mechanics proven + params locked; gap is trust-anchor expansion (21 → 50+) and real-data validation.

x402 Trust Channels DESIGN · LEGAL-GATED

1.0
research composite · 71 experiments · CONTINUE

80-section strategic design + 5 product templates (API, agent-to-agent, data marketplace, escrow, subscription). Attack ROI shown negative (−59% to −100%).

Got to: mature design; two explicit blockers — FM-1 sybil-TA networks + FM-2 regulatory (18 USC §1960), $200K legal opinion pending. Highest strategic value, not yet buildable.

Lottery / Incentives DESIGN

1.0
research composite · 9 experiments

Parameter design complete: LP-vault sizing, prize splits, ticket pricing, referral economics, player-archetype mix.

Got to: parametric design; secondary to RMT/Identity/x402 — integrates after the core trust stack lands.
04

Every visual we built — linked

The auto-generated research dashboards and architecture explainers, all reachable from here. (Research-iteration dashboards are summary snapshots from the live research loop.)

🧩 RMT System Schematic (S33)
Scoring pipeline, subsystem map, on/off-chain boundary.
rmt · oracle · architecture
📊 RMT Reputation — Research Summary
Auto-generated dashboard: the reputation research loop.
rmt · research · auto-gen
🪪 Identity & Attestation — Summary
Identity track research dashboard (params, tiers, experiments).
identity · attestation · auto-gen
🔗 x402 Trust Channels — Summary
Payment/credit channel research dashboard.
x402 · payments · auto-gen
🎲 Lottery / Incentives — Summary
Incentive-mechanism research dashboard.
lottery · incentives · auto-gen
📈 RMT Reputation — Iteration 8
Latest reputation research iteration snapshot.
rmt · research · latest-iter
🏛️ Antilles Trust Framework
Generalized 5-layer trust/identity/attestation architecture.
trust · identity · architecture
🗺️ Identity-Trust Deployment Roadmap
6-phase converged deployment roadmap.
deployment · roadmap
🎯 Stable Deploy — CTO Tactical Scope
What's built vs missing for the Stable testnet deploy.
deployment · status
Source provenance. Mechanism verified against antilles-v2 @ main (RMT layer = 33 audited files), 2026-06-24: ShyftGatedResolver.sol:158 (trust-anchor) · :173 (trust-channel) · :184 (recordCitation) · CitationCounters.sol:28 · ReputationEngine.sol:196→199 (getReputation→getScore) · PageRankOracle.sol:74 (submitScores) / :155 (getCompositeScore). Off-chain pipeline in oracle/src/.
Research figures. From the forge research tracks (rmt-reputation, identity-attestation, x402-trust-channels, lottery) — composites are research-eval scores, not on-chain guarantees; treat as "where the research got to," not deployment SLAs.
Boundary. Contracts stay simple & audited (on-chain); the scoring intelligence (PageRank + sybil) is off-chain and swappable — this is the S33 design choice.
Next. Attestation-fee economics — Shyft-token vs USDT fee split on attestation — detailed next against test/27_test_attestationFee.js, main branch only.