0.7.49
This commit is contained in:
132
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49.sql
Normal file
132
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49.sql
|
||||
-- Raydium CLMM final validation SQL for 0.7.49.
|
||||
|
||||
-- 1. CLMM coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Residual CLMM instruction audits. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 3. Redundant upstream fallback matches for locally covered CLMM entries. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(ug.payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT ug.transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events ug
|
||||
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 ce.discriminator_hex = 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') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 4. Instruction-observation links still pointing to redundant upstream fallback rows. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
|
||||
COUNT(*) AS linked_observation_count
|
||||
FROM k_sol_instruction_observations io
|
||||
JOIN k_sol_dex_decoded_events ug
|
||||
ON ug.id = io.decoded_event_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 ce.discriminator_hex = 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') = 'raydium_clmm'
|
||||
GROUP BY
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode'),
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName'),
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex')
|
||||
ORDER BY linked_observation_count DESC, entry_name;
|
||||
|
||||
-- 5. Any non-swap CLMM trade. Expected: zero rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind NOT IN (
|
||||
'raydium_clmm.swap',
|
||||
'raydium_clmm.swap_v2'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
HAVING COUNT(te.id) > 0
|
||||
ORDER BY trade_count DESC, de.event_kind;
|
||||
|
||||
-- 6. Failed transaction materialization guard. Expected: zero rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
HAVING
|
||||
COUNT(le.id) > 0
|
||||
OR COUNT(fe.id) > 0
|
||||
OR COUNT(re.id) > 0
|
||||
OR COUNT(pa.id) > 0
|
||||
OR COUNT(ple.id) > 0
|
||||
OR COUNT(oe.id) > 0
|
||||
OR COUNT(te.id) > 0
|
||||
ORDER BY de.event_kind;
|
||||
111
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE10.sql
Normal file
111
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE10.sql
Normal file
@@ -0,0 +1,111 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE10.sql
|
||||
-- Raydium CLMM validation after pre.10 mapped instruction expansion.
|
||||
|
||||
-- 1. Coverage rows.
|
||||
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 = 'raydium_clmm'
|
||||
ORDER BY entry_kind, entry_name, discriminator_hex;
|
||||
|
||||
-- 2. Coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 3. Instruction observations, including unknown discriminants.
|
||||
SELECT
|
||||
instruction_name,
|
||||
discriminator_hex,
|
||||
COUNT(*) AS observed_count,
|
||||
COUNT(DISTINCT signature) AS tx_count
|
||||
FROM k_sol_instruction_observations
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY instruction_name, discriminator_hex
|
||||
ORDER BY observed_count DESC, instruction_name;
|
||||
|
||||
-- 4. Decoded CLMM distribution. After pre.10, known listed instructions should move
|
||||
-- from raydium_clmm.instruction_audit to named raydium_clmm.<instruction> events.
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.protocol_name, de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
-- 5. Non-trade materialization distribution.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 6. Residual known CLMM instruction audits: should be zero for listed instruction discriminants.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
AND json_extract(payload_json, '$.discriminatorHex') IN (
|
||||
'4c7c800fd55725fa', '7b86510031446262', 'c975989055556cb2',
|
||||
'a78a4e95dfc2067e', '8888fcddc2427e59', '12eda6c52210d590',
|
||||
'8934edd4d7756c68', '2b44d4a7592fa401', 'bd0eb5785576e33e',
|
||||
'3f5794216d230868', 'e992d18ecf6840bc', '11fb415c88f20ea9',
|
||||
'a026d06f685b2c01', '3a7fbc3e4f52c460', '2e9cf3760dcdfbb2',
|
||||
'851d59df45eeb00a', '5f87c0c4f281e644', '87802f4d0f98f031',
|
||||
'4db84ad67056f1c7', '4dffae527d1dc92e', '7034a74b20c9d389',
|
||||
'cd4e74215c691a60', 'f8c69e91e17587c8', '457d73daf5baf2c4',
|
||||
'2b04ed0b1ac91e62', '07160c53f22b3079', '313cae889a1c74c8',
|
||||
'7f467728bce33d07', '82576c062ee0757b', 'a3ace0340b9a6adf'
|
||||
)
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY decoded_count DESC;
|
||||
|
||||
-- 7. Unknown observed discriminants to keep audit-only until identified.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
json_extract(payload_json, '$.accountCount') AS account_count,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, account_count
|
||||
ORDER BY decoded_count DESC;
|
||||
100
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE11.sql
Normal file
100
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE11.sql
Normal file
@@ -0,0 +1,100 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE11.sql
|
||||
-- Raydium CLMM validation after 0.7.49-pre.11.
|
||||
|
||||
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 = 'raydium_clmm'
|
||||
ORDER BY entry_kind, entry_name, discriminator_hex;
|
||||
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.protocol_name, de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- Residual duplicated audits: should only return unknown/unmapped discriminators
|
||||
-- or known discriminators for which no same-transaction named event exists.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT audit.transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- Duplicated known audits that still have a named CLMM event in the same transaction.
|
||||
-- Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
71
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE12.sql
Normal file
71
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE12.sql
Normal file
@@ -0,0 +1,71 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE12.sql
|
||||
-- Raydium CLMM pre.12 validation: residual audit cleanup and materialization counters.
|
||||
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
77
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE13.sql
Normal file
77
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE13.sql
Normal file
@@ -0,0 +1,77 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE13.sql
|
||||
-- Raydium CLMM validation after pre.13 audit cleanup.
|
||||
|
||||
-- 1. CLMM coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Duplicate audit rows that should have been deleted.
|
||||
-- Expected result after pre.13: zero rows.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
|
||||
-- 3. Residual instruction audits by discriminator.
|
||||
-- Expected after pre.13: mostly the true unmapped values, currently 759d..., 9d20..., b190...
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 4. CLMM materialization distribution.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
78
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE14.sql
Normal file
78
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE14.sql
Normal file
@@ -0,0 +1,78 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE14.sql
|
||||
-- Raydium CLMM validation after pre.14 EXISTS-based audit cleanup.
|
||||
|
||||
-- 1. Coverage summary should not be reset to zero.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Duplicate audit rows. Expected: zero rows after pre.14.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
|
||||
-- 3. Residual audits should mostly be unknown discriminants.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 4. Manual cleanup equivalent for emergency diagnosis only.
|
||||
-- Do not run unless the application cleanup still fails; keep it here to compare SQL behavior.
|
||||
-- DELETE FROM k_sol_dex_decoded_events
|
||||
-- WHERE protocol_name = 'raydium_clmm'
|
||||
-- AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
-- AND EXISTS (
|
||||
-- SELECT 1
|
||||
-- FROM k_sol_dex_decoded_events named
|
||||
-- WHERE named.transaction_id = k_sol_dex_decoded_events.transaction_id
|
||||
-- AND named.protocol_name = 'raydium_clmm'
|
||||
-- AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
-- AND COALESCE(
|
||||
-- json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
-- json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
-- json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
-- json_extract(named.payload_json, '$.discriminator_hex')
|
||||
-- ) = COALESCE(
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.discriminatorHex'),
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.discriminator_hex'),
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.instructionDiscriminatorHex'),
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.instruction_discriminator_hex')
|
||||
-- )
|
||||
-- );
|
||||
77
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE15.sql
Normal file
77
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE15.sql
Normal file
@@ -0,0 +1,77 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE15.sql
|
||||
-- Raydium CLMM validation after pre.15 final-refresh audit cleanup.
|
||||
|
||||
-- 1. Coverage summary should stay populated after cleanup + refresh.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Duplicate audit rows should be zero after pre.15.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
|
||||
-- 3. Residual audits should mostly be unknown discriminants.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 4. Manual cleanup equivalent: run only if query 2 still returns rows.
|
||||
-- DELETE FROM k_sol_dex_decoded_events
|
||||
-- WHERE protocol_name = 'raydium_clmm'
|
||||
-- AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
-- AND EXISTS (
|
||||
-- SELECT 1
|
||||
-- FROM k_sol_dex_decoded_events named
|
||||
-- WHERE named.transaction_id = k_sol_dex_decoded_events.transaction_id
|
||||
-- AND named.protocol_name = 'raydium_clmm'
|
||||
-- AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
-- AND COALESCE(
|
||||
-- json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
-- json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
-- json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
-- json_extract(named.payload_json, '$.discriminator_hex')
|
||||
-- ) = COALESCE(
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.discriminatorHex'),
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.discriminator_hex'),
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.instructionDiscriminatorHex'),
|
||||
-- json_extract(k_sol_dex_decoded_events.payload_json, '$.instruction_discriminator_hex')
|
||||
-- )
|
||||
-- );
|
||||
76
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE16.sql
Normal file
76
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE16.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE16.sql
|
||||
-- Raydium CLMM validation after pre.16 mapped-audit allow-list cleanup.
|
||||
|
||||
-- 1. Coverage summary must stay populated.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Duplicate audit rows should be zero.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
|
||||
-- 3. Residual audits should be dominated by unknown discriminants.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 4. Manual cleanup equivalent for immediate diagnosis only.
|
||||
-- DELETE FROM k_sol_dex_decoded_events
|
||||
-- WHERE protocol_name = 'raydium_clmm'
|
||||
-- AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
-- AND COALESCE(
|
||||
-- json_extract(payload_json, '$.discriminatorHex'),
|
||||
-- json_extract(payload_json, '$.discriminator_hex'),
|
||||
-- json_extract(payload_json, '$.instructionDiscriminatorHex'),
|
||||
-- json_extract(payload_json, '$.instruction_discriminator_hex')
|
||||
-- ) IN (
|
||||
-- '4c7c800fd55725fa','7b86510031446262','c975989055556cb2',
|
||||
-- 'a78a4e95dfc2067e','8888fcddc2427e59','12eda6c52210d590',
|
||||
-- '8934edd4d7756c68','2b44d4a7592fa401','bd0eb5785576e33e',
|
||||
-- '3f5794216d230868','e992d18ecf6840bc','11fb415c88f20ea9',
|
||||
-- 'a026d06f685b2c01','3a7fbc3e4f52c460','2e9cf3760dcdfbb2',
|
||||
-- '851d59df45eeb00a','5f87c0c4f281e644','87802f4d0f98f031',
|
||||
-- '4db84ad67056f1c7','4dffae527d1dc92e','7034a74b20c9d389',
|
||||
-- 'cd4e74215c691a60','f8c69e91e17587c8','457d73daf5baf2c4',
|
||||
-- '2b04ed0b1ac91e62','07160c53f22b3079','313cae889a1c74c8',
|
||||
-- '7f467728bce33d07','82576c062ee0757b','a3ace0340b9a6adf'
|
||||
-- );
|
||||
120
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE17.sql
Normal file
120
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE17.sql
Normal file
@@ -0,0 +1,120 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE17.sql
|
||||
-- Raydium CLMM validation after limit-order instruction mapping.
|
||||
-- Expected coverage listed_entry_count becomes 45 because open/increase/decrease_limit_order are now listed.
|
||||
|
||||
-- 1. CLMM coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. New CLMM limit-order coverage rows.
|
||||
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 = 'raydium_clmm'
|
||||
AND entry_name IN (
|
||||
'open_limit_order',
|
||||
'increase_limit_order',
|
||||
'decrease_limit_order',
|
||||
'close_limit_order',
|
||||
'settle_limit_order'
|
||||
)
|
||||
ORDER BY entry_name;
|
||||
|
||||
-- 3. The formerly residual discriminants must now decode as named events.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS transaction_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_clmm.open_limit_order',
|
||||
'raydium_clmm.increase_limit_order',
|
||||
'raydium_clmm.decrease_limit_order'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 4. No residual audit rows for the newly mapped discriminants.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
AND json_extract(payload_json, '$.discriminatorHex') IN (
|
||||
'9d20dab7471d1293',
|
||||
'b19059ecfaba7d63',
|
||||
'759d3c674231a300'
|
||||
)
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC;
|
||||
|
||||
-- 5. No trade/candle safety: limit-order maintenance must never produce trade rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_clmm.open_limit_order',
|
||||
'raydium_clmm.increase_limit_order',
|
||||
'raydium_clmm.decrease_limit_order',
|
||||
'raydium_clmm.close_limit_order',
|
||||
'raydium_clmm.settle_limit_order'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 6. Duplicate audit rows should stay empty after mapped-audit cleanup.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
117
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE18.sql
Normal file
117
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE18.sql
Normal file
@@ -0,0 +1,117 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE18.sql
|
||||
-- Raydium CLMM validation after pre.18 orderbook-event schema and materialization.
|
||||
|
||||
-- 1. Schema must contain the new orderbook materialization table.
|
||||
SELECT
|
||||
name
|
||||
FROM sqlite_master
|
||||
WHERE type = 'table'
|
||||
AND name = 'k_sol_orderbook_events';
|
||||
|
||||
-- 2. Cleanup any stale mapped CLMM instruction audits left from earlier runs.
|
||||
-- This is safe: the discriminants below are now decoded as named raydium_clmm.* events.
|
||||
DELETE FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(payload_json, '$.discriminatorHex'),
|
||||
json_extract(payload_json, '$.discriminator_hex'),
|
||||
json_extract(payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(payload_json, '$.instruction_discriminator_hex')
|
||||
) IN (
|
||||
'4c7c800fd55725fa','7b86510031446262','c975989055556cb2',
|
||||
'a78a4e95dfc2067e','8888fcddc2427e59','12eda6c52210d590',
|
||||
'8934edd4d7756c68','2b44d4a7592fa401','bd0eb5785576e33e',
|
||||
'3f5794216d230868','e992d18ecf6840bc','11fb415c88f20ea9',
|
||||
'a026d06f685b2c01','3a7fbc3e4f52c460','2e9cf3760dcdfbb2',
|
||||
'851d59df45eeb00a','5f87c0c4f281e644','87802f4d0f98f031',
|
||||
'4db84ad67056f1c7','4dffae527d1dc92e','7034a74b20c9d389',
|
||||
'cd4e74215c691a60','f8c69e91e17587c8','457d73daf5baf2c4',
|
||||
'2b04ed0b1ac91e62','07160c53f22b3079','313cae889a1c74c8',
|
||||
'7f467728bce33d07','82576c062ee0757b','a3ace0340b9a6adf',
|
||||
'759d3c674231a300','9d20dab7471d1293','b19059ecfaba7d63'
|
||||
);
|
||||
|
||||
-- 3. Duplicate audits should be zero.
|
||||
SELECT
|
||||
json_extract(audit.payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
audit.event_kind AS audit_event_kind,
|
||||
named.event_kind AS named_event_kind,
|
||||
COUNT(*) AS duplicate_count
|
||||
FROM k_sol_dex_decoded_events audit
|
||||
JOIN k_sol_dex_decoded_events named
|
||||
ON named.transaction_id = audit.transaction_id
|
||||
AND named.protocol_name = 'raydium_clmm'
|
||||
AND named.event_kind <> 'raydium_clmm.instruction_audit'
|
||||
AND COALESCE(
|
||||
json_extract(named.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(named.payload_json, '$.instruction_discriminator_hex'),
|
||||
json_extract(named.payload_json, '$.discriminatorHex'),
|
||||
json_extract(named.payload_json, '$.discriminator_hex')
|
||||
) = COALESCE(
|
||||
json_extract(audit.payload_json, '$.discriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.discriminator_hex'),
|
||||
json_extract(audit.payload_json, '$.instructionDiscriminatorHex'),
|
||||
json_extract(audit.payload_json, '$.instruction_discriminator_hex')
|
||||
)
|
||||
WHERE audit.protocol_name = 'raydium_clmm'
|
||||
AND audit.event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex, audit_event_kind, named_event_kind
|
||||
ORDER BY duplicate_count DESC;
|
||||
|
||||
-- 4. Limit-order decoded events must materialize into k_sol_orderbook_events and never trades.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS tx_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_clmm.open_limit_order',
|
||||
'raydium_clmm.increase_limit_order',
|
||||
'raydium_clmm.decrease_limit_order',
|
||||
'raydium_clmm.close_limit_order',
|
||||
'raydium_clmm.settle_limit_order'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 5. No failed transaction should be orderbook-materialized.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
-- 6. CLMM coverage summary after refresh.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
144
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE19.sql
Normal file
144
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE19.sql
Normal file
@@ -0,0 +1,144 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE19.sql
|
||||
-- Raydium CLMM validation after pre.19 upstream fallback cleanup.
|
||||
|
||||
-- 1. CLMM coverage summary must remain populated.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. No local CLMM instruction audit should remain after specialized decoding.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 3. No upstream_git fallback should remain for CLMM entries already covered locally.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'upstream_git'
|
||||
AND event_kind = 'upstream_git.instruction_match'
|
||||
AND json_extract(payload_json, '$.upstreamDecoderCode') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 4. Generic diagnostic for any locally covered upstream fallback, all protocols.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT ug.transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events ug
|
||||
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 ce.discriminator_hex = 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'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex
|
||||
ORDER BY fallback_count DESC, upstream_decoder_code, entry_name;
|
||||
|
||||
-- 5. Non-swap CLMM events must never create trades/candles.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind NOT IN (
|
||||
'raydium_clmm.swap',
|
||||
'raydium_clmm.swap_v2'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
HAVING COUNT(te.id) > 0
|
||||
ORDER BY trade_count DESC, de.event_kind;
|
||||
|
||||
-- 6. Failed CLMM transactions must not materialize into business tables.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
HAVING
|
||||
COUNT(le.id) > 0
|
||||
OR COUNT(fe.id) > 0
|
||||
OR COUNT(re.id) > 0
|
||||
OR COUNT(pa.id) > 0
|
||||
OR COUNT(ple.id) > 0
|
||||
OR COUNT(oe.id) > 0
|
||||
OR COUNT(te.id) > 0
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 7. Orderbook limit-order materialization safety.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS tx_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_clmm.open_limit_order',
|
||||
'raydium_clmm.increase_limit_order',
|
||||
'raydium_clmm.decrease_limit_order',
|
||||
'raydium_clmm.close_limit_order',
|
||||
'raydium_clmm.settle_limit_order'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
123
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE20.sql
Normal file
123
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE20.sql
Normal file
@@ -0,0 +1,123 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE20.sql
|
||||
-- Raydium CLMM validation after pre.20 fallback cleanup + Program data event readiness.
|
||||
|
||||
-- 1. CLMM coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Residual CLMM instruction audits. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 3. Redundant upstream fallback matches for locally covered CLMM entries. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(ug.payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT ug.transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events ug
|
||||
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 ce.discriminator_hex = 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') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 4. Any remaining upstream CLMM fallback matches. Expected: zero rows unless a genuinely unmapped future entry appears.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'upstream_git'
|
||||
AND event_kind = 'upstream_git.instruction_match'
|
||||
AND json_extract(payload_json, '$.upstreamDecoderCode') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 5. Anchor Program data events. These may remain zero until matching Program data logs exist in corpus.
|
||||
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 = 'raydium_clmm'
|
||||
AND entry_kind = 'event'
|
||||
ORDER BY entry_name;
|
||||
|
||||
-- 6. Failed transaction materialization guard. Expected: zero rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
HAVING
|
||||
COUNT(le.id) > 0
|
||||
OR COUNT(fe.id) > 0
|
||||
OR COUNT(re.id) > 0
|
||||
OR COUNT(pa.id) > 0
|
||||
OR COUNT(ple.id) > 0
|
||||
OR COUNT(oe.id) > 0
|
||||
OR COUNT(te.id) > 0
|
||||
ORDER BY de.event_kind;
|
||||
139
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE22.sql
Normal file
139
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE22.sql
Normal file
@@ -0,0 +1,139 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE22.sql
|
||||
-- Raydium CLMM validation after pre.22 upstream fallback reset cleanup hardening.
|
||||
|
||||
-- 1. CLMM coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Residual CLMM instruction audits. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 3. Redundant upstream fallback matches for locally covered entries. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(ug.payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT ug.transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events ug
|
||||
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 ce.discriminator_hex = 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') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 4. Any remaining upstream CLMM fallback matches. Expected: zero rows unless a genuinely unmapped future entry appears.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'upstream_git'
|
||||
AND event_kind = 'upstream_git.instruction_match'
|
||||
AND json_extract(payload_json, '$.upstreamDecoderCode') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 5. Safety: non-swap CLMM rows must not materialize as trades.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind NOT IN (
|
||||
'raydium_clmm.swap',
|
||||
'raydium_clmm.swap_v2'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
HAVING COUNT(te.id) > 0
|
||||
ORDER BY trade_count DESC, de.event_kind;
|
||||
|
||||
-- 6. Safety: failed CLMM transactions must not materialize into business tables.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
HAVING
|
||||
COUNT(le.id) > 0
|
||||
OR COUNT(fe.id) > 0
|
||||
OR COUNT(re.id) > 0
|
||||
OR COUNT(pa.id) > 0
|
||||
OR COUNT(ple.id) > 0
|
||||
OR COUNT(oe.id) > 0
|
||||
OR COUNT(te.id) > 0
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 7. Raydium CPMM listed coverage entries.
|
||||
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 = 'raydium_cpmm'
|
||||
ORDER BY entry_kind, entry_name, discriminator_hex;
|
||||
132
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE23.sql
Normal file
132
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE23.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE23.sql
|
||||
-- Raydium CLMM validation after pre.23 FK-safe upstream fallback cleanup.
|
||||
|
||||
-- 1. CLMM coverage summary.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
|
||||
-- 2. Residual CLMM instruction audits. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS residual_audit_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
GROUP BY discriminator_hex
|
||||
ORDER BY residual_audit_count DESC, discriminator_hex;
|
||||
|
||||
-- 3. Redundant upstream fallback matches for locally covered CLMM entries. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS discriminator_hex,
|
||||
json_extract(ug.payload_json, '$.upstreamSourceRepo') AS source_repo,
|
||||
COUNT(*) AS fallback_count,
|
||||
COUNT(DISTINCT ug.transaction_id) AS tx_count
|
||||
FROM k_sol_dex_decoded_events ug
|
||||
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 ce.discriminator_hex = 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') = 'raydium_clmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex, source_repo
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 4. Instruction-observation links still pointing to redundant upstream fallback rows. Expected: zero rows.
|
||||
SELECT
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName') AS entry_name,
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex') AS upstream_discriminator_hex,
|
||||
COUNT(*) AS linked_observation_count
|
||||
FROM k_sol_instruction_observations io
|
||||
JOIN k_sol_dex_decoded_events ug
|
||||
ON ug.id = io.decoded_event_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 ce.discriminator_hex = 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') = 'raydium_clmm'
|
||||
GROUP BY
|
||||
json_extract(ug.payload_json, '$.upstreamDecoderCode'),
|
||||
json_extract(ug.payload_json, '$.upstreamEntryName'),
|
||||
json_extract(ug.payload_json, '$.upstreamDiscriminatorHex')
|
||||
ORDER BY linked_observation_count DESC, entry_name;
|
||||
|
||||
-- 5. Any non-swap CLMM trade. Expected: zero rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind NOT IN (
|
||||
'raydium_clmm.swap',
|
||||
'raydium_clmm.swap_v2'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
HAVING COUNT(te.id) > 0
|
||||
ORDER BY trade_count DESC, de.event_kind;
|
||||
|
||||
-- 6. Failed transaction materialization guard. Expected: zero rows.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(oe.id) AS orderbook_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
JOIN k_sol_chain_transactions tx
|
||||
ON tx.id = de.transaction_id
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_orderbook_events oe
|
||||
ON oe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
AND tx.err_json <> 'null'
|
||||
GROUP BY de.event_kind
|
||||
HAVING
|
||||
COUNT(le.id) > 0
|
||||
OR COUNT(fe.id) > 0
|
||||
OR COUNT(re.id) > 0
|
||||
OR COUNT(pa.id) > 0
|
||||
OR COUNT(ple.id) > 0
|
||||
OR COUNT(oe.id) > 0
|
||||
OR COUNT(te.id) > 0
|
||||
ORDER BY de.event_kind;
|
||||
88
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE6.sql
Normal file
88
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE6.sql
Normal file
@@ -0,0 +1,88 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE6.sql
|
||||
-- Raydium CLMM pre.6 validation: specialized non-trade reconciliation.
|
||||
|
||||
-- 1. Confirm the two corpus-observed CLMM non-trades are materialized.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(ple.id) AS lifecycle_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_clmm.create_pool',
|
||||
'raydium_clmm.collect_protocol_fee'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 2. Confirm residual audits for the same discriminants are gone.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.instructionDiscriminatorHex') AS instruction_discriminator_hex,
|
||||
json_extract(payload_json, '$.instruction_discriminator_hex') AS instruction_discriminator_hex_snake,
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
json_extract(payload_json, '$.discriminator_hex') AS discriminator_hex_snake,
|
||||
json_extract(payload_json, '$.accountCount') AS account_count,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
AND (
|
||||
json_extract(payload_json, '$.instructionDiscriminatorHex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
OR json_extract(payload_json, '$.instruction_discriminator_hex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
OR json_extract(payload_json, '$.discriminatorHex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
OR json_extract(payload_json, '$.discriminator_hex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
)
|
||||
GROUP BY
|
||||
instruction_discriminator_hex,
|
||||
instruction_discriminator_hex_snake,
|
||||
discriminator_hex,
|
||||
discriminator_hex_snake,
|
||||
account_count
|
||||
ORDER BY decoded_count DESC;
|
||||
|
||||
-- 3. Full CLMM distribution with materialization counters.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 4. Coverage summary after sync/replay.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
88
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE7.sql
Normal file
88
validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE7.sql
Normal file
@@ -0,0 +1,88 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CLMM_0_7_49_PRE7.sql
|
||||
-- Raydium CLMM pre.7 validation: direct materialization + audit cleanup.
|
||||
|
||||
-- 1. Confirm corpus-observed CLMM non-trades are materialized.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(ple.id) AS lifecycle_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_clmm.create_pool',
|
||||
'raydium_clmm.collect_protocol_fee'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 2. Confirm residual audits for the same discriminants are gone.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.instructionDiscriminatorHex') AS instruction_discriminator_hex,
|
||||
json_extract(payload_json, '$.instruction_discriminator_hex') AS instruction_discriminator_hex_snake,
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
json_extract(payload_json, '$.discriminator_hex') AS discriminator_hex_snake,
|
||||
json_extract(payload_json, '$.accountCount') AS account_count,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_clmm'
|
||||
AND event_kind = 'raydium_clmm.instruction_audit'
|
||||
AND (
|
||||
json_extract(payload_json, '$.instructionDiscriminatorHex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
OR json_extract(payload_json, '$.instruction_discriminator_hex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
OR json_extract(payload_json, '$.discriminatorHex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
OR json_extract(payload_json, '$.discriminator_hex') IN ('e992d18ecf6840bc', '8888fcddc2427e59')
|
||||
)
|
||||
GROUP BY
|
||||
instruction_discriminator_hex,
|
||||
instruction_discriminator_hex_snake,
|
||||
discriminator_hex,
|
||||
discriminator_hex_snake,
|
||||
account_count
|
||||
ORDER BY decoded_count DESC;
|
||||
|
||||
-- 3. Full CLMM distribution with materialization counters.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(re.id) AS reward_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_reward_events re
|
||||
ON re.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_clmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 4. Coverage summary after sync/replay.
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_clmm'
|
||||
GROUP BY decoder_code;
|
||||
231
validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_0_7_48.sql
Normal file
231
validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_0_7_48.sql
Normal file
@@ -0,0 +1,231 @@
|
||||
-- file: validation_sql/SQL_VALIDATION_RAYDIUM_CPMM_0_7_48.sql
|
||||
|
||||
-- 1. Coverage rows must exist after diagnostics/validation/backfill refresh.
|
||||
SELECT *
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_cpmm'
|
||||
ORDER BY entry_kind, entry_name, discriminator_hex;
|
||||
|
||||
-- 2. Aggregated coverage summary for Raydium CPMM.
|
||||
SELECT
|
||||
decoder_code,
|
||||
listed_entry_count,
|
||||
decoded_entry_count,
|
||||
observed_entry_count,
|
||||
materialized_entry_count,
|
||||
total_observed_count,
|
||||
total_materialized_count,
|
||||
trade_count,
|
||||
audit_only_entry_count,
|
||||
upstream_git_mapped_unverified_entry_count,
|
||||
upstream_git_local_corpus_observed_entry_count,
|
||||
upstream_git_local_corpus_materialized_entry_count
|
||||
FROM (
|
||||
SELECT
|
||||
decoder_code,
|
||||
COUNT(*) AS listed_entry_count,
|
||||
SUM(CASE WHEN local_event_kind IS NOT NULL AND local_event_kind <> '' THEN 1 ELSE 0 END) AS decoded_entry_count,
|
||||
SUM(CASE WHEN observed_count > 0 THEN 1 ELSE 0 END) AS observed_entry_count,
|
||||
SUM(CASE WHEN materialized_count > 0 THEN 1 ELSE 0 END) AS materialized_entry_count,
|
||||
COALESCE(SUM(observed_count), 0) AS total_observed_count,
|
||||
COALESCE(SUM(materialized_count), 0) AS total_materialized_count,
|
||||
COALESCE(SUM(trade_count), 0) AS trade_count,
|
||||
SUM(CASE WHEN expected_db_target = 'k_sol_dex_decoded_events_only' THEN 1 ELSE 0 END) AS audit_only_entry_count,
|
||||
SUM(CASE WHEN proof_status = 'upstream_git_mapped_unverified' THEN 1 ELSE 0 END) AS upstream_git_mapped_unverified_entry_count,
|
||||
SUM(CASE WHEN proof_status = 'upstream_git_local_corpus_observed' THEN 1 ELSE 0 END) AS upstream_git_local_corpus_observed_entry_count,
|
||||
SUM(CASE WHEN proof_status = 'upstream_git_local_corpus_materialized' THEN 1 ELSE 0 END) AS upstream_git_local_corpus_materialized_entry_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
GROUP BY decoder_code
|
||||
)
|
||||
WHERE decoder_code = 'raydium_cpmm';
|
||||
|
||||
-- 3. Decoded event distribution.
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(DISTINCT de.transaction_id) AS transaction_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
GROUP BY de.protocol_name, de.event_kind
|
||||
ORDER BY decoded_count DESC, de.event_kind;
|
||||
|
||||
-- 4. Audit/non-trade safety: no audit/non-trade CPMM event may produce trades.
|
||||
SELECT
|
||||
de.protocol_name,
|
||||
de.event_kind,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
AND (
|
||||
de.event_kind LIKE '%audit%'
|
||||
OR de.event_kind IN (
|
||||
'raydium_cpmm.lp_change_event',
|
||||
'raydium_cpmm.swap_event',
|
||||
'raydium_cpmm.collect_creator_fee',
|
||||
'raydium_cpmm.collect_fund_fee',
|
||||
'raydium_cpmm.collect_protocol_fee',
|
||||
'raydium_cpmm.create_amm_config',
|
||||
'raydium_cpmm.update_amm_config',
|
||||
'raydium_cpmm.update_pool_status',
|
||||
'raydium_cpmm.create_permission_pda',
|
||||
'raydium_cpmm.close_permission_pda'
|
||||
)
|
||||
OR json_extract(de.payload_json, '$.eventActionability') IN ('non_trade_useful', 'informational', 'non_actionable_trade')
|
||||
)
|
||||
GROUP BY de.protocol_name, de.event_kind
|
||||
ORDER BY trade_count DESC, de.event_kind;
|
||||
|
||||
-- 5. Failed transactions must not materialize trades.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(te.id) AS trade_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
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
AND tx.err_json IS NOT NULL
|
||||
AND tx.err_json <> ''
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY trade_count DESC, decoded_count DESC;
|
||||
|
||||
-- 6. Local specialized decoder must replace upstream fallback for CPMM entries.
|
||||
SELECT
|
||||
json_extract(payload_json, '$.upstreamDecoderCode') AS upstream_decoder_code,
|
||||
json_extract(payload_json, '$.entryName') AS entry_name,
|
||||
json_extract(payload_json, '$.discriminatorHex') AS discriminator_hex,
|
||||
COUNT(*) AS fallback_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'upstream_git'
|
||||
AND event_kind = 'upstream_git.instruction_match'
|
||||
AND json_extract(payload_json, '$.upstreamDecoderCode') = 'raydium_cpmm'
|
||||
GROUP BY upstream_decoder_code, entry_name, discriminator_hex
|
||||
ORDER BY fallback_count DESC, entry_name;
|
||||
|
||||
-- 7. Program data events are decoded but must remain non-trade/non-candle candidates.
|
||||
SELECT
|
||||
event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
SUM(CASE WHEN json_extract(payload_json, '$.tradeCandidate') = 1 THEN 1 ELSE 0 END) AS trade_candidate_count,
|
||||
SUM(CASE WHEN json_extract(payload_json, '$.candleCandidate') = 1 THEN 1 ELSE 0 END) AS candle_candidate_count,
|
||||
SUM(CASE WHEN json_extract(payload_json, '$.eventActionability') IN ('non_trade_useful', 'non_actionable_trade') THEN 1 ELSE 0 END) AS safe_actionability_count
|
||||
FROM k_sol_dex_decoded_events
|
||||
WHERE protocol_name = 'raydium_cpmm'
|
||||
AND event_kind IN ('raydium_cpmm.lp_change_event', 'raydium_cpmm.swap_event')
|
||||
GROUP BY event_kind
|
||||
ORDER BY event_kind;
|
||||
|
||||
-- 8. Liquidity materialization for lp_change_event, if pool/pair exists in local corpus.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
json_extract(de.payload_json, '$.changeType') AS change_type,
|
||||
COUNT(de.id) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_materialized_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
AND de.event_kind = 'raydium_cpmm.lp_change_event'
|
||||
GROUP BY de.event_kind, change_type
|
||||
ORDER BY change_type;
|
||||
|
||||
|
||||
-- 9. Replay coverage hook check: capture this value before and after local replay.
|
||||
SELECT MAX(updated_at) AS latest_coverage_refresh_at
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_cpmm';
|
||||
|
||||
-- 10. lp_change_event is a bidirectional liquidity event in coverage.
|
||||
SELECT
|
||||
entry_name,
|
||||
event_family,
|
||||
expected_db_target,
|
||||
proof_status,
|
||||
observed_count,
|
||||
materialized_count,
|
||||
trade_count
|
||||
FROM k_sol_dex_event_coverage_entries
|
||||
WHERE decoder_code = 'raydium_cpmm'
|
||||
AND entry_name = 'lp_change_event';
|
||||
|
||||
-- 0.7.48 final — materialization safety summary.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(fe.id) AS fee_count,
|
||||
COUNT(pa.id) AS admin_count,
|
||||
COUNT(ple.id) AS lifecycle_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_fee_events fe
|
||||
ON fe.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 0.7.48 final — lp_change_event add/remove split.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
json_extract(de.payload_json, '$.changeType') AS change_type,
|
||||
COUNT(*) AS decoded_count,
|
||||
COUNT(le.id) AS liquidity_count,
|
||||
COUNT(te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_liquidity_events le
|
||||
ON le.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
AND de.event_kind = 'raydium_cpmm.lp_change_event'
|
||||
GROUP BY de.event_kind, change_type
|
||||
ORDER BY change_type;
|
||||
|
||||
-- 0.7.48 final — initialize_with_permission must remain lifecycle-only.
|
||||
SELECT
|
||||
de.event_kind,
|
||||
COUNT(DISTINCT de.id) AS decoded_count,
|
||||
COUNT(DISTINCT ple.id) AS lifecycle_count,
|
||||
COUNT(DISTINCT pa.id) AS admin_count,
|
||||
COUNT(DISTINCT te.id) AS trade_count
|
||||
FROM k_sol_dex_decoded_events de
|
||||
LEFT JOIN k_sol_pool_lifecycle_events ple
|
||||
ON ple.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_pool_admin_events pa
|
||||
ON pa.decoded_event_id = de.id
|
||||
LEFT JOIN k_sol_trade_events te
|
||||
ON te.decoded_event_id = de.id
|
||||
WHERE de.protocol_name = 'raydium_cpmm'
|
||||
AND de.event_kind IN (
|
||||
'raydium_cpmm.initialize',
|
||||
'raydium_cpmm.initialize_with_permission'
|
||||
)
|
||||
GROUP BY de.event_kind
|
||||
ORDER BY de.event_kind;
|
||||
|
||||
-- 0.7.48 final — instruction observation index.
|
||||
SELECT
|
||||
instruction_name,
|
||||
discriminator_hex,
|
||||
COUNT(*) AS observed_count,
|
||||
COUNT(DISTINCT signature) AS tx_count
|
||||
FROM k_sol_instruction_observations
|
||||
WHERE decoder_code = 'raydium_cpmm'
|
||||
GROUP BY instruction_name, discriminator_hex
|
||||
ORDER BY observed_count DESC;
|
||||
Reference in New Issue
Block a user