v0.3.13-pre.004-fix.001
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-worker-raw-transaction-ingest-lib/src/runtime_resources.rs
|
||||
// version: 15
|
||||
// version: 16
|
||||
|
||||
use sha2::Digest; // rust-rules: trait-import
|
||||
|
||||
@@ -1567,17 +1567,30 @@ fn build_standard_block_material_from_transaction(
|
||||
return std::result::Result::Err(crate::runtime_error("source.standard_block_transaction_encoding_invalid"));
|
||||
},
|
||||
};
|
||||
return build_standard_block_material(network, slot, block_time, transaction_data, transaction.meta(), transaction.version(), position);
|
||||
return build_standard_block_material(transaction.version(), position, |version, transaction_index| {
|
||||
let material = ksp_raw_transaction_lib::RawTransactionMaterial::binary_base64_with_embedded_signature(
|
||||
network.clone(),
|
||||
slot,
|
||||
block_time,
|
||||
transaction_data,
|
||||
map_hydration_wire_field(transaction.meta(), |value| return value.clone()),
|
||||
version,
|
||||
transaction_index,
|
||||
);
|
||||
return match material {
|
||||
std::result::Result::Ok(value) => std::result::Result::Ok(value),
|
||||
std::result::Result::Err(_) => std::result::Result::Err(crate::runtime_error("source.standard_block_transaction_signature_invalid")),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
fn build_standard_block_material(
|
||||
network: &ksp_store_lib::RawNetworkId,
|
||||
slot: u64,
|
||||
block_time: std::option::Option<i64>,
|
||||
transaction_data: &str,
|
||||
meta: &ksp_onchain_transport_lib::SolanaWireField<serde_json::Value>,
|
||||
version: &ksp_onchain_transport_lib::SolanaWireField<ksp_onchain_transport_lib::SolanaTransactionVersion>,
|
||||
position: usize,
|
||||
build_material: impl std::ops::FnOnce(
|
||||
ksp_raw_transaction_lib::RawTransactionWireField<ksp_raw_transaction_lib::RawTransactionVersion>,
|
||||
ksp_raw_transaction_lib::RawTransactionWireField<u32>,
|
||||
) -> ksp_core_lib::Result<ksp_raw_transaction_lib::RawTransactionMaterial>,
|
||||
) -> ksp_core_lib::Result<ksp_raw_transaction_lib::RawTransactionMaterial> {
|
||||
let version = qualify_standard_block_version(version);
|
||||
let version = match version {
|
||||
@@ -1588,19 +1601,7 @@ fn build_standard_block_material(
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(_) => return std::result::Result::Err(crate::runtime_error("source.standard_block_transaction_index_invalid")),
|
||||
};
|
||||
let material = ksp_raw_transaction_lib::RawTransactionMaterial::binary_base64_with_embedded_signature(
|
||||
network.clone(),
|
||||
slot,
|
||||
block_time,
|
||||
transaction_data,
|
||||
map_hydration_wire_field(meta, |value| return value.clone()),
|
||||
version,
|
||||
ksp_raw_transaction_lib::RawTransactionWireField::Value(transaction_index),
|
||||
);
|
||||
return match material {
|
||||
std::result::Result::Ok(value) => std::result::Result::Ok(value),
|
||||
std::result::Result::Err(_) => std::result::Result::Err(crate::runtime_error("source.standard_block_transaction_signature_invalid")),
|
||||
};
|
||||
return build_material(version, ksp_raw_transaction_lib::RawTransactionWireField::Value(transaction_index));
|
||||
}
|
||||
|
||||
fn qualify_standard_block_version(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-worker-raw-transaction-ingest-lib/unit_tests/runtime_resources.rs
|
||||
// version: 15
|
||||
// version: 16
|
||||
|
||||
fn grpc_endpoint(cluster: &str) -> std::option::Option<ksp_onchain_transport_lib::YellowstoneGrpcEndpointSettings> {
|
||||
return grpc_endpoint_with_identity(cluster, "yellowstone-fixture", "fixture-provider");
|
||||
@@ -2006,13 +2006,19 @@ fn v0_3_13_pre_004_legacy_v0_v1_block_materials_are_direct_common_raw_with_exact
|
||||
std::result::Result::Err(_) => return,
|
||||
};
|
||||
let material = super::build_standard_block_material(
|
||||
&network,
|
||||
430_000_123,
|
||||
std::option::Option::Some(1_787_072_400),
|
||||
encoded.as_str(),
|
||||
&ksp_onchain_transport_lib::SolanaWireField::Value(serde_json::json!({"err":null,"fee":5000})),
|
||||
&ksp_onchain_transport_lib::SolanaWireField::Value(version),
|
||||
position,
|
||||
|qualified_version, transaction_index| {
|
||||
return ksp_raw_transaction_lib::RawTransactionMaterial::binary_base64_with_embedded_signature(
|
||||
network.clone(),
|
||||
430_000_123,
|
||||
std::option::Option::Some(1_787_072_400),
|
||||
encoded.as_str(),
|
||||
ksp_raw_transaction_lib::RawTransactionWireField::Null,
|
||||
qualified_version,
|
||||
transaction_index,
|
||||
);
|
||||
},
|
||||
);
|
||||
let material = match material {
|
||||
std::result::Result::Ok(value) => value,
|
||||
|
||||
Reference in New Issue
Block a user