v0.1.0-pre.025

This commit is contained in:
2026-07-25 08:13:05 +02:00
parent f5648ff138
commit f4d024680c
13 changed files with 3729 additions and 57 deletions

View File

@@ -1,5 +1,5 @@
// file: kb-onchain-transport/src/execution_rpc.rs
// version: 7
// version: 8
//! Typed Solana JSON-RPC adapters used by execution orchestration.
@@ -182,10 +182,8 @@ impl crate::GetFeeForMessageConfig {
&self,
encoded_message: &str,
) -> kb_core::Result<std::vec::Vec<serde_json::Value>> {
let validation_result = crate::execution_rpc::validate_base64_payload(
encoded_message,
"getFeeForMessage message",
);
let validation_result =
validate_base64_payload(encoded_message, "getFeeForMessage message");
if let std::result::Result::Err(error) = validation_result {
return std::result::Result::Err(error);
}
@@ -334,10 +332,8 @@ impl crate::SimulateTransactionConfig {
&self,
encoded_transaction: &str,
) -> kb_core::Result<std::vec::Vec<serde_json::Value>> {
let validation_result = crate::execution_rpc::validate_base64_payload(
encoded_transaction,
"simulateTransaction transaction",
);
let validation_result =
validate_base64_payload(encoded_transaction, "simulateTransaction transaction");
if let std::result::Result::Err(error) = validation_result {
return std::result::Result::Err(error);
}
@@ -805,10 +801,8 @@ impl crate::SendTransactionConfig {
&self,
encoded_transaction: &str,
) -> kb_core::Result<std::vec::Vec<serde_json::Value>> {
let validation_result = crate::execution_rpc::validate_base64_payload(
encoded_transaction,
"sendTransaction signed transaction",
);
let validation_result =
validate_base64_payload(encoded_transaction, "sendTransaction signed transaction");
if let std::result::Result::Err(error) = validation_result {
return std::result::Result::Err(error);
}
@@ -1290,7 +1284,7 @@ pub(crate) fn adapt_get_account_info_result_with_data_limit(
));
},
};
let data = match crate::execution_rpc::decode_account_data(value, space, max_data_bytes) {
let data = match decode_account_data(value, space, max_data_bytes) {
std::result::Result::Ok(data) => data,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
@@ -1418,11 +1412,10 @@ pub fn adapt_get_minimum_balance_for_rent_exemption_result(
pub fn adapt_request_airdrop_result(
source: &serde_json::Value,
) -> kb_core::Result<crate::AirdropResult> {
let signature =
match crate::execution_rpc::adapt_signature_result(source, "requestAirdrop result") {
std::result::Result::Ok(signature) => signature,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
let signature = match adapt_signature_result(source, "requestAirdrop result") {
std::result::Result::Ok(signature) => signature,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
return std::result::Result::Ok(crate::AirdropResult { signature });
}
@@ -1438,11 +1431,10 @@ pub fn adapt_send_transaction_result(
if let std::result::Result::Err(error) = expected_validation {
return std::result::Result::Err(error);
}
let signature =
match crate::execution_rpc::adapt_signature_result(source, "sendTransaction result") {
std::result::Result::Ok(signature) => signature,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
let signature = match adapt_signature_result(source, "sendTransaction result") {
std::result::Result::Ok(signature) => signature,
std::result::Result::Err(error) => return std::result::Result::Err(error),
};
if signature != *expected_signature {
return std::result::Result::Err(kb_core::Error::new(
"execution_send_signature_mismatch",
@@ -1970,7 +1962,7 @@ impl crate::HttpEndpointPool {
if let std::option::Option::Some(status) = status {
last_slot = std::option::Option::Some(status.slot);
if let std::option::Option::Some(error) = &status.error {
return std::result::Result::Ok(crate::execution_rpc::confirmation_result(
return std::result::Result::Ok(confirmation_result(
cluster,
signature,
kb_lib::ExApiExecutionConfirmationStatus::Failed,
@@ -1984,10 +1976,8 @@ impl crate::HttpEndpointPool {
std::option::Option::Some(commitment) => commitment,
std::option::Option::None => crate::RpcCommitmentLevel::Processed,
};
if crate::execution_rpc::commitment_reached(observed_commitment, config.commitment)
{
let execution_status =
crate::execution_rpc::execution_confirmation_status(observed_commitment);
if commitment_reached(observed_commitment, config.commitment) {
let execution_status = execution_confirmation_status(observed_commitment);
tracing::info!(
target: crate::TRACING_TARGET,
action = "confirm_transaction",
@@ -1997,7 +1987,7 @@ impl crate::HttpEndpointPool {
confirmation_status = observed_commitment.as_str(),
"transaction reached requested commitment"
);
return std::result::Result::Ok(crate::execution_rpc::confirmation_result(
return std::result::Result::Ok(confirmation_result(
cluster,
signature,
execution_status,
@@ -2019,7 +2009,7 @@ impl crate::HttpEndpointPool {
};
last_observed_block_height = std::option::Option::Some(height.block_height);
if height.block_height > last_valid_block_height {
return std::result::Result::Ok(crate::execution_rpc::confirmation_result(
return std::result::Result::Ok(confirmation_result(
cluster,
signature,
kb_lib::ExApiExecutionConfirmationStatus::Expired,
@@ -2037,7 +2027,7 @@ impl crate::HttpEndpointPool {
tokio::time::sleep(std::time::Duration::from_millis(config.poll_interval_ms)).await;
}
}
return std::result::Result::Ok(crate::execution_rpc::confirmation_result(
return std::result::Result::Ok(confirmation_result(
cluster,
signature,
kb_lib::ExApiExecutionConfirmationStatus::TimedOut,
@@ -2150,8 +2140,7 @@ fn commitment_reached(
observed: crate::RpcCommitmentLevel,
required: crate::RpcCommitmentLevel,
) -> bool {
return crate::execution_rpc::commitment_rank(observed)
>= crate::execution_rpc::commitment_rank(required);
return commitment_rank(observed) >= commitment_rank(required);
}
fn execution_confirmation_status(
@@ -2688,11 +2677,11 @@ mod tests {
let config = crate::ConfirmTransactionConfig::confirmed(100, 500, 20)
.unwrap_or_else(|error| panic!("unexpected error: {error}"));
assert_eq!(config.last_valid_block_height, std::option::Option::Some(100));
assert!(crate::execution_rpc::commitment_reached(
assert!(super::commitment_reached(
crate::RpcCommitmentLevel::Finalized,
crate::RpcCommitmentLevel::Confirmed,
));
assert!(!crate::execution_rpc::commitment_reached(
assert!(!super::commitment_reached(
crate::RpcCommitmentLevel::Processed,
crate::RpcCommitmentLevel::Confirmed,
));