v0.1.0-pre.025
This commit is contained in:
@@ -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,
|
||||
));
|
||||
|
||||
Reference in New Issue
Block a user