Jitter Protocol reached a release posture with no open implementation findings

The final assessment reconciled 65 canonical findings across core markets, arithmetic, rewards, adapters, registry, lifecycle, and deployment posture. Thirty-eight findings were resolved or removed, 25 remain acknowledged or conditional, two experimental surfaces are excluded from deployment, and none remains open.

Reviewers
Zzyzx Security Review
Commit
64a477bf9ae945ff585f9dd70231945a9a741ea9 plus reviewed working-tree changes
Language
Move (Sui)
In scope
  • Jitter core market state, PT and YT issuance, positions, and liquidity
  • AMM arithmetic, exact-in and exact-out solvers, and maturity
  • Rewards, oracle aggregation, adapters, registry, and view packages
  • Experimental Jitter orderbook deployment boundary

Complete evidence, severity rationale, and remediation record.

01

Manual Security Audit

sha256 03678e5aea79dae4d3c993c0b40a92c234da7d8df6d41a4f9a741873f1ebcdcf

Download PDF · 12pp

02

Formal Verification Report

sha256 00ae8f553a8dc93dff65174bd52f10f83d9cd5b9ea930c125ac65eef4ac75297

Download PDF · 9pp

Findings

High4 Medium28 Low26 Info7
  1. ORC-01 The demo adapter accepts a caller-supplied SY index High Mitigated
  2. ORC-02 Adapter vaults lacked canonical market and underlying binding High Fixed
  3. ORC-03 Oracle source identity could be forged High Fixed
  4. ORC-04 Markets did not bind one canonical price aggregator Medium Fixed
  5. ORC-05 Outlier filtering cannot independently corroborate one source Medium Acknowledged
  6. ORC-06 Adapter freshness could use read time instead of source update time Medium Acknowledged
  7. ORC-07 Upstream package upgrades can block adapter liveness Medium Acknowledged
  8. ORC-08 Scallop withdrawal queues retain lifecycle and storage exposure Medium Acknowledged
  9. ORC-09 Current and NAVI payout equality is not proven Medium Acknowledged
  10. ORC-10 Current rates narrow into a u64 domain Low Acknowledged
  11. ORC-11 The first Scallop withdrawal window starts with zero quota Low Acknowledged
  12. ORC-12 Scallop accrual and version checks add liveness dependencies Low Acknowledged
  13. ORC-13 NAVI AccountCap and residual balance lifecycle is incomplete Low Acknowledged
  14. ORC-14 The oracle package originally lacked version and pause enforcement Low Fixed
  15. ORC-15 Suilend conversion may read a pre-compound ratio Info Acknowledged
  16. JIT-01 The PY-index arithmetic domain guard is not enforced Medium Acknowledged
  17. JIT-02 Rewarder composition could create topology drift Medium Fixed
  18. JIT-03 Maturity settlement depends on an authorized live keeper Medium Acknowledged
  19. JIT-04 Disabling a RewardDistributor could freeze exits Medium Fixed
  20. JIT-05 Small liquidity removal could round PT output to zero Medium Fixed
  21. JIT-06 Market creation could accept pre-issued PT or YT supply Medium Fixed
  22. JIT-07 SY deregistration could strand an active market Medium Fixed
  23. JIT-08 Underlying type was not fully enforced across mint and burn Medium Fixed
  24. JIT-09 Fee recipient and treasury accounting could diverge Medium Fixed
  25. JIT-10 Global pause lookup is linear in configured domains Medium Acknowledged
  26. JIT-11 An external YT bridge could bypass canonical reward gates Low Fixed
  27. JIT-12 A position could be destroyed with accrued interest Low Fixed
  28. JIT-13 A zero deadline permits a PTB-level opt-out Low Acknowledged
  29. JIT-14 Post-swap events could be recomputed from different state Low Fixed
  30. JIT-15 RouterMintEvent was dead or inconsistently emitted Low Fixed
  31. JIT-16 Ownerless minimum LP complicated final withdrawal Medium Fixed
  32. EXT-01 Point accounting could run without a canonical market reward gate Medium Fixed
  33. EXT-02 Global point rewarders could contaminate unrelated markets Medium Fixed
  34. EXT-03 Rewarder re-registration could backpay historical exposure Medium Fixed
  35. EXT-04 LP referral state lacked exact policy and project binding Medium Fixed
  36. EXT-05 LP point claims were not reliably reachable Medium Fixed
  37. EXT-06 Pool reward scope used ambiguous zero-address semantics Low Acknowledged
  38. EXT-07 Reward withdrawal authority lacks a narrow governance lane Low Acknowledged
  39. EXT-08 Reward accounting can retain terminal fractional dust Low Acknowledged
  40. EXT-09 PointCap was not bound to the canonical Scoreboard Low Fixed
  41. EXT-10 PointConfig catch-up can require many versions Low Acknowledged
  42. EXT-11 LP multiplier updates could skip an uncheckpointed interval Low Fixed
  43. AUX-02 Reward pause could freeze order escrow exits Medium Fixed
  44. AUX-03 The experimental orderbook retained unbounded traversal risk Medium Mitigated
  45. AUX-06 Orderbook reward exposure was not a reliable canonical source Medium Fixed
  46. AUX-10 The experimental orderbook could strand terminal fee dust Low Fixed
  47. MATH-01 SY-to-PT quote and execution could disagree at a curve boundary Medium Fixed
  48. MATH-02 Exact-out search could miss feasible depth after an invalid probe Low Fixed
  49. MATH-03 The exp2 implementation consumed excessive gas Low Acknowledged
  50. MATH-04 last_ln used a sentinel that overlapped a valid value Low Fixed
  51. MATH-05 Aggregate multiplication can exceed the intended domain Low Acknowledged
  52. MATH-06 Unused public math helpers enlarged the audited ABI Info Fixed
  53. MATH-07 Signed exponential inputs require an explicit negative domain Info Acknowledged
  54. ADM-01 Registry design permits multiple instances and raw object IDs Low Acknowledged
  55. ADM-02 Zero-output checks had ambiguous zero-basis-point semantics Low Fixed
  56. ADM-03 AdminCap remains a broad trusted authority Info Acknowledged
  57. ADM-04 ACL events and role tombstones were incomplete Info Acknowledged
  58. ADM-05 Registry default state can outlive a delisted market Info Acknowledged
  59. VC-01 Root configuration did not validate its package version High Fixed
  60. VC-02 Deployment discovery could miss a nested package marker Medium Fixed
  61. VC-03 Position transfer-lock mutation lacked a root version gate Low Fixed
  62. VC-04 A paused adapter could create new custody state Medium Fixed
  63. VC-05 Package-registration resume was not idempotent Low Fixed
  64. VC-06 NAVI exposed an ungated public helper Info Fixed
  65. VC-07 A paused campaign could be re-enabled through recovery Low Fixed

Jitter Protocol combines principal and yield token issuance, an AMM, positions, liquidity, rewards, oracle aggregation, third-party adapters, registry discovery, lifecycle controls, and an experimental orderbook. The review followed value and authority through that entire graph, then separated production guarantees from deployment exclusions and operating assumptions.

The final manual assessment records 65 canonical findings: 38 resolved or architecture- eliminated, 25 acknowledged or conditional, two deployment-excluded, and zero open. No confirmed Critical or High attack chain was identified that lets an unprivileged user steal Jitter V1 core principal. The High experimental-orderbook finding is excluded from the V1 deployment graph.

Release posture

The reviewed tree becomes a release artifact only after a clean commit and dependency graph are frozen, acknowledged arithmetic and reward boundaries are recorded in the runbook, production adapters are signed off, excluded packages are removed, and the Move, formal, mutation, deployment, and operational suites pass from a clean checkout.

Canonical finding register

Oracle and adapters

ORC-01 High Mitigated

The demo adapter accepts a caller-supplied SY index

The demo package is excluded from production deployment and remains testnet-only.

ORC-02 High Fixed

Adapter vaults lacked canonical market and underlying binding

Requests, vaults, markets, SY registrations, and underlying types are now bound at both layers.

ORC-03 High Fixed

Oracle source identity could be forged

Registered source witnesses and exact aggregator-rule binding now authenticate the source.

ORC-04 Medium Fixed

Markets did not bind one canonical price aggregator

Execution now validates exact aggregator, market, freshness, and single-use price information.

ORC-05 Medium Acknowledged

Outlier filtering cannot independently corroborate one source

Source count, freshness, required-source, deviation monitoring, and emergency pause remain the controls.

ORC-06 Medium Acknowledged

Adapter freshness could use read time instead of source update time

Ember is not deployed. Activation requires authoritative upstream timestamps and production-ABI tests.

ORC-07 Medium Acknowledged

Upstream package upgrades can block adapter liveness

Upstream versions remain an operational dependency with monitoring and recovery runbooks.

ORC-08 Medium Acknowledged

Scallop withdrawal queues retain lifecycle and storage exposure

Owner cancellation, administrative resolution, linked storage, and queued-reserve accounting mitigate the risk.

ORC-09 Medium Acknowledged

Current and NAVI payout equality is not proven

Both adapters are excluded until actual payout equality is proven or settlement uses actual output with a user minimum.

ORC-10 Low Acknowledged

Current rates narrow into a u64 domain

Current is not deployed; production activation requires domain and overflow validation.

ORC-11 Low Acknowledged

The first Scallop withdrawal window starts with zero quota

The accepted keeper model requires an immediate refresh after vault creation and baseline monitoring.

ORC-12 Low Acknowledged

Scallop accrual and version checks add liveness dependencies

Accrual and upstream version availability remain monitored integration dependencies.

ORC-13 Low Acknowledged

NAVI AccountCap and residual balance lifecycle is incomplete

NAVI remains undeployed until capability, recovery, and migration semantics are complete.

ORC-14 Low Fixed

The oracle package originally lacked version and pause enforcement

Persistent oracle paths now enforce package registration, version, and pause checks.

ORC-15 Info Acknowledged

Suilend conversion may read a pre-compound ratio

Suilend remains undeployed until production compound and refresh semantics are validated.

Jitter core

JIT-01 Medium Acknowledged

The PY-index arithmetic domain guard is not enforced

Deployment is restricted to the tested domain with monitoring and an upgrade path until safe guard values are calibrated.

JIT-02 Medium Fixed

Rewarder composition could create topology drift

The architecture now binds one canonical distributor and validates market scope atomically.

JIT-03 Medium Acknowledged

Maturity settlement depends on an authorized live keeper

Keeper service levels, alerting, and settlement drills remain explicit operational requirements.

JIT-04 Medium Fixed

Disabling a RewardDistributor could freeze exits

Campaign close is separate from emergency pause, preserving liability-reducing exits.

JIT-05 Medium Fixed

Small liquidity removal could round PT output to zero

Execution uses the quoted candidate state and rejects zero-output removals.

JIT-06 Medium Fixed

Market creation could accept pre-issued PT or YT supply

Market creation now requires zero PT and YT TreasuryCap supply.

JIT-07 Medium Fixed

SY deregistration could strand an active market

Deregistration is rejected while a live market or liability references the SY registration.

JIT-08 Medium Fixed

Underlying type was not fully enforced across mint and burn

Exact underlying type binding now spans requests, vaults, and market state.

JIT-09 Medium Fixed

Fee recipient and treasury accounting could diverge

One on-chain treasury source now controls recipient and accounting state.

JIT-10 Medium Acknowledged

Global pause lookup is linear in configured domains

Bounded operational use and explicit unpause cleanup are accepted for the small configured set.

JIT-11 Low Fixed

An external YT bridge could bypass canonical reward gates

The bridge was removed; YT exposure changes stay on canonical gated position routes.

JIT-12 Low Fixed

A position could be destroyed with accrued interest

Destruction now requires PT, YT, LP, and accrued interest to be zero.

JIT-13 Low Acknowledged

A zero deadline permits a PTB-level opt-out

Zero remains an explicit integration choice; user-facing SDK routes must enforce nonzero deadlines.

JIT-14 Low Fixed

Post-swap events could be recomputed from different state

Events now emit values captured from the executed candidate state.

JIT-15 Low Fixed

RouterMintEvent was dead or inconsistently emitted

The unused event and its dead construction path were removed.

JIT-16 Medium Fixed

Ownerless minimum LP complicated final withdrawal

The revised lifecycle lets circulating LP reach zero and reserves drain safely.

Rewards and points

EXT-01 Medium Fixed

Point accounting could run without a canonical market reward gate

Point configuration and reward topology now attach to the canonical market and distributor gate.

EXT-02 Medium Fixed

Global point rewarders could contaminate unrelated markets

Market-scoped rewarder selection replaced the mutable global union.

EXT-03 Medium Fixed

Rewarder re-registration could backpay historical exposure

Registration generation and start-time baselines prevent historical backpay.

EXT-04 Medium Fixed

LP referral state lacked exact policy and project binding

Referral state now binds policy, project, position, owner, and registration generation.

EXT-05 Medium Fixed

LP point claims were not reliably reachable

Canonical permissionless checkpoint and claim routes preserve detached pending rewards.

EXT-06 Low Acknowledged

Pool reward scope used ambiguous zero-address semantics

The accepted architecture documents scope topology and pairs LP and pool checkpoint capabilities.

EXT-07 Low Acknowledged

Reward withdrawal authority lacks a narrow governance lane

Withdrawal remains an auditable ACL or multisig governance operation.

EXT-08 Low Acknowledged

Reward accounting can retain terminal fractional dust

Claimant-less sub-raw dust is accepted because principal is unaffected; closed-lot residuals are monitored.

EXT-09 Low Fixed

PointCap was not bound to the canonical Scoreboard

Canonical integrations use Project and Stamp witnesses and isolate manual issuance.

EXT-10 Low Acknowledged

PointConfig catch-up can require many versions

Permissionless bounded checkpoints mitigate the accepted catch-up requirement.

EXT-11 Low Fixed

LP multiplier updates could skip an uncheckpointed interval

Effective-time versioning settles old intervals under their prior configuration.

Policy and auxiliary packages

AUX-02 Medium Fixed

Reward pause could freeze order escrow exits

Normal campaign close is separate from emergency pause and preserves canonical exits.

AUX-03 Medium Mitigated

The experimental orderbook retained unbounded traversal risk

The package is excluded from V1 deployment and retains bounded keeper cleanup requirements.

AUX-06 Medium Fixed

Orderbook reward exposure was not a reliable canonical source

Orderbook exposure was removed from canonical rewards until a stable topology exists.

AUX-10 Low Fixed

The experimental orderbook could strand terminal fee dust

Cumulative fee accounting resolves the issue before any future deployment.

Math and solvers

MATH-01 Medium Fixed

SY-to-PT quote and execution could disagree at a curve boundary

Execution now consumes the exact candidate state returned by the solver.

MATH-02 Low Fixed

Exact-out search could miss feasible depth after an invalid probe

The solver recovers the last valid bracket and resumes maximality search.

MATH-03 Low Acknowledged

The exp2 implementation consumed excessive gas

The bounded implementation is optimized, with gas and dense-vector behavior retained as monitored limits.

MATH-04 Low Fixed

last_ln used a sentinel that overlapped a valid value

An explicit validity representation replaced the overlapping sentinel.

MATH-05 Low Acknowledged

Aggregate multiplication can exceed the intended domain

The extreme index frontier remains accepted until the guard is calibrated or the proof domain expands.

MATH-06 Info Fixed

Unused public math helpers enlarged the audited ABI

Unused public helpers were removed from the production surface.

MATH-07 Info Acknowledged

Signed exponential inputs require an explicit negative domain

The signed Q64 negative domain remains a documented boundary that must fail closed outside its range.

Administration and registry

ADM-01 Low Acknowledged

Registry design permits multiple instances and raw object IDs

Canonical discovery, exact IDs, and explicit multi-instance administration mitigate the accepted design.

ADM-02 Low Fixed

Zero-output checks had ambiguous zero-basis-point semantics

Nonzero result validation is now independent from the configured basis-point value.

ADM-03 Info Acknowledged

AdminCap remains a broad trusted authority

AdminCap is an explicit multisig trust boundary; scoped ACL operations are preferred.

ADM-04 Info Acknowledged

ACL events and role tombstones were incomplete

Lifecycle events and generation controls harden the accepted governance boundary.

ADM-05 Info Acknowledged

Registry default state can outlive a delisted market

SDK and indexer revalidation plus lifecycle runbooks control the discovery-layer risk.

Version control

VC-01 High Fixed

Root configuration did not validate its package version

Governance and downstream checks now assert the root marker and allowed version.

VC-02 Medium Fixed

Deployment discovery could miss a nested package marker

Deployment manifests now use recursive discovery with regression coverage.

VC-03 Low Fixed

Position transfer-lock mutation lacked a root version gate

Persistent position mutation now requires GlobalConfig and core package version checks.

VC-04 Medium Fixed

A paused adapter could create new custody state

Creation requires strict-active status; version-only paths are limited to liability reduction.

VC-05 Low Fixed

Package-registration resume was not idempotent

Same-version registration is idempotent and version changes require explicit approval.

VC-06 Info Fixed

NAVI exposed an ungated public helper

The helper is private and only the gated ticket route remains public.

VC-07 Low Fixed

A paused campaign could be re-enabled through recovery

Recovery may disable a campaign, but enabling now requires strict package-active status.

Formal verification evidence

The formal program passed 191 of 191 shared-suite proofs, mapped all 65 Jitter findings, and detected all 14 deliberate mutations. Direct proofs and models cover solver boundaries, market-ledger conservation, calendar reward-lot conservation, registry behavior, adapter conversion direction, reserve-fee remainders, and final user-fund preservation.

Ten symbolic obligations remain at the proof frontier: indexed-quote zero-edge bodies, production logarithms, power-of-two log specifications, production natural logarithm behavior, and full-domain sqrt_u256 convergence. These are coverage gaps rather than confirmed vulnerabilities; they become release blockers if production parameters can reach those domains.

Formal verification does not prove third-party adapter semantics, oracle economic truth, honest administration or keeper operation, arbitrary transaction gas feasibility, RPC availability, frontend correctness, wallet behavior, key custody, or specification completeness.

The original deliverables and publication history are available in the public report repository.