0.7.56
This commit is contained in:
440
validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
Normal file
440
validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
Normal file
@@ -0,0 +1,440 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
|
||||
|
||||
-- 0.7.56 meteora_dbc validation and corpus-seed checklist.
|
||||
-- Run on a dedicated fresh SQLite database for the Meteora DBC tranche.
|
||||
-- Recommended replay settings after each backfill group:
|
||||
-- skipDexDecode=no, forceDexDecode=yes, deferInstructionObservations=yes.
|
||||
-- This file is intentionally read-only: it never mutates the database.
|
||||
|
||||
-- 00. Corpus seed: upstream fallback samples to backfill first.
|
||||
SELECT
|
||||
json_extract(de.payload_json, '$.upstreamEntryName') AS upstream_entry_name,
|
||||
json_extract(de.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
|
||||
json_extract(de.payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS tx_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
WHERE de.protocol_name = 'upstream_git'
|
||||
AND de.event_kind = 'upstream_git.instruction_match'
|
||||
AND json_extract(de.payload_json, '$.upstreamDecoderCode') = 'meteora_dbc'
|
||||
GROUP BY upstream_entry_name, upstream_discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, upstream_entry_name, upstream_discriminator_hex;
|
||||
|
||||
-- 01. Corpus seed: local instruction observations.
|
||||
SELECT
|
||||
instruction_name,
|
||||
discriminator_hex,
|
||||
COUNT(*) AS observed_count,
|
||||
COUNT(DISTINCT signature) AS tx_count,
|
||||
MIN(signature) AS sample_signature
|
||||
FROM k_sol_instruction_observations
|
||||
WHERE decoder_code = 'meteora_dbc'
|
||||
GROUP BY instruction_name, discriminator_hex
|
||||
ORDER BY observed_count DESC, instruction_name, discriminator_hex;
|
||||
|
||||
-- 02. Coverage meteora_dbc.
|
||||
SELECT
|
||||
entry_name,
|
||||
entry_kind,
|
||||
event_family,
|
||||
expected_db_target,
|
||||
proof_status,
|
||||
local_event_kind,
|
||||
discriminator_hex,
|
||||
observed_count,
|
||||
materialized_count,
|
||||
trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'meteora_dbc'
|
||||
ORDER BY entry_kind, entry_name, discriminator_hex;
|
||||
|
||||
-- 03. Decoded events summary.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS tx_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
-- 04. Decoded meteora_dbc events without coverage.
|
||||
-- Target after closure: empty for all locally decoded meteora_dbc rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS tx_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_dex_event_coverage_entries ce
|
||||
ON ce.decoder_code = 'meteora_dbc'
|
||||
AND ce.local_event_kind = de.event_kind
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
AND ce.id IS NULL
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
-- 05. Residual upstream fallback for entries covered locally.
|
||||
-- Target after local promotion: empty for every entry that has a local_event_kind.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS upstream_entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
|
||||
json_extract(ug.payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
ce.local_event_kind,
|
||||
ce.expected_db_target,
|
||||
ce.proof_status,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT ug.transaction_id) AS tx_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events ug
|
||||
LEFT JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = ug.transaction_id
|
||||
JOIN k_sol_dex_event_coverage_entries ce
|
||||
ON ce.decoder_code = json_extract(ug.payload_json, '$.upstreamDecoderCode')
|
||||
AND ce.entry_name = json_extract(ug.payload_json, '$.upstreamEntryName')
|
||||
AND COALESCE(ce.discriminator_hex, '') = COALESCE(json_extract(ug.payload_json, '$.upstreamDiscriminatorHex'), '')
|
||||
AND ce.local_event_kind IS NOT NULL
|
||||
AND ce.local_event_kind <> ''
|
||||
WHERE ug.protocol_name = 'upstream_git'
|
||||
AND ug.event_kind = 'upstream_git.instruction_match'
|
||||
AND json_extract(ug.payload_json, '$.upstreamDecoderCode') = 'meteora_dbc'
|
||||
GROUP BY upstream_entry_name, upstream_discriminator_hex, source_repo, ce.local_event_kind, ce.expected_db_target, ce.proof_status
|
||||
ORDER BY fallback_count DESC, upstream_entry_name;
|
||||
|
||||
-- 06. Successful non-materialized events without explicit skip reason.
|
||||
-- Target after closure: empty. Decoded-only rows must carry skip*Reason or informational/audit policy.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS unexplained_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_launch_events lae
|
||||
ON lae.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_liquidity_events lie
|
||||
ON lie.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fee
|
||||
ON fee.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events rew
|
||||
ON rew.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events adm
|
||||
ON adm.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events obe
|
||||
ON obe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_token_account_events tae
|
||||
ON tae.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
AND (tx.err_json IS NULL OR tx.err_json = '' OR tx.err_json = 'null')
|
||||
AND COALESCE(json_extract(de.payload_json, '$.eventActionability'), '') NOT IN (
|
||||
'informational',
|
||||
'decoded_only_anchor_event',
|
||||
'decoded_only_missing_mint_context',
|
||||
'decoded_only_with_explicit_skip_reason'
|
||||
)
|
||||
AND te.id IS NULL
|
||||
AND lae.id IS NULL
|
||||
AND lie.id IS NULL
|
||||
AND ple.id IS NULL
|
||||
AND fee.id IS NULL
|
||||
AND rew.id IS NULL
|
||||
AND adm.id IS NULL
|
||||
AND obe.id IS NULL
|
||||
AND tae.id IS NULL
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipTradeReason')), '') = ''
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipCandleReason')), '') = ''
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipLiquidityReason')), '') = ''
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipLifecycleReason')), '') = ''
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipCatalogReason')), '') = ''
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipFeeReason')), '') = ''
|
||||
AND COALESCE(TRIM(json_extract(de.payload_json, '$.skipAdminReason')), '') = ''
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY unexplained_count DESC, de.event_kind;
|
||||
|
||||
-- 07. Failed transaction materialization safety.
|
||||
-- Target after closure: empty. Failed transactions may be decoded for audit, but must not be business-materialized.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(DISTINCT de.id) AS decoded_failed_count,
|
||||
COUNT(DISTINCT te.id) AS trade_count,
|
||||
COUNT(DISTINCT lae.id) AS launch_count,
|
||||
COUNT(DISTINCT lie.id) AS liquidity_count,
|
||||
COUNT(DISTINCT ple.id) AS lifecycle_count,
|
||||
COUNT(DISTINCT fee.id) AS fee_count,
|
||||
COUNT(DISTINCT rew.id) AS reward_count,
|
||||
COUNT(DISTINCT adm.id) AS admin_count,
|
||||
COUNT(DISTINCT obe.id) AS orderbook_count,
|
||||
COUNT(DISTINCT tae.id) AS token_account_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_launch_events lae
|
||||
ON lae.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_liquidity_events lie
|
||||
ON lie.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fee
|
||||
ON fee.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events rew
|
||||
ON rew.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events adm
|
||||
ON adm.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events obe
|
||||
ON obe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_token_account_events tae
|
||||
ON tae.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
HAVING trade_count > 0
|
||||
OR launch_count > 0
|
||||
OR liquidity_count > 0
|
||||
OR lifecycle_count > 0
|
||||
OR fee_count > 0
|
||||
OR reward_count > 0
|
||||
OR admin_count > 0
|
||||
OR orderbook_count > 0
|
||||
OR token_account_count > 0
|
||||
ORDER BY decoded_failed_count DESC, de.event_kind;
|
||||
|
||||
-- 08. Multi-target materialization safety.
|
||||
-- Target after closure: empty. One decoded event must not feed several business targets.
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
de.id AS decoded_event_id,
|
||||
de.event_kind,
|
||||
tx.signature,
|
||||
(CASE WHEN te.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN lae.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN lie.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN ple.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN fee.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN rew.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN adm.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN obe.id IS NULL THEN 0 ELSE 1 END)
|
||||
+ (CASE WHEN tae.id IS NULL THEN 0 ELSE 1 END) AS target_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_launch_events lae
|
||||
ON lae.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_liquidity_events lie
|
||||
ON lie.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fee
|
||||
ON fee.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events rew
|
||||
ON rew.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events adm
|
||||
ON adm.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events obe
|
||||
ON obe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_token_account_events tae
|
||||
ON tae.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
)
|
||||
WHERE target_count > 1
|
||||
ORDER BY target_count DESC, event_kind, signature;
|
||||
|
||||
-- 09. Materialization summary by table with successful/failed split.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(DISTINCT de.id) AS decoded_count,
|
||||
COUNT(DISTINCT CASE WHEN tx.err_json IS NULL OR tx.err_json = '' OR tx.err_json = 'null' THEN de.id END) AS successful_decoded_count,
|
||||
COUNT(DISTINCT CASE WHEN tx.err_json IS NOT NULL AND tx.err_json <> '' AND tx.err_json <> 'null' THEN de.id END) AS failed_decoded_count,
|
||||
COUNT(DISTINCT te.id) AS trade_count,
|
||||
COUNT(DISTINCT lie.id) AS liquidity_count,
|
||||
COUNT(DISTINCT ple.id) AS lifecycle_count,
|
||||
COUNT(DISTINCT fee.id) AS fee_count,
|
||||
COUNT(DISTINCT adm.id) AS admin_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_liquidity_events lie
|
||||
ON lie.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fee
|
||||
ON fee.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events adm
|
||||
ON adm.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
-- 10. Instruction observation versus coverage.
|
||||
-- Target after closure: every observed discriminator must map to a known coverage row.
|
||||
SELECT
|
||||
io.instruction_name,
|
||||
io.discriminator_hex,
|
||||
COUNT(*) AS observed_count,
|
||||
MIN(io.signature) AS sample_signature,
|
||||
ce.entry_name,
|
||||
ce.local_event_kind,
|
||||
ce.expected_db_target,
|
||||
ce.proof_status
|
||||
FROM k_sol_instruction_observations io
|
||||
LEFT JOIN k_sol_dex_event_coverage_entries ce
|
||||
ON ce.decoder_code = 'meteora_dbc'
|
||||
AND (
|
||||
ce.discriminator_hex = io.discriminator_hex
|
||||
OR ce.entry_name = io.instruction_name
|
||||
)
|
||||
WHERE io.decoder_code = 'meteora_dbc'
|
||||
GROUP BY io.instruction_name, io.discriminator_hex, ce.entry_name, ce.local_event_kind, ce.expected_db_target, ce.proof_status
|
||||
ORDER BY observed_count DESC, io.instruction_name, io.discriminator_hex;
|
||||
|
||||
-- 11. Anti-faux trade/candle for non-swap events.
|
||||
-- Target after closure: empty.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(DISTINCT te.id) AS trade_count,
|
||||
COUNT(DISTINCT pc.id) AS candle_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pair_candles pc
|
||||
ON pc.pair_id = te.pair_id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
AND de.event_kind NOT IN ('meteora_dbc.swap', 'meteora_dbc.swap2')
|
||||
GROUP BY de.event_kind
|
||||
HAVING trade_count > 0 OR candle_count > 0
|
||||
ORDER BY trade_count DESC, candle_count DESC, de.event_kind;
|
||||
|
||||
-- 12. Global watchlist after replay.
|
||||
-- Target after closure: no meteora_dbc as dominant backlog; unrelated residuals may remain.
|
||||
SELECT
|
||||
COALESCE(json_extract(de.payload_json, '$.upstreamDecoderCode'), de.protocol_name) AS backlog_decoder,
|
||||
de.event_kind,
|
||||
json_extract(de.payload_json, '$.upstreamEntryName') AS upstream_entry_name,
|
||||
json_extract(de.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS tx_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
WHERE de.protocol_name IN ('upstream_git', 'meteora_dbc')
|
||||
GROUP BY backlog_decoder, de.event_kind, upstream_entry_name, upstream_discriminator_hex
|
||||
ORDER BY decoded_count DESC, backlog_decoder, de.event_kind
|
||||
LIMIT 100;
|
||||
|
||||
-- 13. Fee parent/legs summary after 0.7.56 fee model.
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
COUNT(DISTINCT fee.id) AS fee_parent_count,
|
||||
COUNT(DISTINCT CASE
|
||||
WHEN COALESCE(TRIM(fee.fee_token_mint), '') <> ''
|
||||
AND COALESCE(TRIM(fee.fee_amount_raw), '') <> ''
|
||||
THEN fee.id
|
||||
ELSE NULL
|
||||
END) AS parent_with_scalar_amount_count,
|
||||
COUNT(DISTINCT fea.id) AS fee_amount_leg_count,
|
||||
MIN(tx.signature) AS sample_signature
|
||||
FROM k_sol_fee_events fee
|
||||
JOIN k_sol_dex_decoded_events de
|
||||
ON de.id = fee.decoded_event_id
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = fee.transaction_id
|
||||
LEFT JOIN k_sol_fee_event_amounts fea
|
||||
ON fea.fee_event_id = fee.id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
GROUP BY
|
||||
de.protocol_name,
|
||||
de.event_kind
|
||||
ORDER BY
|
||||
de.protocol_name,
|
||||
de.event_kind;
|
||||
|
||||
-- 14. Fee parent scalar without amount leg.
|
||||
-- Target after closure: empty.
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
tx.signature,
|
||||
fee.id AS fee_event_id,
|
||||
fee.fee_token_mint,
|
||||
fee.fee_amount_raw,
|
||||
fee.payload_json
|
||||
FROM k_sol_fee_events fee
|
||||
JOIN k_sol_dex_decoded_events de
|
||||
ON de.id = fee.decoded_event_id
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = fee.transaction_id
|
||||
LEFT JOIN k_sol_fee_event_amounts fea
|
||||
ON fea.fee_event_id = fee.id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
AND COALESCE(TRIM(fee.fee_token_mint), '') <> ''
|
||||
AND COALESCE(TRIM(fee.fee_amount_raw), '') <> ''
|
||||
AND fea.id IS NULL
|
||||
ORDER BY
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
tx.signature
|
||||
LIMIT 100;
|
||||
|
||||
-- 15. Orphan fee amount legs.
|
||||
-- Target after closure: empty.
|
||||
SELECT
|
||||
fea.id,
|
||||
fea.fee_event_id,
|
||||
fea.transaction_id,
|
||||
fea.decoded_event_id
|
||||
FROM k_sol_fee_event_amounts fea
|
||||
LEFT JOIN k_sol_fee_events fee
|
||||
ON fee.id = fea.fee_event_id
|
||||
WHERE fee.id IS NULL;
|
||||
|
||||
-- 16. Generic allowlisted recovery must not be used by DBC.
|
||||
-- Target after closure: empty; DBC uses protocol-specific fee recovery paths.
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
tx.signature,
|
||||
fee.id AS fee_event_id,
|
||||
fea.leg_index,
|
||||
fea.token_mint,
|
||||
fea.amount_raw,
|
||||
fea.amount_source
|
||||
FROM k_sol_fee_event_amounts fea
|
||||
JOIN k_sol_fee_events fee
|
||||
ON fee.id = fea.fee_event_id
|
||||
JOIN k_sol_dex_decoded_events de
|
||||
ON de.id = fee.decoded_event_id
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = fee.transaction_id
|
||||
WHERE de.protocol_name = 'meteora_dbc'
|
||||
AND fea.amount_source = 'allowlisted_inner_spl_transfer'
|
||||
ORDER BY
|
||||
de.event_kind,
|
||||
tx.signature,
|
||||
fea.leg_index;
|
||||
Reference in New Issue
Block a user