From dd106276331503b99527c5cc6be4c3ae2dba8dca Mon Sep 17 00:00:00 2001 From: Michal Rus Date: Thu, 9 Apr 2026 01:30:03 +0200 Subject: [PATCH 1/3] chore(cardano-node): update to 10.6.3 --- crates/build_utils/src/testgen_hs.rs | 2 +- flake.lock | 24 ++++++++++++------------ flake.nix | 7 ++++--- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/crates/build_utils/src/testgen_hs.rs b/crates/build_utils/src/testgen_hs.rs index 986fafbb..714aafac 100644 --- a/crates/build_utils/src/testgen_hs.rs +++ b/crates/build_utils/src/testgen_hs.rs @@ -16,7 +16,7 @@ pub fn ensure() { return; } - let testgen_lib_version = "10.4.1.1"; + let testgen_lib_version = "10.6.3.0"; let target_os = if cfg!(target_os = "macos") { "darwin" diff --git a/flake.lock b/flake.lock index b34af307..41cdb468 100644 --- a/flake.lock +++ b/flake.lock @@ -35,16 +35,16 @@ "cardano-node": { "flake": false, "locked": { - "lastModified": 1763736877, - "narHash": "sha256-c1a6DzDlm+wzwa85TWeOFrPEldsfjiZw7+DcMMW9nc4=", + "lastModified": 1774886169, + "narHash": "sha256-TQHJmtgV33DhEeiOLokDS7BGTUX/4wdQt9DIP62SEuw=", "owner": "IntersectMBO", "repo": "cardano-node", - "rev": "6c034ec038d8d276a3595e10e2d38643f09bd1f2", + "rev": "e252edef4dfcd28ba8987e0c1368c6db0404beac", "type": "github" }, "original": { "owner": "IntersectMBO", - "ref": "10.5.3", + "ref": "10.6.3", "repo": "cardano-node", "type": "github" } @@ -52,17 +52,17 @@ "cardano-playground": { "flake": false, "locked": { - "lastModified": 1763920364, - "narHash": "sha256-NxJUfXFfZ0jXDbgTKMcinE5BRF/KbGS8KDCn1szC1/c=", + "lastModified": 1775070913, + "narHash": "sha256-zX1uQvRTJ9B+IH4e9LPNfMsYxnHU/su6h2QkL3629A0=", "owner": "input-output-hk", "repo": "cardano-playground", - "rev": "c0715c2b04628ce1946803b0a829b3e1445b5c4d", + "rev": "419fcc2150552930944624e7a19aad6420539df0", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-playground", - "rev": "c0715c2b04628ce1946803b0a829b3e1445b5c4d", + "rev": "419fcc2150552930944624e7a19aad6420539df0", "type": "github" } }, @@ -399,16 +399,16 @@ "testgen-hs": { "flake": false, "locked": { - "lastModified": 1751542906, - "narHash": "sha256-FYz1P11du5tSakpl2ec9CGdwEB5h+0FcdGPU3zXte60=", + "lastModified": 1775690075, + "narHash": "sha256-OjJjcQiiDdxiUlPNJ6GB6CPN+ql3w4CT91NWmnPmWhE=", "owner": "input-output-hk", "repo": "testgen-hs", - "rev": "7d58736ed578a9ccf8337376b302bb188b74303f", + "rev": "cf292cd541e31802058bc9e3096bde653bb4f7f9", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "10.4.1.1", + "ref": "pull/8/head", "repo": "testgen-hs", "type": "github" } diff --git a/flake.nix b/flake.nix index cb264982..418ce8bb 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,7 @@ flake = false; }; cardano-node = { - url = "github:IntersectMBO/cardano-node/10.5.3"; + url = "github:IntersectMBO/cardano-node/10.6.3"; flake = false; # otherwise, +2k dependencies we don’t really use }; dolos = { @@ -37,7 +37,8 @@ }; mithril.url = "github:input-output-hk/mithril/2524.0"; testgen-hs = { - url = "github:input-output-hk/testgen-hs/10.4.1.1"; # make sure it follows cardano-node + url = "github:input-output-hk/testgen-hs/pull/8/head"; # make sure it follows cardano-node + # FIXME: url = "github:input-output-hk/testgen-hs/10.6.3.0"; # make sure it follows cardano-node flake = false; # otherwise, +2k dependencies we don’t really use }; hydra = { @@ -49,7 +50,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; cardano-playground = { - url = "github:input-output-hk/cardano-playground/c0715c2b04628ce1946803b0a829b3e1445b5c4d"; + url = "github:input-output-hk/cardano-playground/419fcc2150552930944624e7a19aad6420539df0"; flake = false; # otherwise, +9k dependencies in flake.lock… }; advisory-db = { From 348f22711f2c5de17380471d099319d3e3a0b177 Mon Sep 17 00:00:00 2001 From: Michal Rus Date: Thu, 9 Apr 2026 11:12:03 +0200 Subject: [PATCH 2/3] chore: update `testgen-hs` to 10.6.3.0 --- flake.lock | 8 ++++---- flake.nix | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 41cdb468..59b115f6 100644 --- a/flake.lock +++ b/flake.lock @@ -399,16 +399,16 @@ "testgen-hs": { "flake": false, "locked": { - "lastModified": 1775690075, - "narHash": "sha256-OjJjcQiiDdxiUlPNJ6GB6CPN+ql3w4CT91NWmnPmWhE=", + "lastModified": 1775724489, + "narHash": "sha256-UiTRFhvLifxg/Ve9RJsOKRPLGQSOzAX6skd1Eq6QAms=", "owner": "input-output-hk", "repo": "testgen-hs", - "rev": "cf292cd541e31802058bc9e3096bde653bb4f7f9", + "rev": "df1ac503b267beb7bcbfc6b953cf214b04c03d30", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "pull/8/head", + "ref": "10.6.3.0", "repo": "testgen-hs", "type": "github" } diff --git a/flake.nix b/flake.nix index 418ce8bb..3b08f7f2 100644 --- a/flake.nix +++ b/flake.nix @@ -37,8 +37,7 @@ }; mithril.url = "github:input-output-hk/mithril/2524.0"; testgen-hs = { - url = "github:input-output-hk/testgen-hs/pull/8/head"; # make sure it follows cardano-node - # FIXME: url = "github:input-output-hk/testgen-hs/10.6.3.0"; # make sure it follows cardano-node + url = "github:input-output-hk/testgen-hs/10.6.3.0"; # make sure it follows cardano-node flake = false; # otherwise, +2k dependencies we don’t really use }; hydra = { From 31fc35dcbacecf93196126b897f343564ccd0809 Mon Sep 17 00:00:00 2001 From: Michal Rus Date: Thu, 9 Apr 2026 12:09:26 +0200 Subject: [PATCH 3/3] chore: update Pallas to --- Cargo.lock | 30 ++++++++++++------------ Cargo.toml | 15 ++++++------ crates/node/src/cbor/fallback_decoder.rs | 2 +- crates/node/src/cbor/tests.rs | 2 +- crates/node/src/cbor/tests/random.rs | 2 +- crates/node/src/cbor/tests/specific.rs | 4 ++-- crates/node/src/cbor/validation.rs | 16 ++++++------- crates/node/src/transactions.rs | 3 ++- 8 files changed, 38 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34d8dcbe..0d41eec1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2985,8 +2985,8 @@ dependencies = [ [[package]] name = "pallas-addresses" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "base58", "bech32 0.9.1", @@ -3000,8 +3000,8 @@ dependencies = [ [[package]] name = "pallas-codec" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "hex", "minicbor", @@ -3011,21 +3011,21 @@ dependencies = [ [[package]] name = "pallas-crypto" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "cryptoxide", "hex", "pallas-codec", - "rand_core 0.6.4", + "rand_core 0.9.3", "serde", "thiserror 1.0.69", ] [[package]] name = "pallas-hardano" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "binary-layout", "hex", @@ -3044,8 +3044,8 @@ dependencies = [ [[package]] name = "pallas-network" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "byteorder", "hex", @@ -3061,8 +3061,8 @@ dependencies = [ [[package]] name = "pallas-primitives" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "hex", "pallas-codec", @@ -3073,8 +3073,8 @@ dependencies = [ [[package]] name = "pallas-traverse" -version = "1.0.0-alpha.2" -source = "git+https://github.com/blockfrost/pallas.git?tag=blockfrost-platform-0.0.3-alpha4#eadd97143a13d153d18a7b2ee2de3ff32a9494e8" +version = "1.0.0-alpha.5" +source = "git+https://github.com/txpipe/pallas.git?rev=ed422bc0d5a09f77617d4882dd4c71089a8bcdb2#ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" dependencies = [ "hex", "itertools 0.13.0", diff --git a/Cargo.toml b/Cargo.toml index 85ff02b5..25dfb6aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,13 +61,14 @@ metrics-process = "2.4.3" nix = { version = "0.30", default-features = false, features = ["signal"] } ntest = "0.9.5" num_cpus = "1" -pallas-addresses = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } -pallas-codec = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } -pallas-crypto = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } -pallas-hardano = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } -pallas-network = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } -pallas-primitives = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } -pallas-traverse = { git = "https://github.com/blockfrost/pallas.git", tag = "blockfrost-platform-0.0.3-alpha4" } +# FIXME: use a proper Pallas release after they merge : +pallas-addresses = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } +pallas-codec = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } +pallas-crypto = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } +pallas-hardano = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } +pallas-network = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } +pallas-primitives = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } +pallas-traverse = { git = "https://github.com/txpipe/pallas.git", rev = "ed422bc0d5a09f77617d4882dd4c71089a8bcdb2" } pretty_assertions = "1.4.1" proptest = "1.10.0" rand = "0.8.5" diff --git a/crates/node/src/cbor/fallback_decoder.rs b/crates/node/src/cbor/fallback_decoder.rs index 02f65209..24e2f488 100644 --- a/crates/node/src/cbor/fallback_decoder.rs +++ b/crates/node/src/cbor/fallback_decoder.rs @@ -94,7 +94,7 @@ impl FallbackDecoder { "contents": { "era": "ShelleyBasedEraConway", "error": [ - "ConwayCertsFailure (WithdrawalsNotInRewardsCERTS (fromList []))" + "ConwayCertsFailure (WithdrawalsNotInRewardsCERTS (Withdrawals {unWithdrawals = fromList []}))" ], "kind": "ShelleyTxValidationError" }, diff --git a/crates/node/src/cbor/tests.rs b/crates/node/src/cbor/tests.rs index e610c2a8..1001e682 100644 --- a/crates/node/src/cbor/tests.rs +++ b/crates/node/src/cbor/tests.rs @@ -191,7 +191,7 @@ async fn verify_one(cbor: &str) { let our_decoding = decode_error(&cbor); - let our_json = serialize_error(our_decoding); + let our_json = serialize_error(our_decoding).unwrap(); assert_json_eq!(reference_json, our_json) } #[cfg(not(feature = "tarpaulin"))] diff --git a/crates/node/src/cbor/tests/random.rs b/crates/node/src/cbor/tests/random.rs index 271ed3f4..79d36779 100644 --- a/crates/node/src/cbor/tests/random.rs +++ b/crates/node/src/cbor/tests/random.rs @@ -167,7 +167,7 @@ fn proptest_with_params( let test_one = move || { let cbor = hex::decode(case.cbor).map_err(|e| e.to_string())?; - let our_json = serialize_error(decode_error(&cbor)); + let our_json = serialize_error(decode_error(&cbor)).map_err(|e| e.to_string())?; if our_json == case.json { Ok(()) diff --git a/crates/node/src/cbor/tests/specific.rs b/crates/node/src/cbor/tests/specific.rs index dae994d1..f9c312c2 100644 --- a/crates/node/src/cbor/tests/specific.rs +++ b/crates/node/src/cbor/tests/specific.rs @@ -615,7 +615,7 @@ async fn test_cbor_145() { #[tokio::test] #[allow(non_snake_case)] async fn test_cbor_146() { - verify_one("818206818201820083030020").await + verify_one("818206818201820083030001").await } #[tokio::test] #[allow(non_snake_case)] @@ -729,7 +729,7 @@ async fn test_cbor_165() { #[tokio::test] #[allow(non_snake_case)] async fn test_cbor_166() { - verify_one("8182068282018200830320208201820a80").await + verify_one("8182068282018200830301018201820a80").await } #[tokio::test] #[allow(non_snake_case)] diff --git a/crates/node/src/cbor/validation.rs b/crates/node/src/cbor/validation.rs index 91d8e510..4031ef93 100644 --- a/crates/node/src/cbor/validation.rs +++ b/crates/node/src/cbor/validation.rs @@ -11,20 +11,20 @@ pub(crate) fn validate_tx_cbor(tx: &[u8]) -> Result<(), BlockfrostError> { match pallas_codec::minicbor::decode::(tx) { Ok(decoded) => { if _check_multiasset_zero(decoded) { - Err(BlockfrostError::custom_400(as_cbor_decode_failure( - "MultiAsset cannot contain zeros".to_string(), - 0, - ))) + Err(BlockfrostError::custom_400( + as_cbor_decode_failure("MultiAsset cannot contain zeros".to_string(), 0) + .unwrap_or_else(|e| format!("Failed to format decode error: {e}")), + )) } else { Ok(()) } }, Err(e) => { info!("Invalid TX CBOR: {:?}, CBOR: {}", e, hex::encode(tx)); - Err(BlockfrostError::custom_400(as_cbor_decode_failure( - e.to_string(), - e.position().unwrap_or(0) as u64, - ))) + Err(BlockfrostError::custom_400( + as_cbor_decode_failure(e.to_string(), e.position().unwrap_or(0) as u64) + .unwrap_or_else(|e| format!("Failed to format decode error: {e}")), + )) }, } } diff --git a/crates/node/src/transactions.rs b/crates/node/src/transactions.rs index fe7ea6b7..7048ed7d 100644 --- a/crates/node/src/transactions.rs +++ b/crates/node/src/transactions.rs @@ -44,7 +44,8 @@ impl NodeClient { Ok(txid) }, Ok(Response::Rejected(reason)) => { - let haskell_display = as_node_submit_error(reason); + let haskell_display = as_node_submit_error(reason) + .unwrap_or_else(|e| format!("Failed to format submit error: {e}")); info!( connection_id = self.connection_id, "TxSubmitFail: {}, CBOR: {}",