Commit Graph

14256 Commits

Author SHA1 Message Date
Nicholas Dudfield
8f6c14f856 Bound recoverable validator manifests 2026-08-31 16:42:54 +07:00
Nicholas Dudfield
ba0263b3b8 fix(manifest): charge the cold-drop the job used to charge
The early naked-unknown drop concluded what checkValidation used to conclude
after verifying a signature, but returned without any resource charge. Since
a cold probe now holds the connection's one in-flight token, that free path
is the one every further unknown naked validation on the connection takes,
so an unresolvable signing key could be replayed at no cost.

Charge feeUselessData at the drop, matching the job's charge for the same
conclusion. Also correct the duplicate-repair comment: the repair is a cache
lookup that no-ops unless some connection's probe already resolved the key,
not a check that the first probe resolved.
2026-08-31 15:43:31 +07:00
Nicholas Dudfield
c129d456de fix(manifest): bound cold lookup to one in-flight job
A cache-miss naked validation queued a probe job per hash, so a burst of
unknown signers bypassed the connection's one-in-flight token. Share that
token with the cold lookup, and do not probe while a pending candidate
occupies the slot.
2026-08-31 15:40:02 +07:00
Nicholas Dudfield
1ffd07b15e fix(manifest): probe validated ledger and delay hash occupancy
Cold lookup treated the open ledger as ledger-authoritative, so an
unvalidated SetManifest could stick in ManifestCache. Unknown naked
validations also occupied the validation hash before the probe,
poisoning a later verified pair.

Probe only the validated ledger and refuse open views. Restore
drop-before-claim when no probe will run. Give cold probes their own
HashRouter domain until the signer resolves. Comments match the
settled split: paired TMManifests for live rotation, standalone
revocations, paid SetManifest for durability only.
2026-08-31 15:37:00 +07:00
Nicholas Dudfield
f6c4621723 fix(manifest): include cold-lookup ledger definition 2026-08-31 15:16:52 +07:00
Nicholas Dudfield
2c7794c0fa merge: combine manifest durability and live propagation
# Conflicts:
#	src/xrpld/app/misc/Manifest.h
#	src/xrpld/app/misc/detail/Manifest.cpp
#	src/xrpld/overlay/detail/OverlayImpl.cpp
2026-08-31 15:15:10 +07:00
Nicholas Dudfield
bfefe4eb5e docs(manifest): describe thin signing index 2026-08-31 14:39:37 +07:00
Nicholas Dudfield
5979bfa2d4 fix(manifest): gossip authority before durability 2026-08-31 14:23:13 +07:00
Nicholas Dudfield
ce32b75db1 fix(manifest): reject fee variants before crypto 2026-08-31 13:29:14 +07:00
Nicholas Dudfield
619d6a16ff fix(manifest): obey ordinary fee escalation 2026-08-31 13:15:03 +07:00
Nicholas Dudfield
dc4fd50b54 fix(manifest): price canonical updates by ruleset 2026-08-31 12:55:29 +07:00
Nicholas Dudfield
0d75cfda70 fix(manifest): pin canonical unsigned fee 2026-08-31 12:45:10 +07:00
Nicholas Dudfield
6bf86851d6 fix(manifest): reject envelope extensions before crypto 2026-08-31 12:35:37 +07:00
Nicholas Dudfield
0f6749f53b fix(manifest): canonicalize complete unsigned envelope 2026-08-31 12:28:37 +07:00
Nicholas Dudfield
e60e09898a feat(manifest): canonicalize owned ledger storage 2026-08-31 12:14:44 +07:00
Nicholas Dudfield
36e5a1a121 docs(manifest): replay comment describes the exact canonical fee, not a band 2026-08-31 11:40:11 +07:00
Nicholas Dudfield
149bcf0193 feat(manifest): separate registration and update authority 2026-08-31 11:35:07 +07:00
Nicholas Dudfield
cfe4ce176e test: pin revocation response refusals 2026-08-30 09:54:21 +07:00
Nicholas Dudfield
824d516a89 fix: admit asserted revocation responses 2026-08-30 09:42:09 +07:00
Nicholas Dudfield
d6503a39ec feat: answer stale manifest singletons with the retained state
The original design sketch had honest nodes informing senders of fresher
manifests upon receipt of stale; it was parked as an amplification
surface pending an explicit bounded one-shot model. The repair ledger is
that model, so the lane lands as one more caller of sendManifestRepair
at the singleton global-sequence guard, reusing the snapshot the guard
already fetches.

Strictly-stale only: equal-sequence arrivals are ordinary always-send
traffic and draw nothing. The trigger needs no signature verification;
safety comes from bounds, not authentication - answers are limited to
masters this node retains, once per sequence per connection via the
shared ledger, and monotone sequences make correction exchanges
converge in one round trip. A retained revocation is itself the answer:
a stale normal manifest for a revoked master draws the tombstone, giving
revocations a demand-driven re-supply path to any peer that demonstrably
still uses the dead identity. Retention, not listing, qualifies a master
for an answer.

Deferred: the legacy batch lane does not correct (singletons only); no
live-scenario control yet (the mixed old-binary connect dump is the
natural trigger); design-doc sync for the reopened corrections language
left to the integration pass.
2026-08-30 08:27:57 +07:00
Nicholas Dudfield
54b59d8017 test(testnet): share log waits and simplify revocation overlay 2026-08-29 19:19:18 +07:00
Nicholas Dudfield
39629c4cf5 test(testnet): exercise manifest lifecycle live across mixed binaries
Three scenarios on the new scripts primitives: mid-run rotation to
sequence 2 through an old relay (supersede, admission, repair re-arm);
a config-injected revocation seeded by the old node with the remaining
four of five validators holding exact quorum; and wallet-wipe recovery
through an old upstream with resumed paired forwarding. Waits are
event-driven on terminal log facts with heartbeat logging.
2026-08-29 19:09:37 +07:00
Nicholas Dudfield
c20e8ac2ba fix: repair duplicate naked validation senders 2026-08-29 17:17:52 +07:00
Nicholas Dudfield
5df7111214 fix: evict repair ledger only when inserting a new master 2026-08-29 17:04:43 +07:00
Nicholas Dudfield
eb34f94860 feat: repair naked validation senders with cached manifests
A naked validation that authenticates against the current cached manifest
for its signing key is an implicit request for that manifest. The recipient
returns one singleton TMManifests on the same connection, bounded by a
strand-owned per-connection repair ledger (256 rows, cleared on overflow,
at most one singleton per master/sequence). Forged, malformed, unknown, and
paired traffic draws no response. A validation with no available manifest
is still sent naked.
2026-08-29 16:59:08 +07:00
Nicholas Dudfield
cd782a3ae2 docs: pin manifest verification ownership 2026-08-29 15:39:37 +07:00
Nicholas Dudfield
4f871f8b26 fix: make manifest completion release-safe 2026-08-29 15:36:54 +07:00
Nicholas Dudfield
e215a5d10d fix: bound manifest pair verification per peer 2026-08-29 15:28:40 +07:00
Nicholas Dudfield
ea7d7afc99 feat: relay validator manifests with validations 2026-08-29 15:07:59 +07:00
Niq Dudfield
c6d5b345eb fix: subscription webhook delivery stalling on HTTP errors (#677) 2026-08-27 12:13:21 +10:00
Richard Holland
2234b8fc26 ensure onchain-manifests are used for untrusted validations 2026-08-27 11:41:02 +10:00
Richard Holland
e609d33495 more test coverage 2026-08-26 10:38:30 +10:00
Richard Holland
ce8a88db79 fix failing test 2026-08-25 13:34:35 +10:00
Richard Holland
87ae5dd28c fix makeSetManifestTx 2026-08-25 12:19:08 +10:00
Richard Holland
cbe0ac7240 crashbugs 2026-08-25 11:49:18 +10:00
Richard Holland
2d34b08ed4 more missing 2026-08-24 14:41:40 +10:00
Richard Holland
032bd6346d hook codes 2026-08-24 11:44:46 +10:00
Richard Holland
6eb99f8a03 clang 2026-08-24 11:23:52 +10:00
Richard Holland
a30ca9c5b4 compiling 2026-08-24 10:57:44 +10:00
Richard Holland
97140ce8cf add ephemeral key weak tsh, tests 2026-08-24 10:24:55 +10:00
Richard Holland
824bb00d8f constrain manifest gossiped and auto submit new manifests on-chain 2026-08-23 13:34:46 +10:00
Richard Holland
2ea4cf0bce claude patch 2026-08-23 12:22:33 +10:00
Richard Holland
34a4d3dd85 more 2026-08-22 16:48:06 +10:00
Richard Holland
abc4fbd204 compiling 2026-08-22 16:21:12 +10:00
Richard Holland
bf378592c9 more ocm 2026-08-10 14:18:31 +10:00
Richard Holland
d85bbe1a39 most of on-chain manifests, yet to compile or test 2026-08-10 12:33:05 +10:00
Richard Holland
bb244ef772 put release builds into a candidate folder to prevent auto-update scripts running before smoke tests (#761) 2026.6.21-release+3350 2026-06-21 12:12:43 +10:00
Richard Holland
639ea34377 Fixhookmap (#756) 2026-06-16 17:06:25 +10:00
tequ
089c0dc3fe Fix ammLPHolds logic to include escrowed cases (#757) 2026-06-16 15:26:29 +10:00
tequ
78167e09c0 change sfHookOn of ltHookDefinition to soeOptional for HookOnV2 (#755) 2026-06-16 13:58:53 +10:00