Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
27c956a
feat: bundle `hydra-node` with the installers
michalrus Dec 18, 2025
1704c35
feat: extract `bf_common::find_libexec`
michalrus Dec 18, 2025
947973c
feat: allow overriding the `BLOCKFROST_GATEWAY_URL` with an env. var.
michalrus Dec 18, 2025
6bbeb0d
feat: prepare for starting Hydra
michalrus Dec 18, 2025
2fc808b
feat: verify there’s enough ADA on the `--hydra-cardano-signing-key`
michalrus Dec 18, 2025
72730a5
feat: generate Hydra keys if they don’t exist
michalrus Dec 18, 2025
da724cf
feat: prepare `protocol-parameters.json`
michalrus Dec 18, 2025
8c0dfee
chore: move more stuff under `hydra::verifications`
michalrus Dec 18, 2025
c73d290
fix: `cargo clippy`
michalrus Dec 18, 2025
53d4d62
feat: allow sending events from outside
michalrus Dec 18, 2025
7c3bb8a
fix: use `tokio::process` instead of `std::process`
michalrus Dec 18, 2025
d895692
feat: run `hydra-node` as a child with restarts in case it dies
michalrus Dec 18, 2025
3ee1803
feat: draft `KeyExchangeRequest`/`KeyExchangeResponse`
michalrus Dec 18, 2025
3159804
feat: simulate exchanging keys with the Gateway
michalrus Dec 18, 2025
b3983fb
feat: “exchange” the Hydra keys in `crate::icebreakers`
michalrus Dec 18, 2025
766b077
feat: “exchange” the Hydra keys in `crate::load_balancer`
michalrus Dec 18, 2025
e5918b6
feat: “exchange” the Hydra keys in the Gateway
michalrus Dec 18, 2025
4575e38
chore: rename `HydraManager` → `HydraController`
michalrus Dec 18, 2025
5577081
chore: prefix the Hydra persistence directory with network and `_defa…
michalrus Dec 18, 2025
65f3bb8
chore: add `fn is_tcp_port_free`
michalrus Dec 18, 2025
a170d64
feat: make the Hydras connect
michalrus Dec 18, 2025
1c6b2fa
feat: add `hydra::tunnel::*`
michalrus Dec 18, 2025
b2438dd
chore: remove `SomeEvent`, and rename `_event_tx` for the future
michalrus Dec 18, 2025
4501965
fix: a few bugs
michalrus Dec 18, 2025
8c41597
Merge branch 'main' into feat/hydra-payments
michalrus Dec 18, 2025
7484d16
fix: the Windows build
michalrus Dec 18, 2025
3ade4ed
fix: the `cargo-clippy` check
michalrus Dec 18, 2025
2c1148f
feat: add a better, more self-contained TCP tunnelling
michalrus Dec 19, 2025
ba099df
feat: don’t set up the TCP-over-WebSocket tunnels if running on the s…
michalrus Dec 19, 2025
309039e
chore: set `CARDANO_NODE_NETWORK_ID` etc. in Rust
michalrus Dec 19, 2025
f3b73de
ci: try `cargo clean` to fix the `SIGBUS` on self-hosted runner
michalrus Dec 19, 2025
4330e59
after testing, it looks like only a post-build clean is needed
cleverca22 Dec 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,12 @@ jobs:
uses: actions/checkout@v4

- name: Run Integration Tests
run: nix develop .# --command cargo test --verbose --test endpoints_test
run: |
nix develop .# --command bash -c '
set -euo pipefail
cargo test --verbose --test endpoints_test
cargo clean
'

blockfrost_integration_tests:
name: Blockfrost Integration Tests (${{ matrix.network }})
Expand Down
129 changes: 120 additions & 9 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 18 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ bf-dolos.workspace = true
bf-api-provider.workspace = true
axum.workspace = true
tokio.workspace = true
tokio-util.workspace = true
futures.workspace = true
futures-util.workspace = true
bytes.workspace = true
tungstenite = { version = "0.26", features = ["native-tls"] }
tokio-tungstenite = { version = "0.26", features = ["native-tls"] }
tracing.workspace = true
Expand Down Expand Up @@ -60,6 +62,13 @@ anyhow.workspace = true
bech32.workspace = true
cardano-serialization-lib.workspace = true
ntest = "0.9.3"
sysinfo.workspace = true
machine-uid = "0.5"
blake3 = "1"
getrandom = "0.3"

[target.'cfg(unix)'.dependencies]
nix = { version = "0.30", default-features = false, features = ["signal"] }

[dev-dependencies]
bf-api-provider.workspace = true
Expand Down Expand Up @@ -97,6 +106,8 @@ bf-common = { path = "crates/common", package = "blockfrost-platform-common" }
bf-dolos = { path = "crates/dolos", package = "blockfrost-platform-dolos" }
bf-node = { path = "crates/node", package = "blockfrost-platform-node" }
blockfrost-openapi = "0.1.83"
bytes = "1"
tokio-util = "0.7"
cardano-serialization-lib = "12.1.1"
chrono = "0.4"
clap = { version = "4.5.26", features = ["derive"] }
Expand All @@ -119,8 +130,14 @@ reqwest = { version = "0.12.12", features = ["blocking"] }
rstest = "0.24.0"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"
sysinfo = "0.33.1"
thiserror = "2.0.12"
tokio = { version = "1.43.0", features = ["rt", "rt-multi-thread", "signal"] }
tokio = { version = "1.43.0", features = [
"rt",
"rt-multi-thread",
"signal",
"process",
] }
toml = "0.8.23"
tracing = "0.1.41"
twelf = { version = "0.15.0", features = ["clap", "toml"] }
Expand Down
5 changes: 5 additions & 0 deletions crates/common/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ pub struct Args {

#[clap(long = "dolos-timeout-sec", default_value = "30")]
pub dolos_request_timeout: Option<u64>,

/// A prefunded L1 key file for paying the Hydra transaction fees on L1, ~13 ADA per L2 cycle.
#[arg(long)]
pub hydra_cardano_signing_key: Option<PathBuf>,
}

fn get_config_path() -> PathBuf {
Expand Down Expand Up @@ -269,6 +273,7 @@ impl Args {
custom_genesis_config: None,
dolos_endpoint: dolos.endpoint,
dolos_request_timeout: Some(dolos.request_timeout),
hydra_cardano_signing_key: None,
};

if !is_solitary {
Expand Down
Loading
Loading