cabal: cli+api srps for cardano-cli value-only tx build, debug, submit
Home /
IntersectMBO /
cardano-node
May 24, 5-6 PM (0)
May 24, 6-7 PM (0)
May 24, 7-8 PM (0)
May 24, 8-9 PM (0)
May 24, 9-10 PM (0)
May 24, 10-11 PM (0)
May 24, 11-12 AM (0)
May 25, 12-1 AM (0)
May 25, 1-2 AM (0)
May 25, 2-3 AM (0)
May 25, 3-4 AM (0)
May 25, 4-5 AM (0)
May 25, 5-6 AM (0)
May 25, 6-7 AM (0)
May 25, 7-8 AM (6)
May 25, 8-9 AM (0)
May 25, 9-10 AM (0)
May 25, 10-11 AM (6)
May 25, 11-12 PM (0)
May 25, 12-1 PM (0)
May 25, 1-2 PM (0)
May 25, 2-3 PM (0)
May 25, 3-4 PM (1)
May 25, 4-5 PM (1)
May 25, 5-6 PM (0)
May 25, 6-7 PM (0)
May 25, 7-8 PM (0)
May 25, 8-9 PM (0)
May 25, 9-10 PM (3)
May 25, 10-11 PM (0)
May 25, 11-12 AM (3)
May 26, 12-1 AM (3)
May 26, 1-2 AM (3)
May 26, 2-3 AM (0)
May 26, 3-4 AM (0)
May 26, 4-5 AM (0)
May 26, 5-6 AM (0)
May 26, 6-7 AM (4)
May 26, 7-8 AM (0)
May 26, 8-9 AM (0)
May 26, 9-10 AM (0)
May 26, 10-11 AM (0)
May 26, 11-12 PM (1)
May 26, 12-1 PM (1)
May 26, 1-2 PM (10)
May 26, 2-3 PM (0)
May 26, 3-4 PM (0)
May 26, 4-5 PM (16)
May 26, 5-6 PM (0)
May 26, 6-7 PM (0)
May 26, 7-8 PM (0)
May 26, 8-9 PM (0)
May 26, 9-10 PM (3)
May 26, 10-11 PM (3)
May 26, 11-12 AM (4)
May 27, 12-1 AM (4)
May 27, 1-2 AM (0)
May 27, 2-3 AM (2)
May 27, 3-4 AM (0)
May 27, 4-5 AM (0)
May 27, 5-6 AM (0)
May 27, 6-7 AM (1)
May 27, 7-8 AM (1)
May 27, 8-9 AM (3)
May 27, 9-10 AM (3)
May 27, 10-11 AM (2)
May 27, 11-12 PM (1)
May 27, 12-1 PM (0)
May 27, 1-2 PM (0)
May 27, 2-3 PM (2)
May 27, 3-4 PM (1)
May 27, 4-5 PM (1)
May 27, 5-6 PM (0)
May 27, 6-7 PM (0)
May 27, 7-8 PM (0)
May 27, 8-9 PM (1)
May 27, 9-10 PM (0)
May 27, 10-11 PM (0)
May 27, 11-12 AM (0)
May 28, 12-1 AM (0)
May 28, 1-2 AM (0)
May 28, 2-3 AM (0)
May 28, 3-4 AM (0)
May 28, 4-5 AM (0)
May 28, 5-6 AM (3)
May 28, 6-7 AM (2)
May 28, 7-8 AM (3)
May 28, 8-9 AM (0)
May 28, 9-10 AM (6)
May 28, 10-11 AM (2)
May 28, 11-12 PM (1)
May 28, 12-1 PM (0)
May 28, 1-2 PM (0)
May 28, 2-3 PM (1)
May 28, 3-4 PM (0)
May 28, 4-5 PM (0)
May 28, 5-6 PM (0)
May 28, 6-7 PM (0)
May 28, 7-8 PM (0)
May 28, 8-9 PM (0)
May 28, 9-10 PM (0)
May 28, 10-11 PM (1)
May 28, 11-12 AM (0)
May 29, 12-1 AM (0)
May 29, 1-2 AM (4)
May 29, 2-3 AM (0)
May 29, 3-4 AM (0)
May 29, 4-5 AM (0)
May 29, 5-6 AM (0)
May 29, 6-7 AM (0)
May 29, 7-8 AM (3)
May 29, 8-9 AM (0)
May 29, 9-10 AM (0)
May 29, 10-11 AM (0)
May 29, 11-12 PM (0)
May 29, 12-1 PM (8)
May 29, 1-2 PM (9)
May 29, 2-3 PM (0)
May 29, 3-4 PM (0)
May 29, 4-5 PM (1)
May 29, 5-6 PM (3)
May 29, 6-7 PM (6)
May 29, 7-8 PM (0)
May 29, 8-9 PM (0)
May 29, 9-10 PM (0)
May 29, 10-11 PM (1)
May 29, 11-12 AM (0)
May 30, 12-1 AM (0)
May 30, 1-2 AM (0)
May 30, 2-3 AM (0)
May 30, 3-4 AM (1)
May 30, 4-5 AM (2)
May 30, 5-6 AM (0)
May 30, 6-7 AM (0)
May 30, 7-8 AM (0)
May 30, 8-9 AM (0)
May 30, 9-10 AM (0)
May 30, 10-11 AM (0)
May 30, 11-12 PM (0)
May 30, 12-1 PM (0)
May 30, 1-2 PM (0)
May 30, 2-3 PM (0)
May 30, 3-4 PM (0)
May 30, 4-5 PM (0)
May 30, 5-6 PM (0)
May 30, 6-7 PM (0)
May 30, 7-8 PM (1)
May 30, 8-9 PM (3)
May 30, 9-10 PM (0)
May 30, 10-11 PM (6)
May 30, 11-12 AM (0)
May 31, 12-1 AM (4)
May 31, 1-2 AM (0)
May 31, 2-3 AM (1)
May 31, 3-4 AM (0)
May 31, 4-5 AM (0)
May 31, 5-6 AM (0)
May 31, 6-7 AM (0)
May 31, 7-8 AM (0)
May 31, 8-9 AM (1)
May 31, 9-10 AM (0)
May 31, 10-11 AM (0)
May 31, 11-12 PM (0)
May 31, 12-1 PM (0)
May 31, 1-2 PM (0)
May 31, 2-3 PM (0)
May 31, 3-4 PM (2)
May 31, 4-5 PM (0)
May 31, 5-6 PM (0)
165 commits this week
May 24, 2026
-
May 31, 2026
cabal: cli+api srps for cardano-cli value-only tx build, debug, submit
Bump ouroboros-consensus and cardano-api SRPs
bench | tx-centrifuge: make cooldown configurable, default 0
Replace the hardcoded 300s worker cooldown with an optional top-level "cooldown_seconds" JSON field, defaulting to 0 (no wait). The cooldown was added to give multi-node benchmark clusters time to stabilise before traffic begins; for single-node ops / iterative testing it's a 5-minute tax with no benefit. Cluster runs opt back in explicitly. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
bench | tx-centrifuge: shim consumer code for the SRP'd APIs
Companion to the previous SRP pin: adapts the local consumers to the
shape of consensus / ouroboros-network on the Leios prototype remake
forks (which differ from CHAP).
cardano-node/src/Cardano/Node/Run.hs
- RunNodeArgs gained 'rnLeiosDb :: LeiosDbHandle m' on the
leios-remake consensus. Initialise it with 'newLeiosDBInMemory' —
tx-centrifuge has no need for persistence, the Leios DB is just
bookkeeping for EB notifications.
bench/tx-centrifuge/lib/tx-centrifuge/.../Tracing/Orphans.hs
- 'TraceSendMsg' / 'TraceRecvMsg' (from Ouroboros.Network.Driver.
Simple / Stateful) gained a mux-bearer-time field. Discard it
with '_' in the local LogFormatting and MetaTrace orphans; we
don't surface mux timestamps from these instances.
bench/tx-centrifuge/lib/tx-centrifuge/.../NodeToNode.hs
- 'NetN2N.Codecs' gained two ByteString slots for the new Peras
cert/vote diffusion mini-protocols (PerasCertDiffusion,
PerasVoteDiffusion). Add the slots to the four module-level
Codecs signatures and the one in 'connect''s where-clause; we
pass 'BSL.ByteString' for them like every other slot.
- 'byteLimitsKeepAlive' dropped its size-measurer argument. Drop
'(const 0)' from the call site accordingly.
Co-Authored-By: Claude Opus <[email protected]>
bench | tx-centrifuge: pin consensus/ledger/network/api/cli to Leios remake
Mirrors the SRP set on jl/leios-prototype-remake (the node branch
carrying the Dijkstra wiring). CHAP's cardano-api 11.0.0.0 ships TODO
stubs for Dijkstra in caseByronOrShelleyBasedEra, shelleyBasedEra-
Constraints, etc. — at runtime that surfaces as:
"TODO Dijkstra: caseByronOrShelleyBasedEra: era not supported"
ouroboros-consensus / cardano-ledger / ouroboros-network are pinned
together with cardano-api / cardano-cli because the Leios prototype
changes are coupled across the set; CHAP versions of any one would
conflict with sibling APIs (e.g. ouroboros-network needs MkReception
from network-mux, which isn't on CHAP yet).
Pin selection trade-offs:
- cardano-ledger: only libs/cardano-ledger-core + eras/dijkstra/impl
are pinned. Pinning eras/conway/impl would force cardano-ledger-
conway 1.22.0.0 (the SRP version), conflicting with cardano-node
11.0.1's >= 1.22.1.0 requirement which CHAP satisfies.
- ouroboros-network: all five touched subdirs (ouroboros-network,
cardano-diffusion, cardano-ping, network-mux, ntp-client) are
pinned together — ouroboros-network's framework sublibrary uses
MkReception introduced in network-mux on this branch.
Co-Authored-By: Claude <[email protected]>
N2: wire Leios tracers into cardano-node Tracers / OrphanInstances
The consensus Leios chunks added four fields to the consensus tracer records that cardano-node assembles in 'Cardano.Tracing.Tracers' (old style) and 'Cardano.Node.Tracing.Tracers' (new style): - Consensus.Tracers' gained 'leiosKernelTracer' and 'leiosPeerTracer' - NodeToNode.Tracers' gained 'tLeiosNotifyTracer' and 'tLeiosFetchTracer' This commit populates those fields in both 'mkTracers' code paths so the record-construction sites are total. All four are wired to 'nullTracer' for now; the corresponding 'Transformable' / 'MetaTrace' instances and EKG metrics are left as TODO. The new-style tracing system will accordingly emit a 'TracerConsistencyWarnings' for the four Leios namespaces declared in the config.yaml — that surfaces the gap explicitly rather than silently dropping the configuration. Adds the corresponding selectors to 'TraceSelection' / 'PartialTraceSelection' and their JSON parsing: - traceLeiosKernel / Consensus.LeiosKernel - traceLeiosPeer / Consensus.LeiosPeer - traceLeiosNotifyProtocol / LeiosNotify.Remote - traceLeiosFetchProtocol / LeiosFetch.Remote Also drops the duplicate 'LogFormatting (Simple/Stateful.TraceSendRecv)' and 'MetaTrace (Simple/Stateful.TraceSendRecv)' instances that the upstream leios-prototype branch carried in 'Cardano/Node/Tracing/Tracers/NodeToClient.hs' — they are now provided by 'ouroboros-network:framework-tracing' and would collide if redefined here. Co-Authored-By: Claude Opus 4.7 <[email protected]>
leiosdemo202511: fixup build for ouroboros-network:runDriver* and TraceSendRecv changes
bench | tx-centrifuge: detect era for UTxO query (fix Dijkstra anachrony)
Previously hardcoded the UTxO query to ConwayEra. On a Dijkstra-era
chain, that triggers an EraMismatch on the consensus side ("anachrony")
which closes the bearer and surfaces client-side as BearerClosed.
Now query QueryCurrentEra first, then dispatch the QueryUTxOByAddress
via caseByronOrShelleyBasedEra in whatever era the chain reports.
Conway addresses we derive locally are projected to AddressAny for the
set we pass to the query, and the result map is also keyed by AddressAny
so the caller looks up via an era-agnostic key.
Works against any Shelley-based era — Conway, Dijkstra, and anything
caseByronOrShelleyBasedEra dispatches in the current cardano-api.
Co-Authored-By: Claude <[email protected]>
bench | tx-centrifuge: relax skey suffix, scan full 4096 hex address space
Drop the strict "000" suffix requirement on the operator-supplied skey. Any cardano-cli-generated key now works as-is — its last 3 hex chars become the workload-0 base offset, and workload N's recycle key uses suffix (base + N) mod 0x1000. Workload 0 still reproduces the supplied key exactly. Suffix encoding switches from decimal %03d (1000 keys) to hex %03x (4096 keys), and discovery scans the full address space. UTxOs that landed at any of the 4096 addresses are picked up regardless of which suffix — including legacy funding under the old strict-000 layout, or addresses funded via cardano-cli prior to the centrifuge run. loadSigningKeyPrefix now returns (prefix, base :: Int). The address-level derivation lives in keyForSuffixIndex; recycleKeyForWorkload wraps it for workload N. Discovery summary indices are printed in hex (%03x) to match. Co-Authored-By: Claude <[email protected]>
bench | tx-centrifuge: drop dust UTxOs instead of dying
Previously the builder called `die` whenever TxAssembly.buildTx returned
Left — most commonly because an input UTxO's value <= fee, leaving no
change to produce a valid output. A single dust UTxO in the recycle
pool would crash the whole service.
Two layers of protection:
- Runtime change: bhBuildPayload now returns Maybe (key, payload,
[input]). On Nothing the runtime drops the consumed inputs (no
enqueue, no recycle) and continues.
- mkBuilder: on Left from buildTx, logs the txin + value + reason to
stderr and returns Nothing. The inputs are abandoned on-chain but
the centrifuge stays up.
Also filters dust out at startup discovery: UTxOs with value at or
below the max configured fee are flagged and skipped, with per-address
counts reported in the discovery summary (e.g. "142 UTxOs, 18 dust
skipped"). maxConfiguredFee walks every configured builder
(top-level + per-workload) and takes the max; defaults to 1 ADA when
no builder declares a fee, matching the integer-ADA convention.
Test harness: bhBuildPayload return wrapped in Just; also fixes a
pre-existing 2-arg-vs-4-arg lambda on the onRecycle callback so
cabal build all goes further than before.
Co-Authored-By: Claude <[email protected]>
bench | tx-centrifuge: add --preflight dry-run mode
Run all initialization (config, protocol, signing key, UTxO discovery, runtime resolution, observer connection check, partition summary) and exit 0 before spawning workers — so the same production config can be verified end-to-end without producing traffic. Useful for ops health checks after a new skey, fresh funding, node-config tweak, etc. The 2-second observer-settle window catches a broken local node socket early; observer linked-thread failures during the wait are caught and reported as a clean preflight error rather than crashing the process. Triggered by `tx-centrifuge config.json --preflight` (flag accepted in either position). Also exports pull-fiction's partitionInputs so the preflight summary can render the same workload split that Runtime.resolve performs. Co-Authored-By: Claude <[email protected]>
bench | tx-centrifuge: discover initial UTxOs on-chain at startup
Replace the funds.json / initial_inputs config pathway with on-chain UTxO discovery via N2C LocalStateQuery. At startup, tx-centrifuge derives the 1000 recycle addresses from the seed prefix and queries the local node for every spendable UTxO across them, in a single QueryUTxOByAddress. This makes restarts stateless: there is no on-disk state to corrupt, and any UTxOs at any of the recycle addresses are picked up automatically (including leftovers from a previous larger workload configuration). Requires a 'nodetoclient' observer to be declared — its socket_path is reused for the LocalStateQuery. The first such observer (alphabetical by name) is selected; tx-centrifuge dies with a config example if none is declared. Removes funds.json / initial_inputs / network_magic / genesis_utxo_keys and the supporting Fund.loadFunds, Fund.genesisTxIn, FundEntry, etc. Raw.initialInputs becomes Maybe Aeson.Value so other pull-fiction callers can still pass JSON-driven seeds out of band. Co-Authored-By: Claude <[email protected]>
bench | tx-centrifuge: load recycle skey from file
Add required top-level "signing_key_file" config field. The skey is read as a standard cardano-cli text envelope (payment or genesis UTxO key); its raw 32-byte secret must end in 0x000, and the leading 61 hex chars become the per-workload key derivation prefix. Workload 0 reproduces the supplied key exactly; workloads 1..N derive distinct keys. Co-Authored-By: Claude <[email protected]>
bench | tx-centrifuge: load recycle skey from file
Add required top-level "signing_key_file" config field. The skey is read as a standard cardano-cli text envelope (payment or genesis UTxO key); its raw 32-byte secret must end in 0x000, and the leading 61 hex chars become the per-workload key derivation prefix. Workload 0 reproduces the supplied key exactly; workloads 1..N derive distinct keys. Co-Authored-By: Claude <[email protected]>
doc: clarify SRE role between pre-release and full release promotion
fix(generate-release-changelog-links): drop optparse-applicative bound
The explicit optparse-applicative ^>= 0.18 dep (and matching import) was blocking resolution with GHC versions that ship optparse-applicative 0.19. All argument parsing goes through turtle, so optparse-applicative is a transitive dep only — removing the explicit bound and the unused Options.Applicative import fixes the solver failure without any code changes. ansi-wl-pprint removed for the same reason: never imported, was only there as a vestige of optparse-applicative 0.18's internal Doc type.
fix(generate-release-changelog-links): drop optparse-applicative bound
The explicit optparse-applicative ^>= 0.18 dep (and matching import) was blocking resolution with GHC versions that ship optparse-applicative 0.19. All argument parsing goes through turtle, so optparse-applicative is a transitive dep only — removing the explicit bound and the unused Options.Applicative import fixes the solver failure without any code changes. ansi-wl-pprint removed for the same reason: never imported, was only there as a vestige of optparse-applicative 0.18's internal Doc type.
cabal: cli+api srps for cardano-cli value-only tx build, debug, submit
wb | remove genesis creation using create-staked, default is create-testnet-data
wb | move specs to cardano-profile