Jun 03, 10-11 PM (31)
Jun 03, 11-12 AM (14)
Jun 04, 12-1 AM (12)
Jun 04, 1-2 AM (4)
Jun 04, 2-3 AM (1)
Jun 04, 3-4 AM (5)
Jun 04, 4-5 AM (1)
Jun 04, 5-6 AM (0)
Jun 04, 6-7 AM (14)
Jun 04, 7-8 AM (10)
Jun 04, 8-9 AM (11)
Jun 04, 9-10 AM (19)
Jun 04, 10-11 AM (11)
Jun 04, 11-12 PM (14)
Jun 04, 12-1 PM (53)
Jun 04, 1-2 PM (39)
Jun 04, 2-3 PM (60)
Jun 04, 3-4 PM (12)
Jun 04, 4-5 PM (4)
Jun 04, 5-6 PM (7)
Jun 04, 6-7 PM (46)
Jun 04, 7-8 PM (27)
Jun 04, 8-9 PM (4)
Jun 04, 9-10 PM (2)
Jun 04, 10-11 PM (24)
Jun 04, 11-12 AM (7)
Jun 05, 12-1 AM (6)
Jun 05, 1-2 AM (8)
Jun 05, 2-3 AM (1)
Jun 05, 3-4 AM (1)
Jun 05, 4-5 AM (1)
Jun 05, 5-6 AM (5)
Jun 05, 6-7 AM (9)
Jun 05, 7-8 AM (12)
Jun 05, 8-9 AM (8)
Jun 05, 9-10 AM (11)
Jun 05, 10-11 AM (12)
Jun 05, 11-12 PM (8)
Jun 05, 12-1 PM (52)
Jun 05, 1-2 PM (61)
Jun 05, 2-3 PM (26)
Jun 05, 3-4 PM (24)
Jun 05, 4-5 PM (17)
Jun 05, 5-6 PM (7)
Jun 05, 6-7 PM (14)
Jun 05, 7-8 PM (12)
Jun 05, 8-9 PM (6)
Jun 05, 9-10 PM (2)
Jun 05, 10-11 PM (20)
Jun 05, 11-12 AM (9)
Jun 06, 12-1 AM (6)
Jun 06, 1-2 AM (0)
Jun 06, 2-3 AM (3)
Jun 06, 3-4 AM (4)
Jun 06, 4-5 AM (0)
Jun 06, 5-6 AM (24)
Jun 06, 6-7 AM (1)
Jun 06, 7-8 AM (2)
Jun 06, 8-9 AM (3)
Jun 06, 9-10 AM (0)
Jun 06, 10-11 AM (3)
Jun 06, 11-12 PM (6)
Jun 06, 12-1 PM (2)
Jun 06, 1-2 PM (2)
Jun 06, 2-3 PM (2)
Jun 06, 3-4 PM (18)
Jun 06, 4-5 PM (1)
Jun 06, 5-6 PM (6)
Jun 06, 6-7 PM (0)
Jun 06, 7-8 PM (6)
Jun 06, 8-9 PM (0)
Jun 06, 9-10 PM (1)
Jun 06, 10-11 PM (27)
Jun 06, 11-12 AM (9)
Jun 07, 12-1 AM (14)
Jun 07, 1-2 AM (2)
Jun 07, 2-3 AM (0)
Jun 07, 3-4 AM (0)
Jun 07, 4-5 AM (1)
Jun 07, 5-6 AM (1)
Jun 07, 6-7 AM (3)
Jun 07, 7-8 AM (0)
Jun 07, 8-9 AM (0)
Jun 07, 9-10 AM (1)
Jun 07, 10-11 AM (2)
Jun 07, 11-12 PM (2)
Jun 07, 12-1 PM (5)
Jun 07, 1-2 PM (35)
Jun 07, 2-3 PM (2)
Jun 07, 3-4 PM (4)
Jun 07, 4-5 PM (2)
Jun 07, 5-6 PM (4)
Jun 07, 6-7 PM (0)
Jun 07, 7-8 PM (0)
Jun 07, 8-9 PM (17)
Jun 07, 9-10 PM (1)
Jun 07, 10-11 PM (21)
Jun 07, 11-12 AM (9)
Jun 08, 12-1 AM (9)
Jun 08, 1-2 AM (5)
Jun 08, 2-3 AM (3)
Jun 08, 3-4 AM (4)
Jun 08, 4-5 AM (2)
Jun 08, 5-6 AM (9)
Jun 08, 6-7 AM (5)
Jun 08, 7-8 AM (25)
Jun 08, 8-9 AM (36)
Jun 08, 9-10 AM (40)
Jun 08, 10-11 AM (24)
Jun 08, 11-12 PM (22)
Jun 08, 12-1 PM (40)
Jun 08, 1-2 PM (48)
Jun 08, 2-3 PM (33)
Jun 08, 3-4 PM (27)
Jun 08, 4-5 PM (12)
Jun 08, 5-6 PM (23)
Jun 08, 6-7 PM (14)
Jun 08, 7-8 PM (3)
Jun 08, 8-9 PM (6)
Jun 08, 9-10 PM (19)
Jun 08, 10-11 PM (29)
Jun 08, 11-12 AM (8)
Jun 09, 12-1 AM (5)
Jun 09, 1-2 AM (3)
Jun 09, 2-3 AM (1)
Jun 09, 3-4 AM (3)
Jun 09, 4-5 AM (26)
Jun 09, 5-6 AM (5)
Jun 09, 6-7 AM (23)
Jun 09, 7-8 AM (50)
Jun 09, 8-9 AM (35)
Jun 09, 9-10 AM (45)
Jun 09, 10-11 AM (51)
Jun 09, 11-12 PM (46)
Jun 09, 12-1 PM (86)
Jun 09, 1-2 PM (84)
Jun 09, 2-3 PM (36)
Jun 09, 3-4 PM (38)
Jun 09, 4-5 PM (16)
Jun 09, 5-6 PM (18)
Jun 09, 6-7 PM (18)
Jun 09, 7-8 PM (19)
Jun 09, 8-9 PM (16)
Jun 09, 9-10 PM (16)
Jun 09, 10-11 PM (28)
Jun 09, 11-12 AM (10)
Jun 10, 12-1 AM (11)
Jun 10, 1-2 AM (16)
Jun 10, 2-3 AM (11)
Jun 10, 3-4 AM (19)
Jun 10, 4-5 AM (5)
Jun 10, 5-6 AM (2)
Jun 10, 6-7 AM (46)
Jun 10, 7-8 AM (82)
Jun 10, 8-9 AM (18)
Jun 10, 9-10 AM (59)
Jun 10, 10-11 AM (46)
Jun 10, 11-12 PM (134)
Jun 10, 12-1 PM (48)
Jun 10, 1-2 PM (33)
Jun 10, 2-3 PM (31)
Jun 10, 3-4 PM (25)
Jun 10, 4-5 PM (33)
Jun 10, 5-6 PM (10)
Jun 10, 6-7 PM (12)
Jun 10, 7-8 PM (25)
Jun 10, 8-9 PM (8)
Jun 10, 9-10 PM (9)
Jun 10, 10-11 PM (0)
2,814 commits this week
Jun 03, 2026
-
Jun 10, 2026
Deploying to gh-pages from @ IntersectMBO/plutus@252301cbb76fab8b764f26338e9c0682275b05a4 🚀
Merge pull request #973 from Plutonomicon/koz/972
Optimize codegen to be two linear passes
feat(leios): enforce pipeline timing windows and unify the vote window
The pipeline framework tracked stages but most of PipelineTiming drove no behavior: stageFor ran only on the certified path, handleEbQuorum honored any certificate regardless of timing, and the pipeline's VoteWindowSlots had no relationship to VoteManager's vote-acceptance window. - Enforce the certification deadline: a certificate arriving at or past CertifyByDeadlineSlots is rejected (counted under certs_rejected_total), leaving the EB tracked but never certified, so it cannot become eligible. - Surface the uncertified stages: updateGaugesLocked now derives a per-EB stage gauge via stageFor with each EB's real certified flag (exercising the uncertified branch in production), plus a read-only StageOf seam. - Unify the vote window: VoteManager's vote-acceptance past bound is now the pipeline's VoteWindowSlots, passed through VoteManagerConfig and sourced from the same leiosPipelineTiming() the pipeline uses, so the two components admit votes over the same window and cannot drift. Replaces the standalone slotWindowPastTolerance. - Remove the inert StageLengthSlots field. ARCHITECTURE.md updated; DATABASE.md unaffected (in-memory, metrics only). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Chris Guiney <[email protected]>
fix(leios): count EB equivocation per slot and couple observe window to vote tolerance
Two follow-ups from review of the pipeline timing change: - markEquivocationLocked incremented ebEquivocationTotal (and logged) once per EB added beyond the first, so a slot with N distinct EBs counted N-1 times despite the metric documenting "number of slots with equivocating endorser blocks". Track a per-instance equivocated flag so the counter and warn log fire exactly once per equivocating slot; every EB is still flagged for inclusion exclusion. Adds a regression test. - Define observeFutureToleranceSlots as the vote manager's slotWindowFutureTolerance instead of a duplicated literal 60, so the two Leios components admit endorser blocks over the same future window and cannot drift apart. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Chris Guiney <[email protected]>
fix(leios): reject out-of-window endorser block observations
A peer controls the slot on an endorser block it offers, which flows through storeLeiosEndorserBlock into PipelineManager.ObserveEndorserBlock. Because MayProduceEndorserBlock treats any existing instance for a slot as "already produced," a peer could pre-seed far-future slots and deny the legitimate local producer when those slots open. Bound the observation acceptance window: ignore observations for slots more than observeFutureToleranceSlots (60) ahead of the current/tip slot, or already older than InstanceTTLSlots. The future tolerance matches the vote manager's slotWindowFutureTolerance so the two Leios components admit endorser blocks over the same window, while still allowing clock-skew and diffusion slack for honest near-present blocks. The quorum path is unaffected: it is fed by the locally windowed vote manager, not raw peer input. Found by cubic and CodeRabbit on the pull request. Signed-off-by: Chris Guiney <[email protected]> Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
feat(leios): pipeline timing and stage management
Add a PipelineManager that orchestrates the CIP-0164 Linear Leios pipeline on top of the existing vote/certificate machinery. It tracks endorser blocks through produce/diffuse/vote/certify/eligible stages under provisional, off-chain timing windows, detects slot-level EB equivocation, flushes in-flight state at epoch boundaries and rollbacks, and exposes the producer- and inclusion-facing seams the forge loop will consume. Scope is framework + hook only: - The pipeline is decoupled from VoteManager; both observe endorser blocks independently and share only the leios.eb_quorum event. The certificate is captured verbatim, never rebuilt. - EB equivocation keys on slot (the endorser block carries no producer identity yet) and excludes all candidates for a slot from inclusion; this complements VoteManager's (slot, voter_id) vote equivocation. - Stage 3 tracks and exposes certified EBs eligible for ranking-block inclusion via EligibleCertifiedEbs/MarkEmbedded, but the actual RB embedding is left stubbed pending the ranking-block CDDL. - Timing windows live in one provisional PipelineTiming struct, overridable via WithLeiosPipelineTiming, rather than as protocol parameters while CIP-0164 is unstable. Window decisions are slot-driven via SlotProvider.CurrentOrTipSlot (the SlotClock is private to LedgerState), and epoch/rollback flushing runs off the EventBus, mirroring VoteManager. The manager is wired into the ouroboros component via a new LeiosPipelineHandler interface, notified from storeLeiosEndorserBlock after the vote handler, and started/stopped around VoteManager in node wiring (LIFO) since it consumes its output. All state is in-memory; DATABASE.md is unaffected. ARCHITECTURE.md documents the new component and event flow. Signed-off-by: Chris Guiney <[email protected]> Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
deploy: da6011f3af1fc37a17b46f66594d50ea643beb34
test(data-endpoints): reject lovelace currency in search transactions
fix(database): Made changes in GetStakeByPools where it joins account to utxo using both credential_tag and staking key. Also, updated utxorpc search address dedupe to include the stake credential tag in the dedupe key
Signed-off-by: Akhil Repala <[email protected]>
Stub out sim-rs/net-rs/shared-rs after move to leios-tools
These three Rust workspaces now live in their own repository, cardano-scaling/leios-tools, extracted with full git history. Replace each directory's contents with a short README pointing at the new home, and remove the now-orphaned build/CI that referenced the deleted source: - .github/workflows/sim-rs.yaml — built sim-rs (moved). - .github/workflows/conformance-linear.yaml — built sim-rs and ran the linear conformance check against sim-rs/parameters (moved). - .github/workflows/net-node-docker.yaml — built the net-node docker image from net-rs/ + shared-rs/ (moved; docker CI lives in leios-tools). - Dockerfile — drop the Rust build stage (rs-builder) and the `rs` target image that compiled sim-cli from sim-rs/. The Haskell `hs` image is unchanged. Stale prose/comment references remain in .dockerignore, topology-viewer/scripts/build-viewer-data.py, and a couple of config comments; left untouched here as they don't break the build. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Deploying to gh-pages from @ IntersectMBO/plutus@252301cbb76fab8b764f26338e9c0682275b05a4 🚀
fix(search-service): reject lovelace as currency symbol in /search/transactions
Merge pull request #342 from blockfrost/ci-binary-cache
ci: enable using the binary cache within test VM's
docs: repoint sim-rs links to the leios-tools repo
sim-rs/, net-rs/ and shared-rs/ now live in their own repository at cardano-scaling/leios-tools. Update the remaining monorepo docs that linked into sim-rs as a local path so they point at the new home: - Markdown links → https://github.com/cardano-scaling/leios-tools/tree/main/sim-rs (and /blob/main/... for specific files). - Embedded architecture diagrams → raw.githubusercontent.com/.../main/sim-rs/docs/... Docs that live under net-rs/, sim-rs/ and shared-rs/ are left out — they travel with their own repo. Prose mentions, git tags, output filenames, docker image names, and shell-command relative paths are intentionally left untouched (a URL can't be a symlink target or local build output). Logbook.md is a historical journal and is left as-is. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
fix(database): Addressed all the missing credential tag in account stake hisotry models and modifed the address_tarnsaction to include tag with stake hash. Also, I have included pool reward accounts with tag
Signed-off-by: Akhil Repala <[email protected]>
fix(database): Changed GetAccountsByCredential to lookup for (credential_tag, staking_key) key.
Signed-off-by: Akhil Repala <[email protected]>
fix(database): removed all the old hash compatibility wrappers
Signed-off-by: Akhil Repala <[email protected]>
fix(database): Fixed teh parseStakeAddress now preserves the credential tag from the parsed stake address: tag 0 for key credentials and tag 1 for script credentials.
Signed-off-by: Akhil Repala <[email protected]>
fix(database): Updated account history, delegation & registartion hisotry as well to include credential tag. Also, I have make sure to have existing history methods as compatibility wrapper same as like GetAccount. Uodated database overview as well.
Signed-off-by: Akhil Repala <[email protected]>
fix(database): Made changes to fix the batch account lookup to avoid large per-credential sql OR chains.Changed in postgres & mysql as well.
Signed-off-by: Akhil Repala <[email protected]>
fix(database): Changed SetAccount ot have credential tag
Signed-off-by: Akhil Repala <[email protected]>
fix(database): Fixed the bot comments
Signed-off-by: Akhil Repala <[email protected]>