v0.3.10-pre.006-fix.001

This commit is contained in:
2026-09-07 23:56:48 +02:00
parent f7c57f21c5
commit 919b4ed46d
13 changed files with 319 additions and 202 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-raw-transaction-lib/src/wire.rs
// version: 2
// version: 3
use base64::Engine; // rust-rules: trait-import
@@ -408,10 +408,10 @@ fn validate_transaction(transaction: &crate::RawSolanaTransactionWire) -> ksp_co
return std::result::Result::Err(crate::material_error("wire"));
}
}
if let std::option::Option::Some(heap_size) = message.config().and_then(crate::RawSolanaTransactionConfig::heap_size) {
if !(32_768..=262_144).contains(&heap_size) || heap_size % 1_024 != 0 {
return std::result::Result::Err(crate::material_error("wire"));
}
if let std::option::Option::Some(heap_size) = message.config().and_then(crate::RawSolanaTransactionConfig::heap_size)
&& (!(32_768..=262_144).contains(&heap_size) || heap_size % 1_024 != 0)
{
return std::result::Result::Err(crate::material_error("wire"));
}
},
}

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-raw-transaction-lib/unit_tests/wire.rs
// version: 1
// version: 2
const LEGACY_GOLDEN_BASE64: &str = "AREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREBAAECISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExAQEBAAKquw==";
const V0_GOLDEN_BASE64: &str = "ARISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhKAAQAAASMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIBAAEBAcwBJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQBAAA=";
@@ -69,10 +69,10 @@ fn pre_006_legacy_v0_and_v1_wire_goldens_are_exact() {
let v0 = crate::serialize_solana_transaction_wire_base64(&v0_wire());
let v1 = crate::serialize_solana_transaction_wire_base64(&v1_wire());
let v1_empty = crate::serialize_solana_transaction_wire_base64(&v1_empty_config_wire());
assert_eq!(legacy.as_deref(), std::result::Result::Ok(LEGACY_GOLDEN_BASE64));
assert_eq!(v0.as_deref(), std::result::Result::Ok(V0_GOLDEN_BASE64));
assert_eq!(v1.as_deref(), std::result::Result::Ok(V1_GOLDEN_BASE64));
assert_eq!(v1_empty.as_deref(), std::result::Result::Ok(V1_EMPTY_CONFIG_GOLDEN_BASE64));
assert!(matches!(legacy.as_deref(), std::result::Result::Ok(value) if value == LEGACY_GOLDEN_BASE64));
assert!(matches!(v0.as_deref(), std::result::Result::Ok(value) if value == V0_GOLDEN_BASE64));
assert!(matches!(v1.as_deref(), std::result::Result::Ok(value) if value == V1_GOLDEN_BASE64));
assert!(matches!(v1_empty.as_deref(), std::result::Result::Ok(value) if value == V1_EMPTY_CONFIG_GOLDEN_BASE64));
let v1_bytes = crate::serialize_solana_transaction_wire(&v1_wire());
assert!(v1_bytes.is_ok());
if let std::result::Result::Ok(v1_bytes) = v1_bytes {