Highlights
This release introduces two major integrations:
Added
- Hydra integration: Blockfrost API access to Hydra Heads
- Dolos integration as a data node (alternative to
cardano-db-sync) - Hydra micropayments between Gateway and Platform, and between Gateway and end users
- Hydra Head with
--blockfrostintegration test hydra-node1.0.0 bundled with the installers (no externalcardano-clirequired at runtime)blockfrost-sdk-bridgebinary shipped via installers, Nix packages, and release artifactsblockfrost-gatewayis now part of the monorepo and shipped together with the platform- CIP-129 support
- Multi-arch OCI (Docker) images
- Data node monitoring with version and revision reporting
- Concurrency limiting
BLOCKFROST_GATEWAY_URLenvironment variable to override the Gateway URL- WebSocket end-to-end integration tests
- Weekly
flake.lockupdate workflow - CI checks for unused Cargo dependencies and a runnability check for the published OCI image
- Gateway high-availability: advertise multiple peer URLs during registration, new
/any/*round-robin route across all connected Platforms - Tracing:
journalandsysloglog targets via*_LOG_TARGETenvironment variables - Set custom genesis config
- Load balancing over a WebSocket (eliminating the need for public IP in the future)
- Expose a
health_errors_totalgauge in metrics - More comprehensive error reporting under
GET / - NixOS service (module)
- Run original
blockfrost-testsagainst the Platform
New endpoints from Dolos
General
/network/network/eras/genesis
Transactions
/txs/{hash}/cbor/txs/{hash}/utxos/txs/{hash}/metadata/txs/{hash}/metadata/cbor/txs/{hash}/withdrawals/txs/{hash}/delegations/txs/{hash}/redeemers/txs/{hash}/mirs/txs/{hash}/pool_retires/txs/{hash}/pool_updates/txs/{hash}/stakes
Blocks
/blocks/latest/blocks/latest/txs/blocks/{hash_or_number}/blocks/{hash_or_number}/next/blocks/{hash_or_number}/previous/blocks/{hash_or_number}/txs/blocks/slot/{slot}
Addresses
/addresses/{address}/utxos/addresses/{address}/transactions
Accounts
/accounts/{stake_address}/accounts/{stake_address}/rewards/accounts/{stake_address}/addresses/accounts/{stake_address}/delegations/accounts/{stake_address}/registrations
Assets
/assets/{asset}
Governance
/governance/dreps/{drep_id}
Metadata
/metadata/txs/labels/{label}/metadata/txs/labels/{label}/cbor
Pools
/pools/extended/pools/{pool_id}/delegators
Epochs
/epochs/{number}/parameters/epochs/latest/parameters
Removed
networkparameter from CLI. It's resolved automatically now.
Changed
- Updated
cardano-nodeto 10.6.3 - Dolos config is now a generic data node config
- Unified error handling and logging
- Improved data node error logging
- Workspace reorganization:
src→crates/platform, node code extracted to its own crate, integration tests moved to a separate crate - Unified and aligned all Cargo workspace dependencies
- Rust toolchain bumped to 1.93.1, edition updated
- CI: 3rd-party Actions pinned to immutable commits (supply-chain hardening)
- CI: incremental builds disabled for faster builds
- Devshell: added
midnight-nodeandmidnight-indexer - Windows NSIS installer is now HiDPI-aware; dropped
inputs.nixpkgs-nsis latestOCI tag is no longer pushed for pre-releases- Docker:
libssl-devunpinned;glibcversion aligned - Node configs now pulled from the Operations book
- Docs: migrated from yarn to pnpm, ESLint bumped to v9
- Gateway environment variable overrides now require a
BLOCKFROST_GATEWAYprefix
Fixed
- Tests: hardcoded
project_idnow correctly resolved from environment - Gateway no longer logs secrets
- Hydra: reset stale credits on Head
Closeand seed Gateway balance onOpen - Hydra:
Commiteach participant as soon as their own node hitsInitial - Hydra: retry when returning funds to
SUBMIT_MNEMONIC - Hydra: test resiliency against concurrent tx submission races and
OutsideValidityIntervalUTxO sdk-bridge: correct naming of protocol fields (platform→bridge)sdk-bridge: reconnect with exponential backoff when the WebSocket dropssdk-bridge: periodically clean up timed-out in-flight requests- Immediately run built binaries; fail early if no
hydra-node - Addresses dummy response; improved asset and block validation
- Incorrect
drep_idmapping removed - Epoch number parameter handling
- Genesis preview start
- WebSocket now correctly forwards the request query string
- Gateway: correct network detection for Preprod
cardano-cliremoved from bundles;CARDANO_NODE_NETWORK_IDset in Rust- Windows build of
blockfrost-gateway.exe(multiple fixes aroundlibpq,reqwest, cross-build) glibcversion alignment in the Dockerfile- Windows build of
blockfrost-gateway.exenow includeslibpq - Installers fixed and verified before release
- Prevent
unknown/unknownarchitecture label in the GitHub UI for OCI images - Tx submission failures logged as warnings instead of errors
- Trailing slash in
GET /{uuid}/works again - Health reporting while still syncing in the Byron era
- Native (not cross-compiled)
aarch64-linuxbuilds - Docs improvements
- TLS support for the WebSocket connection with the Gateway
What's Changed
- Release version 0.0.2 by @michalrus in #251
- fix: changelog by @vladimirvolek in #252
- Removing numbers from questions in FAQ and minor edits to layout.tsx file by @joseph-fajen in #255
- chore: tweak installation docs (we’re past a proper release) by @michalrus in #253
- fix: treat UUID as an implementation detail in docs by @michalrus in #258
- Update pallas & refactor cbor validation by @ginnun in #260
- chore: make it easy to plug other error sources to
GET /by @michalrus in #261 - chore: expose a
health_errors_totalgauge in metrics by @michalrus in #265 - chore: lint Nix on CI by @michalrus in #266
- chore: update
advisory-dbby @michalrus in #264 - Remove unused cbor crate dependency to fix failing build on Rust 1.86.0 by @ginnun in #270
- docs: describe the new WebSocket load balancing by @michalrus in #268
- tests: check status code in submit_tx response by @vladimirvolek in #271
- README: link to roadmap by @mmahut in #286
- MK-8646 Enhance FAQ by @joseph-fajen in #267
- feat: use a WebSocket load balancer to allow connections from behind NAT(s) by @michalrus in #263
- chore: update yarn & use cache by @vladimirvolek in #289
- chore: add a NixOS service for
cardano-partsby @michalrus in #273 - feat: coverage report ui by @vladimirvolek in #257
- chore: silence
treefmtwarnings by @michalrus in #291 - docs: improve FAQ accuracy by @michalrus in #290
- Correct pallas commit hash by @ginnun in #292
- fix: don’t panic when there are no load balancers; warn instead by @michalrus in #294
- chore: update
rustcto 1.85.1 via Nixpkgs by @michalrus in #293 - chore: change package name from
defaulttoblockfrost-platformforcapkgsby @michalrus in #298 - chore: add package description, homepage, repository to
Cargo.tomlby @michalrus in #303 - Add unit tests for CLI argument parsing by @ginnun in #302
- MK-8592 Restructure Left Nav by @joseph-fajen in #297
- fix: favicon by @vladimirvolek in #307
- docs: roadmap init by @mmahut in #308
- Update pallas to the latest by @ginnun in #311
- Blockfrost API skeletons with responses by @vladimirvolek in #312
- fix: improve health reporting (
GET /) during the Byron era by @michalrus in #314 - chore: update deps in docs by @vladimirvolek in #315
- feat(node): Automatically detect the network by @vladimirvolek in #313
- Fix thread blocking in network detection by @vladimirvolek in #321
- Update our pallas tag by @ginnun in #323
- chore: update
cardano-nodeandtestgen-hsto 10.3.1 by @michalrus in #318 - feat(config): Custom network config & refactoring by @vladimirvolek in #316
- chore: update
cardano-nodeand others to 10.4.1 by @michalrus in #328 - fix: handle trailing slash in the
GET /{uuid}/path by @michalrus in #330 - fix trailing slashes + integration test by @vladimirvolek in #331
- chore: update the devshell for the new Rust and Clippy by @michalrus in #333
- chore: update deps in docs by @vladimirvolek in #334
- chore: update deps by @vladimirvolek in #335
- fix: nix devshell for darwin by @vladimirvolek in #338
- chore: new clippy rule by @vladimirvolek in #339
- chore: build for
aarch64-linuxnatively by @michalrus in #341 - fix: set the
RUST_SRC_PATHcorrectly for LSP (rust-analyzer) in the devshell by @michalrus in #342 - chore: add 2-minute timeouts to integration tests by @michalrus in #348
- chore: add Dolos to the devshell by @michalrus in #345
- chore: add Dolos run scripts to the
devshellby @michalrus in #350 - Dolos integration by @vladimirvolek in #346
- Bump rust SDK in tests by @vladimirvolek in #351
- fix:
dmgbuildvolume permissions on macOS Sonoma+ by @michalrus in #354 - chore: bump sdk by @vladimirvolek in #355
- fix: dolos CLI by @vladimirvolek in #356
- Implement unified structure for API endpoints with support for multiple data sources by @vladimirvolek in #352
- docs: budget draft by @mmahut in #310
- chore: prepare for the 0.0.3 release by @michalrus in #360
- chore: run
blockfrost-testson CI against the Platform by @michalrus in #362 - fix: pagination from to params by @vladimirvolek in #363
- chore: update Dolos to 0.32.0 (the same as on GHA workers) by @michalrus in #364
- Integration test - Icebreakers websockets by @vladimirvolek in #361
- chore: don’t treat
test/common.rsas another integration test by @michalrus in #372 - chore: rename
NODE_SOCKET_PATHtoCARDANO_NODE_SOCKET_PATHby @michalrus in #366 - chore: evaluate tests by @vladimirvolek in #375
- chore: update nextra by @vladimirvolek in #376
- fix: satisfy more conformance tests by @vladimirvolek in #377
- chore: update Dolos to 1.0.0-beta.0 by @michalrus in #379
- chore: add Dolos to our
docker-compose.ymlby @michalrus in #380 - chore: update Dolos to
v1.0.0-beta.1by @michalrus in #381 - fix: add dolos version in CI by @vladimirvolek in #385
- chore(release): 0.0.3-rc.1 by @michalrus in #382
- chore(release): 0.0.3-rc.2 by @michalrus in #386
- fix: support TLS in WebSockets (
wss://) by @michalrus in #387 - chore: dolos bump by @vladimirvolek in #389
- chore(release): 0.0.3-rc.3 by @michalrus in #388
- Update
cardano-nodeto 10.5.1 and some minor maintenance by @michalrus in #394 - chore: don’t push the
latestOCI tag for pre-releases by @michalrus in #395 - chore: update Dolos to 1.0.0-beta.5 by @michalrus in #396
- chore: update
advisory-dband fix newcargo auditerrors by @michalrus in #398 - Bump tests package by @vladimirvolek in #402
- chore: update Dolos to 1.0.0-beta.6 by @michalrus in #405
- chore: add Acropolis to the devshell by @michalrus in #404
- chore: add
midnight-nodeandmidnight-indexerto the devshell by @michalrus in #413 - Satisfy more integration tests by @vladimirvolek in #415
- chore: update Dolos to 1.0.0-rc.2 by @michalrus in #406
- chore: update
cardano-nodeto 10.5.3 by @michalrus in #416 - fix: run all tests in CI by @michalrus in #417
- chore: bump open api crate by @vladimirvolek in #418
- fix: unify
Cargo.tomls in the workspace by @michalrus in #419 - fix: turn off external submit test for now by @vladimirvolek in #420
- feat: a Hydra Head with
--blockfrostintegration test by @michalrus in #397 - chore: update Dolos to 1.0.0-rc.3 by @michalrus in #422
- fix: update tests package, missing api skeleton by @vladimirvolek in #421
- chore: run Dolos tests on networks other than Preview, too by @michalrus in #423
- feat: CIP-129 by @vladimirvolek in #424
- ci: run preprod tests by @hlolli in #427
- chore: bump dolos to rc v5 by @vladimirvolek in #430
- chore: add more timeouts to CI workflows by @michalrus in #434
- feat: publish multi-arch OCI (Docker) images by @michalrus in #433
- fix(oci): prevent the
unknown/unknownarchitecture in the GitHub UI by @michalrus in #435 - refactor: single node support by @vladimirvolek in #431
- chore: update tests package by @vladimirvolek in #437
- ci: disable incremental builds in Cargo on CI by @michalrus in #438
- fix: align
glibcversions in theDockerfileby @michalrus in #440 - Improve data node error logging by @vladimirvolek in #441
- Update deps in docs by @vladimirvolek in #442
- feat: use the socat'd cardano-node preview pipe by @hlolli in #443
- ci: fix hydra tests job node socket path by @hlolli in #444
- fix: remove all (
git grep) remaining references to/run/cardano-node/node.socketby @michalrus in #445 - Fix yarn in tests by @vladimirvolek in #446
- feat: data node monitoring & version, revision reporting, deps by @vladimirvolek in #436
- chore: move
src→crates/platformby @michalrus in #447 - ci: assert that the lockfile isn't stale before running nix by @hlolli in #455
- chore: bump blockfrost-tests by @vladimirvolek in #454
- Concurrency limit by @vladimirvolek in #449
- Update all deps + one CI by @vladimirvolek in #448
- Move node code to node crate by @vladimirvolek in #458
- chore: unify error handling and logging by @vladimirvolek in #457
- chore: temporarily ignore
test_route_submit_error(submission errors changed) by @michalrus in #460 - fix: remove drep_id mapping by @vladimirvolek in #462
- fix: addresses dummy response by @vladimirvolek in #461
- chore: bump openapi by @vladimirvolek in #463
- Add
blockfrost-gatewayto this monorepo by @michalrus in #464 - chore(fmt): add
yamllintby @michalrus in #466 - fix(ci): the Windows build of
blockfrost-gateway.exeincludinglibpqby @michalrus in #465 - chore: update Dolos to 1.0.0-rc.11 and Rust to 1.93.1 by @michalrus in #467
- Ignore some integration tests in dolos by @vladimirvolek in #468
- chore: un-ignore test_route_submit_error test by @ginnun in #470
- chore(dolos): update to 1.0.0-rc.12 by @michalrus in #471
- chore(windows): update NSIS for HiDPI Windows; and get rid of
inputs.nixpkgs-nsisby @michalrus in #472 - chore: align all Cargo workspace deps by @michalrus in #484
- chore: add CI checks for unused Cargo deps by @michalrus in #485
- fix: Hydra test resiliency against concurrent tx submission races by @michalrus in #486
- fix(tests): get rid of
continue-on-error: trueby @michalrus in #473 - fix: genesis preview start by @vladimirvolek in #487
- chore(devshell): remove Acropolis (it’s only active till the end of this month) by @michalrus in #488
- fix(ci): pin 3rd-party Actions to immutable commits to prevent supply-chain attacks by @michalrus in #493
- chore(blockfrost-tests): temporarily ignore more tests for a green
mainby @michalrus in #494 - chore(tests): move integration tests to a separate crate by @michalrus in #497
- Fix blockfrost-tests by @vladimirvolek in #498
- feat(tests): run
blockfrost-teststhrough a localblockfrost-gatewayby @michalrus in #500 - feat(websockets): add E2E integration tests by @michalrus in #499
- fix(hydra): test flakiness:
OutsideValidityIntervalUTxOby @michalrus in #502 - fix(tests): flaky
e2e_websockettest by @michalrus in #503 - fix(hydra):
Commiteach participant as soon as their own node hitsInitialby @michalrus in #504 - chore: bump tests package by @vladimirvolek in #505
- fix: log sources + CI tweaks by @vladimirvolek in #501
- ci: add weekly flake.lock update workflow by @ginnun in #491
- chore(tests): ignore the failing ones on
mainby @michalrus in #509 - chore(tests): revert ignoring the
active_stake == 0tests by @michalrus in #510 - chore(dolos): update to 1.0.3 by @michalrus in #513
- Add Hydra micropayments (gateway↔platform) by @michalrus in #425
- Add Hydra micropayments (gateway↔end user) by @michalrus in #451
- chore: update rust edition and some deps by @vladimirvolek in #506
- chore(cardano-node): update to 10.6.3 by @michalrus in #514
- fix(hydra,tests): retry when returning funds to
SUBMIT_MNEMONICby @michalrus in #520 - fix(tests): unignore certain tests ignored in #509 for a green
mainby @michalrus in #523 - fix(hydra): reset stale credits on Head
Closeand seed Gateway balance onOpenby @michalrus in #522 - fix: do not log full secret on server by @vladimirvolek in #526
- Fix and check all installers before the pre-release by @michalrus in #521
- docs: update v1 by @vladimirvolek in #512
- fix(sdk-bridge): correct naming of some protocol fields (
platform→bridge) by @michalrus in #531 - fix: immediately run the built binaries; fail early if no
hydra-nodeby @michalrus in #528 - fix: hardcoded project_id by @vladimirvolek in #532
- fix(cardano-node): new tracing silencing config by @michalrus in #536
- fix: next version by @vladimirvolek in #541
- Fix a few 1.0.0-rc.1 issues by @michalrus in #540
/registerrate limit by @vladimirvolek in #527- chore: release 1.0.0-rc.1 by @michalrus in #534
- docs: fix search by @vladimirvolek in #542
- docs: fix search and version by @vladimirvolek in #543
- fix(node): log tx submission failures as warnings by @michalrus in #546
- chore(gateway): prefix env. overrides with
BLOCKFROST_GATEWAYby @michalrus in #545 - chore(nix): update
flake.lockby @blockfrost-lockfile-update[bot] in #507 - feat(tracing): support
*_LOG_TARGET=journal/syslogby @michalrus in #544 - feat(gateway): advertise multiple peer URLs in
/registerfor HA; add an/any/*round-robin by @michalrus in #550 - refactor: common by @vladimirvolek in #548
- chore(nix): update
flake.lockby @blockfrost-lockfile-update[bot] in #552 - chore: release 1.0.0-rc.2 by @michalrus in #554
- chore: update Dolos to 1.1.1 in the devshell by @michalrus in #562
- Next docs by @vladimirvolek in #556
- unignore some now-passing Dolos tests by @ginnun in #560
- feat: add new endpoints by @vladimirvolek in #551
- ci: smart cache and install + more in parallel by @vladimirvolek in #563
- Extract testgen-hs handling into dedicated crates by @ginnun in #537
- fix(gateway): reject
/sdk/wsupgrade when Hydra is not configured by @michalrus in #564 - chore(nix): update
flake.lockby @blockfrost-lockfile-update[bot] in #558 - fix(gateway): use semaphore for Hydra capacity to prevent a TOCTOU race by @michalrus in #565
- fix(blockfrost-tests): accept both error types for broken pool metadata URL by @michalrus in #567
- chore: drop
x86_64-darwinsupport by @michalrus in #566
New Contributors
- @hlolli made their first contribution in #427
- @blockfrost-lockfile-update[bot] made their first contribution in #507
Full Changelog: 0.0.2...1.0.0