0.7.54
This commit is contained in:
@@ -318,6 +318,9 @@ fn infer_expected_db_target_for_entry(
|
||||
if decoder_code == "pump_swap" {
|
||||
return infer_pump_swap_expected_db_target(entry_name, entry_kind);
|
||||
}
|
||||
if decoder_code == "pump_fun" {
|
||||
return infer_pump_fun_expected_db_target(entry_name, entry_kind);
|
||||
}
|
||||
if decoder_code == "raydium_cpmm"
|
||||
&& (entry_name == "swap_event" || entry_name == "anchor_idl_instruction")
|
||||
{
|
||||
@@ -524,6 +527,104 @@ fn infer_expected_db_target(
|
||||
return Some(target.to_string());
|
||||
}
|
||||
|
||||
fn infer_pump_fun_expected_db_target(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if entry_kind == crate::ENTRY_KIND_PROGRAM {
|
||||
return None;
|
||||
}
|
||||
if entry_name == "buy"
|
||||
|| entry_name == "sell"
|
||||
|| entry_name == "buy_v2"
|
||||
|| entry_name == "sell_v2"
|
||||
|| entry_name == "buy_exact_sol_in"
|
||||
|| entry_name == "buy_exact_quote_in_v2"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_TRADE_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "trade_event" {
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_TRADE_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "create"
|
||||
|| entry_name == "create_event"
|
||||
|| entry_name == "create_v2"
|
||||
|| entry_name == "create_v2_token"
|
||||
|| entry_name == "complete_event"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "initialize" {
|
||||
return Some(
|
||||
crate::DexEventCoverageEntryDto::DB_TARGET_POOL_LIFECYCLE_EVENTS.to_string(),
|
||||
);
|
||||
}
|
||||
if entry_name == "migrate"
|
||||
|| entry_name == "migrate_v2"
|
||||
|| entry_name == "migrate_bonding_curve_creator"
|
||||
|| entry_name == "migrate_bonding_curve_creator_event"
|
||||
|| entry_name == "complete_pump_amm_migration_event"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "collect_creator_fee"
|
||||
|| entry_name == "collect_creator_fee_v2"
|
||||
|| entry_name == "collect_creator_fee_event"
|
||||
|| entry_name == "distribute_creator_fees"
|
||||
|| entry_name == "distribute_creator_fees_v2"
|
||||
|| entry_name == "distribute_creator_fees_event"
|
||||
|| entry_name == "get_minimum_distributable_fee"
|
||||
|| entry_name == "minimum_distributable_fee_event"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_FEE_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "claim_cashback"
|
||||
|| entry_name == "claim_cashback_v2"
|
||||
|| entry_name == "claim_cashback_event"
|
||||
|| entry_name == "claim_token_incentives"
|
||||
|| entry_name == "claim_token_incentives_event"
|
||||
|| entry_name == "admin_update_token_incentives"
|
||||
|| entry_name == "admin_update_token_incentives_event"
|
||||
|| entry_name == "init_user_volume_accumulator"
|
||||
|| entry_name == "init_user_volume_accumulator_event"
|
||||
|| entry_name == "sync_user_volume_accumulator"
|
||||
|| entry_name == "sync_user_volume_accumulator_event"
|
||||
|| entry_name == "close_user_volume_accumulator"
|
||||
|| entry_name == "close_user_volume_accumulator_event"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_REWARD_EVENTS.to_string());
|
||||
}
|
||||
if entry_name == "admin_set_creator"
|
||||
|| entry_name == "admin_set_creator_event"
|
||||
|| entry_name == "admin_set_idl_authority"
|
||||
|| entry_name == "admin_set_idl_authority_event"
|
||||
|| entry_name == "add_quote_mint"
|
||||
|| entry_name == "remove_quote_mint"
|
||||
|| entry_name == "extend_account"
|
||||
|| entry_name == "extend_account_event"
|
||||
|| entry_name == "set_creator"
|
||||
|| entry_name == "set_creator_event"
|
||||
|| entry_name == "set_mayhem_virtual_params"
|
||||
|| entry_name == "update_mayhem_virtual_params_event"
|
||||
|| entry_name == "set_metaplex_creator"
|
||||
|| entry_name == "set_metaplex_creator_event"
|
||||
|| entry_name == "set_params"
|
||||
|| entry_name == "set_params_event"
|
||||
|| entry_name == "set_reserved_fee_recipients"
|
||||
|| entry_name == "reserved_fee_recipients_event"
|
||||
|| entry_name == "set_virtual_quote_reserves"
|
||||
|| entry_name == "toggle_cashback_enabled"
|
||||
|| entry_name == "toggle_create_v2"
|
||||
|| entry_name == "toggle_mayhem_mode"
|
||||
|| entry_name == "update_buyback_config"
|
||||
|| entry_name == "update_global_authority"
|
||||
|| entry_name == "update_global_authority_event"
|
||||
{
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_POOL_ADMIN_EVENTS.to_string());
|
||||
}
|
||||
return Some(crate::DexEventCoverageEntryDto::DB_TARGET_DECODED_EVENTS_ONLY.to_string());
|
||||
}
|
||||
|
||||
fn infer_pump_swap_expected_db_target(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
@@ -654,6 +755,161 @@ fn infer_pump_swap_event_family(
|
||||
return infer_event_family(entry_name, entry_kind);
|
||||
}
|
||||
|
||||
fn infer_pump_fun_event_family(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if entry_kind == crate::ENTRY_KIND_PROGRAM {
|
||||
return None;
|
||||
}
|
||||
match entry_name {
|
||||
"buy"
|
||||
| "sell"
|
||||
| "buy_v2"
|
||||
| "sell_v2"
|
||||
| "buy_exact_quote_in_v2"
|
||||
| "buy_exact_sol_in"
|
||||
| "trade_event" => return Some("swap".to_string()),
|
||||
"create" | "create_event" | "create_v2" | "create_v2_token" | "complete_event" => {
|
||||
return Some("launch".to_string());
|
||||
},
|
||||
"migrate"
|
||||
| "migrate_v2"
|
||||
| "migrate_bonding_curve_creator"
|
||||
| "migrate_bonding_curve_creator_event"
|
||||
| "complete_pump_amm_migration_event" => return Some("migration".to_string()),
|
||||
"claim_cashback"
|
||||
| "claim_cashback_v2"
|
||||
| "claim_cashback_event"
|
||||
| "claim_token_incentives"
|
||||
| "claim_token_incentives_event"
|
||||
| "admin_update_token_incentives"
|
||||
| "admin_update_token_incentives_event"
|
||||
| "init_user_volume_accumulator"
|
||||
| "init_user_volume_accumulator_event"
|
||||
| "sync_user_volume_accumulator"
|
||||
| "sync_user_volume_accumulator_event"
|
||||
| "close_user_volume_accumulator"
|
||||
| "close_user_volume_accumulator_event" => return Some("reward".to_string()),
|
||||
"collect_creator_fee"
|
||||
| "collect_creator_fee_v2"
|
||||
| "collect_creator_fee_event"
|
||||
| "distribute_creator_fees"
|
||||
| "distribute_creator_fees_v2"
|
||||
| "distribute_creator_fees_event"
|
||||
| "get_minimum_distributable_fee"
|
||||
| "minimum_distributable_fee_event" => return Some("fee".to_string()),
|
||||
"add_quote_mint"
|
||||
| "remove_quote_mint"
|
||||
| "admin_set_creator"
|
||||
| "admin_set_creator_event"
|
||||
| "admin_set_idl_authority"
|
||||
| "admin_set_idl_authority_event"
|
||||
| "extend_account"
|
||||
| "extend_account_event"
|
||||
| "set_creator"
|
||||
| "set_creator_event"
|
||||
| "set_mayhem_virtual_params"
|
||||
| "update_mayhem_virtual_params_event"
|
||||
| "set_metaplex_creator"
|
||||
| "set_metaplex_creator_event"
|
||||
| "set_params"
|
||||
| "set_params_event"
|
||||
| "set_reserved_fee_recipients"
|
||||
| "reserved_fee_recipients_event"
|
||||
| "set_virtual_quote_reserves"
|
||||
| "toggle_cashback_enabled"
|
||||
| "toggle_create_v2"
|
||||
| "toggle_mayhem_mode"
|
||||
| "update_buyback_config"
|
||||
| "update_global_authority"
|
||||
| "update_global_authority_event" => return Some("admin_config".to_string()),
|
||||
"initialize" => return Some("pool_create".to_string()),
|
||||
_ => return infer_event_family(entry_name, entry_kind),
|
||||
}
|
||||
}
|
||||
|
||||
fn pump_fun_local_event_kind(entry_name: &str) -> std::option::Option<std::string::String> {
|
||||
if entry_name.ends_with("_event") {
|
||||
return Some(format!("pump_fun.{}", entry_name));
|
||||
}
|
||||
match entry_name {
|
||||
"buy" => return Some("pump_fun.buy".to_string()),
|
||||
"sell" => return Some("pump_fun.sell".to_string()),
|
||||
"create_v2" => return Some("pump_fun.create_v2_token".to_string()),
|
||||
"add_quote_mint" => return Some("pump_fun.add_quote_mint".to_string()),
|
||||
"admin_set_creator" => return Some("pump_fun.admin_set_creator".to_string()),
|
||||
"admin_set_idl_authority" => {
|
||||
return Some("pump_fun.admin_set_idl_authority".to_string());
|
||||
},
|
||||
"admin_update_token_incentives" => {
|
||||
return Some("pump_fun.admin_update_token_incentives".to_string());
|
||||
},
|
||||
"buy_exact_quote_in_v2" => {
|
||||
return Some("pump_fun.buy_exact_quote_in_v2".to_string());
|
||||
},
|
||||
"buy_exact_sol_in" => return Some("pump_fun.buy_exact_sol_in".to_string()),
|
||||
"buy_v2" => return Some("pump_fun.buy_v2".to_string()),
|
||||
"claim_cashback" => return Some("pump_fun.claim_cashback".to_string()),
|
||||
"claim_cashback_v2" => return Some("pump_fun.claim_cashback_v2".to_string()),
|
||||
"claim_token_incentives" => {
|
||||
return Some("pump_fun.claim_token_incentives".to_string());
|
||||
},
|
||||
"close_user_volume_accumulator" => {
|
||||
return Some("pump_fun.close_user_volume_accumulator".to_string());
|
||||
},
|
||||
"collect_creator_fee" => return Some("pump_fun.collect_creator_fee".to_string()),
|
||||
"collect_creator_fee_v2" => return Some("pump_fun.collect_creator_fee_v2".to_string()),
|
||||
"create" => return Some("pump_fun.create".to_string()),
|
||||
"distribute_creator_fees" => {
|
||||
return Some("pump_fun.distribute_creator_fees".to_string());
|
||||
},
|
||||
"distribute_creator_fees_v2" => {
|
||||
return Some("pump_fun.distribute_creator_fees_v2".to_string());
|
||||
},
|
||||
"extend_account" => return Some("pump_fun.extend_account".to_string()),
|
||||
"get_minimum_distributable_fee" => {
|
||||
return Some("pump_fun.get_minimum_distributable_fee".to_string());
|
||||
},
|
||||
"init_user_volume_accumulator" => {
|
||||
return Some("pump_fun.init_user_volume_accumulator".to_string());
|
||||
},
|
||||
"initialize" => return Some("pump_fun.initialize".to_string()),
|
||||
"migrate" => return Some("pump_fun.migrate".to_string()),
|
||||
"migrate_bonding_curve_creator" => {
|
||||
return Some("pump_fun.migrate_bonding_curve_creator".to_string());
|
||||
},
|
||||
"migrate_v2" => return Some("pump_fun.migrate_v2".to_string()),
|
||||
"remove_quote_mint" => return Some("pump_fun.remove_quote_mint".to_string()),
|
||||
"sell_v2" => return Some("pump_fun.sell_v2".to_string()),
|
||||
"set_creator" => return Some("pump_fun.set_creator".to_string()),
|
||||
"set_mayhem_virtual_params" => {
|
||||
return Some("pump_fun.set_mayhem_virtual_params".to_string());
|
||||
},
|
||||
"set_metaplex_creator" => return Some("pump_fun.set_metaplex_creator".to_string()),
|
||||
"set_params" => return Some("pump_fun.set_params".to_string()),
|
||||
"set_reserved_fee_recipients" => {
|
||||
return Some("pump_fun.set_reserved_fee_recipients".to_string());
|
||||
},
|
||||
"set_virtual_quote_reserves" => {
|
||||
return Some("pump_fun.set_virtual_quote_reserves".to_string());
|
||||
},
|
||||
"sync_user_volume_accumulator" => {
|
||||
return Some("pump_fun.sync_user_volume_accumulator".to_string());
|
||||
},
|
||||
"toggle_cashback_enabled" => {
|
||||
return Some("pump_fun.toggle_cashback_enabled".to_string());
|
||||
},
|
||||
"toggle_create_v2" => return Some("pump_fun.toggle_create_v2".to_string()),
|
||||
"toggle_mayhem_mode" => return Some("pump_fun.toggle_mayhem_mode".to_string()),
|
||||
"update_buyback_config" => return Some("pump_fun.update_buyback_config".to_string()),
|
||||
"update_global_authority" => {
|
||||
return Some("pump_fun.update_global_authority".to_string());
|
||||
},
|
||||
_ => return None,
|
||||
}
|
||||
}
|
||||
|
||||
fn pump_swap_local_event_kind(entry_name: &str) -> std::option::Option<std::string::String> {
|
||||
if entry_name.ends_with("_event") {
|
||||
return Some(format!("pump_swap.{}", entry_name));
|
||||
@@ -716,6 +972,9 @@ fn infer_event_family_for_entry(
|
||||
entry_name: &str,
|
||||
entry_kind: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if decoder_code == "pump_fun" {
|
||||
return infer_pump_fun_event_family(entry_name, entry_kind);
|
||||
}
|
||||
if decoder_code == "pump_swap" {
|
||||
return infer_pump_swap_event_family(entry_name, entry_kind);
|
||||
}
|
||||
@@ -1110,6 +1369,9 @@ pub(crate) fn known_local_event_kind(
|
||||
decoder_code: &str,
|
||||
entry_name: &str,
|
||||
) -> std::option::Option<std::string::String> {
|
||||
if decoder_code == "pump_fun" {
|
||||
return pump_fun_local_event_kind(entry_name);
|
||||
}
|
||||
if decoder_code == "pump_swap" {
|
||||
return pump_swap_local_event_kind(entry_name);
|
||||
}
|
||||
@@ -1488,6 +1750,85 @@ mod tests {
|
||||
Some("raydium_clmm.pool_created_event".to_string())
|
||||
);
|
||||
}
|
||||
#[test]
|
||||
fn pump_fun_coverage_maps_local_idl_and_audit_entries() {
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("pump_fun", "buy"),
|
||||
Some("pump_fun.buy".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("pump_fun", "create_v2"),
|
||||
Some("pump_fun.create_v2_token".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("pump_fun", "buy_v2"),
|
||||
Some("pump_fun.buy_v2".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("pump_fun", "collect_creator_fee_v2"),
|
||||
Some("pump_fun.collect_creator_fee_v2".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("pump_fun", "trade_event"),
|
||||
Some("pump_fun.trade_event".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::known_local_event_kind("pump_fun", "claim_cashback_event"),
|
||||
Some("pump_fun.claim_cashback_event".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry("pump_fun", "create_event", crate::ENTRY_KIND_EVENT),
|
||||
Some("launch".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"pump_fun",
|
||||
"set_metaplex_creator_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("admin_config".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry(
|
||||
"pump_fun",
|
||||
"claim_token_incentives_event",
|
||||
crate::ENTRY_KIND_EVENT,
|
||||
),
|
||||
Some("reward".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_event_family_for_entry("pump_fun", "buy_v2", crate::ENTRY_KIND_INSTRUCTION),
|
||||
Some("swap".to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target_for_entry(
|
||||
"pump_fun",
|
||||
"buy",
|
||||
Some("swap"),
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_TRADE_EVENTS.to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target_for_entry(
|
||||
"pump_fun",
|
||||
"buy_v2",
|
||||
Some("swap"),
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_TRADE_EVENTS.to_string())
|
||||
);
|
||||
assert_eq!(
|
||||
super::infer_expected_db_target_for_entry(
|
||||
"pump_fun",
|
||||
"create_v2",
|
||||
Some("launch"),
|
||||
crate::ENTRY_KIND_INSTRUCTION,
|
||||
),
|
||||
Some(crate::DexEventCoverageEntryDto::DB_TARGET_LAUNCH_EVENTS.to_string())
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn launchpad_swap_instructions_materialize_as_launch_events_without_duplicate_trades() {
|
||||
assert_eq!(
|
||||
|
||||
Reference in New Issue
Block a user