This commit is contained in:
2026-04-29 17:18:35 +02:00
parent f8a2309173
commit 0b36caf77d
17 changed files with 1593 additions and 11 deletions

View File

@@ -105,6 +105,7 @@ pub struct KbTransactionResolutionService {
launch_origin_service: crate::KbLaunchOriginService,
pool_origin_service: crate::KbPoolOriginService,
wallet_observation_service: crate::KbWalletObservationService,
trade_aggregation_service: crate::KbTradeAggregationService,
resolved_signatures:
std::sync::Arc<tokio::sync::Mutex<std::collections::HashSet<std::string::String>>>,
}
@@ -123,6 +124,7 @@ impl KbTransactionResolutionService {
let launch_origin_service = crate::KbLaunchOriginService::new(database.clone());
let pool_origin_service = crate::KbPoolOriginService::new(database.clone());
let wallet_observation_service = crate::KbWalletObservationService::new(database.clone());
let trade_aggregation_service = crate::KbTradeAggregationService::new(database.clone());
Self {
http_pool,
persistence,
@@ -133,6 +135,7 @@ impl KbTransactionResolutionService {
launch_origin_service,
pool_origin_service,
wallet_observation_service,
trade_aggregation_service,
resolved_signatures: std::sync::Arc::new(tokio::sync::Mutex::new(
std::collections::HashSet::new(),
)),
@@ -318,6 +321,11 @@ impl KbTransactionResolutionService {
.dex_detect_service
.detect_transaction_by_signature(request.signature.as_str())
.await;
let detection_results = match detection_results_result {
Ok(detection_results) => detection_results,
Err(error) => return Err(error),
};
let detected_object_count = detection_results.len();
let launch_attributions_result = self
.launch_origin_service
.attribute_transaction_by_signature(request.signature.as_str())
@@ -345,11 +353,15 @@ impl KbTransactionResolutionService {
Err(error) => return Err(error),
};
let wallet_participation_count = wallet_observations.len();
let detection_results = match detection_results_result {
Ok(detection_results) => detection_results,
let trade_aggregations_result = self
.trade_aggregation_service
.record_transaction_by_signature(request.signature.as_str())
.await;
let trade_aggregations = match trade_aggregations_result {
Ok(trade_aggregations) => trade_aggregations,
Err(error) => return Err(error),
};
let detected_object_count = detection_results.len();
let trade_event_count = trade_aggregations.len();
let payload = serde_json::json!({
"status": "resolved",
"signature": request.signature.clone(),
@@ -362,6 +374,7 @@ impl KbTransactionResolutionService {
"launchAttributionCount": launch_attribution_count,
"poolOriginCount": pool_origin_count,
"walletParticipationCount": wallet_participation_count,
"tradeEventCount": trade_event_count,
"triggerPayload": request.trigger_payload.clone(),
"transaction": transaction_value
});