Jun 16, 12-1 AM (11)
Jun 16, 1-2 AM (5)
Jun 16, 2-3 AM (1)
Jun 16, 3-4 AM (9)
Jun 16, 4-5 AM (6)
Jun 16, 5-6 AM (1)
Jun 16, 6-7 AM (16)
Jun 16, 7-8 AM (81)
Jun 16, 8-9 AM (18)
Jun 16, 9-10 AM (28)
Jun 16, 10-11 AM (22)
Jun 16, 11-12 PM (31)
Jun 16, 12-1 PM (37)
Jun 16, 1-2 PM (49)
Jun 16, 2-3 PM (34)
Jun 16, 3-4 PM (28)
Jun 16, 4-5 PM (37)
Jun 16, 5-6 PM (17)
Jun 16, 6-7 PM (26)
Jun 16, 7-8 PM (9)
Jun 16, 8-9 PM (11)
Jun 16, 9-10 PM (4)
Jun 16, 10-11 PM (31)
Jun 16, 11-12 AM (9)
Jun 17, 12-1 AM (8)
Jun 17, 1-2 AM (8)
Jun 17, 2-3 AM (11)
Jun 17, 3-4 AM (4)
Jun 17, 4-5 AM (1)
Jun 17, 5-6 AM (6)
Jun 17, 6-7 AM (99)
Jun 17, 7-8 AM (33)
Jun 17, 8-9 AM (23)
Jun 17, 9-10 AM (56)
Jun 17, 10-11 AM (18)
Jun 17, 11-12 PM (19)
Jun 17, 12-1 PM (57)
Jun 17, 1-2 PM (28)
Jun 17, 2-3 PM (37)
Jun 17, 3-4 PM (26)
Jun 17, 4-5 PM (19)
Jun 17, 5-6 PM (16)
Jun 17, 6-7 PM (10)
Jun 17, 7-8 PM (14)
Jun 17, 8-9 PM (12)
Jun 17, 9-10 PM (37)
Jun 17, 10-11 PM (29)
Jun 17, 11-12 AM (14)
Jun 18, 12-1 AM (12)
Jun 18, 1-2 AM (8)
Jun 18, 2-3 AM (5)
Jun 18, 3-4 AM (11)
Jun 18, 4-5 AM (11)
Jun 18, 5-6 AM (11)
Jun 18, 6-7 AM (10)
Jun 18, 7-8 AM (20)
Jun 18, 8-9 AM (83)
Jun 18, 9-10 AM (45)
Jun 18, 10-11 AM (51)
Jun 18, 11-12 PM (23)
Jun 18, 12-1 PM (67)
Jun 18, 1-2 PM (14)
Jun 18, 2-3 PM (53)
Jun 18, 3-4 PM (44)
Jun 18, 4-5 PM (64)
Jun 18, 5-6 PM (24)
Jun 18, 6-7 PM (21)
Jun 18, 7-8 PM (13)
Jun 18, 8-9 PM (17)
Jun 18, 9-10 PM (23)
Jun 18, 10-11 PM (30)
Jun 18, 11-12 AM (26)
Jun 19, 12-1 AM (13)
Jun 19, 1-2 AM (9)
Jun 19, 2-3 AM (5)
Jun 19, 3-4 AM (2)
Jun 19, 4-5 AM (11)
Jun 19, 5-6 AM (4)
Jun 19, 6-7 AM (92)
Jun 19, 7-8 AM (18)
Jun 19, 8-9 AM (38)
Jun 19, 9-10 AM (39)
Jun 19, 10-11 AM (27)
Jun 19, 11-12 PM (30)
Jun 19, 12-1 PM (53)
Jun 19, 1-2 PM (66)
Jun 19, 2-3 PM (32)
Jun 19, 3-4 PM (61)
Jun 19, 4-5 PM (9)
Jun 19, 5-6 PM (4)
Jun 19, 6-7 PM (17)
Jun 19, 7-8 PM (16)
Jun 19, 8-9 PM (11)
Jun 19, 9-10 PM (45)
Jun 19, 10-11 PM (30)
Jun 19, 11-12 AM (8)
Jun 20, 12-1 AM (4)
Jun 20, 1-2 AM (0)
Jun 20, 2-3 AM (4)
Jun 20, 3-4 AM (1)
Jun 20, 4-5 AM (8)
Jun 20, 5-6 AM (6)
Jun 20, 6-7 AM (6)
Jun 20, 7-8 AM (6)
Jun 20, 8-9 AM (2)
Jun 20, 9-10 AM (2)
Jun 20, 10-11 AM (0)
Jun 20, 11-12 PM (2)
Jun 20, 12-1 PM (7)
Jun 20, 1-2 PM (1)
Jun 20, 2-3 PM (9)
Jun 20, 3-4 PM (11)
Jun 20, 4-5 PM (1)
Jun 20, 5-6 PM (0)
Jun 20, 6-7 PM (2)
Jun 20, 7-8 PM (8)
Jun 20, 8-9 PM (7)
Jun 20, 9-10 PM (0)
Jun 20, 10-11 PM (17)
Jun 20, 11-12 AM (5)
Jun 21, 12-1 AM (14)
Jun 21, 1-2 AM (0)
Jun 21, 2-3 AM (1)
Jun 21, 3-4 AM (0)
Jun 21, 4-5 AM (1)
Jun 21, 5-6 AM (0)
Jun 21, 6-7 AM (9)
Jun 21, 7-8 AM (1)
Jun 21, 8-9 AM (2)
Jun 21, 9-10 AM (2)
Jun 21, 10-11 AM (1)
Jun 21, 11-12 PM (2)
Jun 21, 12-1 PM (0)
Jun 21, 1-2 PM (17)
Jun 21, 2-3 PM (4)
Jun 21, 3-4 PM (10)
Jun 21, 4-5 PM (4)
Jun 21, 5-6 PM (8)
Jun 21, 6-7 PM (7)
Jun 21, 7-8 PM (19)
Jun 21, 8-9 PM (0)
Jun 21, 9-10 PM (1)
Jun 21, 10-11 PM (15)
Jun 21, 11-12 AM (15)
Jun 22, 12-1 AM (12)
Jun 22, 1-2 AM (6)
Jun 22, 2-3 AM (9)
Jun 22, 3-4 AM (4)
Jun 22, 4-5 AM (2)
Jun 22, 5-6 AM (29)
Jun 22, 6-7 AM (17)
Jun 22, 7-8 AM (49)
Jun 22, 8-9 AM (90)
Jun 22, 9-10 AM (53)
Jun 22, 10-11 AM (64)
Jun 22, 11-12 PM (74)
Jun 22, 12-1 PM (47)
Jun 22, 1-2 PM (55)
Jun 22, 2-3 PM (119)
Jun 22, 3-4 PM (46)
Jun 22, 4-5 PM (45)
Jun 22, 5-6 PM (29)
Jun 22, 6-7 PM (33)
Jun 22, 7-8 PM (13)
Jun 22, 8-9 PM (13)
Jun 22, 9-10 PM (11)
Jun 22, 10-11 PM (32)
Jun 22, 11-12 AM (36)
Jun 23, 12-1 AM (5)
3,557 commits this week
Jun 16, 2026
-
Jun 23, 2026
Add Evolution and Mesh dApp starter templates
Two runnable connect, balance, and send starters under examples/templates (evolution-vite-react, mesh-nextjs-template), one per SDK, that back the Build a dApp walkthrough. Both build with npm run build; the Mesh one needs a libsodium-wrappers-sumo override and a polyfill next.config to compile under the current Mesh release.
Give the Build a dApp module an end-to-end spine
Add a tool-agnostic Your first dApp walkthrough with even Evolution and Mesh tabs from scaffold to send, each backed by a runnable template, rework the scaffolding stub to point at the templates, and surface the walkthrough from the module overview.
Merge branch 'main' into update/main/scala3-library-3.8.4
:card_file_box: Update status summary [skip ci] [upptime]
:pencil: Update summary in README [skip ci] [upptime]
deploy: b566a87fd617c327998be2c0133a40e44b17b93e
Install and run the node.
Documentation for those running a node in the testnet, includes how to setup a stake pool. It uses the tagged prototype.
feat(midnight): Fixed the issue of dropping of events during fast sync because of small EventBus buffer
Signed-off-by: Akhil Repala <[email protected]>
Add Storage snapshot-policy variants for preview and preprod
mainnet keeps the Mithril snapshot policy (base default); the test networks override LedgerDB.Snapshots with an explicit options object: the per-network SnapshotInterval (preview 864, preprod 4320) plus the full set of snapshot options (SlotOffset 0, RateLimit 600, MinDelay 300, MaxDelay 600, NumOfDiskSnapshots 2). Closes the last parsed network-divergence gap.
Record that MaxKnownMajorProtocolVersion is a vestigial key
Confirmed against cardano-node: its parser (Cardano.Node.Configuration.POM) reads only LastKnownBlockVersion-Major/-Minor/-Alt and never MaxKnownMajorProtocolVersion (which appears in no node Haskell source). It is a dead key the node ignores, so cardano-config intentionally does not parse it.
Record that MaxKnownMajorProtocolVersion is a vestigial key
Confirmed against cardano-node: its parser (Cardano.Node.Configuration.POM) reads only LastKnownBlockVersion-Major/-Minor/-Alt and never MaxKnownMajorProtocolVersion (which appears in no node Haskell source). It is a dead key the node ignores, so cardano-config intentionally does not parse it.
Add Storage snapshot-policy variants for preview and preprod
mainnet keeps the Mithril snapshot policy (base default); the test networks override LedgerDB.Snapshots with an explicit options object: the per-network SnapshotInterval (preview 864, preprod 4320) plus the full set of snapshot options (SlotOffset 0, RateLimit 600, MinDelay 300, MaxDelay 600, NumOfDiskSnapshots 2). Closes the last parsed network-divergence gap.
Layer configuration sources with deep merge
- A section value may now be a list of paths/objects, deep-merged in order so a later entry overrides an earlier one (e.g. ["Network.variants/Network.relay.json"]); nested objects merge recursively. - The package's base default defaults/<Component>.json is always read as the bottom layer and the user's section layer is merged on top, so a config can name only a variant and still inherit the base defaults. - Move the opt-in variant files into defaults/<Component>.variants/. - Expose the data dir via Paths_cardano_config; add an example and a test asserting later-overrides-earlier.
Correct LedgerDB and mempool defaults
LedgerDB.Snapshots defaults to Mithril and LedgerDB.QueryBatchSize to 100000 (from ouroboros-consensus), so they are resolved rather than optional. The mempool timeouts have no node default (the node applies no timeout), so they stay optional and are intentionally absent here.
Commit per-component schemas and gate each against the codecs
Move the generated schema into schemas/ alongside one schema per component, and assert in the test-suite that every committed schema (whole + each component) matches the codecs, so none can drift. Add scripts/gen-schemas.sh to regenerate them.
Make every component f-parameterised and resolve to a complete config
Give Network, LocalConnections, Mempool and Testing the f parameter (as
Storage/Consensus/Protocol already had), so NodeConfiguration carries
Identity-wrapped components and is complete by construction. A field
becomes f a when it has an always-applied base default and stays Maybe
when 'unset' is a valid state. Each component gains a finalize that turns
the merged partial form into Identity (erroring, via requireField, if a
base default is missing); resolveConfiguration runs them and reports
failures as ConfigResolutionError. Add a resolveConfiguration test.
Also rename the envelope keys to { Version, Configuration } and fix the
README (any component can be a sub-file/list; HermodTracing should point
at a tracing file relative to the config).
Add cardano-config package
Introduce a new `cardano-config` library that provides a single entry-point for parsing the `cardano-node` configuration. It defines: - A CLI options parser based on `optparse-applicative` (`parseCliArgs`). - JSON/YAML parsing of the configuration files, derived from `autodocodec` codecs (`parseConfigurationFiles`). - `resolveConfiguration`, combining both into a `NodeConfiguration`. The configuration keys are grouped into components (Storage, Consensus, Mempool, Network, Protocol, Testing, Tracing). A bundled `cardano-config-schema` executable dumps the JSON Schema derived from the same codecs as the authoritative key listing. Register the package in `cabal.project`.
Document the RFC basis for HOST:PORT IPv6 parsing
Reference RFC 3986 (URI authority, bracketed IPv6) as the rationale and RFC 5952 for the address text form, and note that the RFC 5321 SMTP address-literal form is intentionally not accepted.
Add per-component default configuration files
cardano-config is the origin of one defaults file per component, applied as the base layer during resolution. Each component is ultimately owned by its implementing layer, which will adopt these and keep them aligned via CI. Values confirmed from ouroboros-network are included; the rest are left unset for the owning layer to fill (see defaults/README.md). Genesis files are intentionally not defaulted (network-specific).