123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- -- 思路 获取一段时间的 transfer 数据 根据dextrade 或者 其他筛选 先排除一部分 tx_id 在groupby tx_id 进一步筛选 最后 成功
- -- 到了 先排除一部分 就时间太长了
- with
- input_owner (address) as (
- values
- ('DZuiugsZ8bJNLYnkLE3aK6Fyj3PdGEeev2kUQ9htk1No'),
- ('FoRrce2AqaZAhPZozrH49835VueVj31Vq4hRQNtt1ao7'),
- ('7PXAh12kVHji6FRdtpnZprZog9zC5aboVZRt5UnP961n'),
- ('4ZStjfNTvTDHGsBGqQLTfXvtALMHwnfpUEdbnRmgbPVm'),
- ('62GvRgevD9g93xoyV8SjFL5VKF2h7YhCvJWiLzfNm8uC'),
- ('AgPsPtpAiQqMtcmSsGEGvje1dXTco3NGi1gAF7gvYC7L'),
- ('BXvEmdFHrSCDE1DYg47U1SgW6juGtSHfx32ijpM5oq23')
- ),
- exclude_address (address) as (
- values
- ('AVzP2GeRmqGphJsMxWoqjpUifPpCret7LqWhD8NWQK49'), -- Jupiter Labs Perpetuals Vault Authority
- ('A2rCQdCqQB4wu72x9Q7iq1QugtdZmcyWsiSPfgfZzu2u'), -- Jupiter Perpetuals Keeper 1
- ('DFZcDnmEYNUK1khquZzx5dQYiEyjJ3N5STqaDVLZ88ZU'), -- Jupiter Perpetuals Keeper 2
- ('PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu'), -- Jupiter Labs Perpetuals
- ('BUvduFTd2sWFagCunBPLupG8fBTJqweLw9DuhruNFSCm'), -- Jupiter Labs Perpetuals (SOL) Vault
- ('WzWUoCmtVv7eqAbU3BfKPU3fhLP6CXR8NCJH78UK9VS'), -- Jupiter Labs Perpetuals (USDC) Vault
- ('Gex24YznvguMad1mBzTQ7a64U1CJy59gvsStQmNnnwAd'), -- Jupiter Labs Perpetuals (USDT) Vault
- ('Bgarxg65CEjN3kosjCW5Du3wEqvV3dpCGDR3a2HRQsYJ'), -- Jupiter Labs Perpetuals (ETH) Vault
- ('FgpXg2J3TzSs7w3WGYYE7aWePdrxBVLCXSxmAKnCZNtZ'), -- Jupiter Labs Perpetuals (BTC) Vault
- ('BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'), -- Jupiter Aggregator Authority 1
- ('2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h'), -- Jupiter Aggregator Authority 2
- ('HU23r7UoZbqTUuh3vA7emAGztFtqwTeVips789vqxxBw'), -- Jupiter Aggregator Authority 3
- ('3CgvbiM3op4vjrrjH2zcrQUwsqh5veNVRjFCB9N6sRoD'), -- Jupiter Aggregator Authority 4
- ('6LXutJvKUw8Q5ue2gCgKHQdAN4suWW8awzFVC6XCguFx'), -- Jupiter Aggregator Authority 5
- ('CapuXNQoDviLvU1PxFiizLgPNQCxrsag1uMeyk6zLVps'), -- Jupiter Aggregator Authority 6
- ('GGztQqQ6pCPaJQnNpXBgELr5cs3WwDakRbh1iEMzjgSJ'), -- Jupiter Aggregator Authority 7
- ('9nnLbotNTcUhvbrsA6Mdkx45Sm82G35zo28AqUvjExn8'), -- Jupiter Aggregator Authority 8
- ('3LoAYHuSd7Gh8d7RTFnhvYtiTiefdZ5ByamU42vkzd76'), -- Jupiter Aggregator Authority 9
- ('DSN3j1ykL3obAVNv7ZX49VsFCPe4LqzxHnmtLiPwY6xg'), -- Jupiter Aggregator Authority 10
- ('69yhtoJR4JYPPABZcSNkzuqbaFbwHsCkja1sP1Q2aVT5'), -- Jupiter Aggregator Authority 11
- ('6U91aKa8pmMxkJwBCfPTmUEfZi6dHe7DcFq2ALvB2tbB'), -- Jupiter Aggregator Authority 12
- ('7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE'), -- Jupiter Aggregator Authority 13
- ('4xDsmeTWPNjgSVSS1VTfzFq3iHZhp77ffPkAmkZkdu71'), -- Jupiter Aggregator Authority 14
- ('GP8StUXNYSZjPikyRsvkTbvRV1GBxMErb59cpeCJnDf1'), -- Jupiter Aggregator Authority 15
- ('HFqp6ErWHY6Uzhj8rFyjYuDya2mXUpYEk8VW75K9PSiY'), -- Jupiter Aggregator Authority 16
- ('45ruCyfdRkWpRNGEqWzjCiXRHkZs8WXCLQ67Pnpye7Hp'), -- Jupiter Partner Referral Fee Vault
- ('jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu'), -- Jupiter Limit Order
- ('Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY'), -- Jitotip 3
- ('j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X'), -- Jupiter Limit Order V2
- ('DD3AeAssFvjqTvRTrRAtpfjkBF8FpVKnFuwnMLN9haXD') -- Marginfi Bank Liquidity (SOL) Vault Authority
-
- -- ["DSwpgjMvXhtGn6BsbqmacdBZyfLj6jSWf3HJpdJtmg6N", "Dexlab"],
- -- ["BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p", "Bonkswap"],
- -- ["Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", "Meteora"],
- -- ["FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X", "FluxBeam"],
- -- ["HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt", "Invariant"],
- -- ["PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu", "Perps"],
- -- ["treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5", "Helium Network"],
- -- ["DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1", "Orca V1"],
- -- ["CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4", "Aldrin V2"],
- -- ["LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", "Meteora DLMM"],
- -- ["PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY", "Phoenix"],
- -- ["SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr", "Saros"],
- -- ["AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6", "Aldrin"],
- -- ["9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H", "Oasis"],
- -- ["MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky", "Mercurial"],
- -- ["SwaPpA9LAaLfeLi3a68M4DjnLqgtticKg6CnyNwgAC8", "Token Swap"],
- -- ["srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX", "Openbook"],
- -- ["CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR", "Crema"],
- -- ["DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB", "Saber (Decimals)"],
- -- ["CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh", "Cropper"],
- -- ["CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", "Raydium CLMM"],
- -- ["whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc", "Whirlpool"],
- -- ["PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP", "Penguin"],
- -- ["EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S", "Lifinity V1"],
- -- ["C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr", "Clone Protocol"],
- -- ["2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c", "Lifinity V2"],
- -- ["Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j", "StepN"],
- -- ["9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP", "Orca V2"],
- -- ["opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb", "OpenBook V2"],
- -- ["MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD", "Marinade"],
- -- ["GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn", "GooseFX"],
- -- ["SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ", "Saber"],
- -- ["stkitrT1Uoy18Dk1fTrgPw8W6MVzoCfYoAFT4MLsmhq", "Sanctum"],
- -- ["675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", "Raydium"],
- ),
- trade as (
- SELECT
- tx_id
- from
- dex_solana.trades
- where
- block_time > CAST('{{begin_date_01}}' AS TIMESTAMP)
- and block_time <= CAST('{{end_date_01}}' AS TIMESTAMP)
- ),
- -- temp_01 可以获得非swap 的 input_owner 参与的transfer 交易 (不是一笔交易的全部 一笔交易可能实际非swap 但会有多个transfer mint 等)
- temp_01 as (
- SELECT
- transfer.*
- -- tx_id,
- -- block_date,
- -- amount,
- -- action,
- -- token_mint_address,
- -- from_owner,
- -- to_owner,
- -- from_token_account,
- -- to_token_account
- FROM
- (
- SELECT
- tx_id,
- block_date,
- amount,
- action,
- token_mint_address,
- from_owner,
- to_owner,
- from_token_account,
- to_token_account
- FROM
- tokens_solana.transfers
- where
- block_date > CAST('{{begin_date_02}}' AS TIMESTAMP)
- and block_date <= CAST('{{end_date_02}}' AS TIMESTAMP)
- ) transfer
- inner join input_owner on (
- input_owner.address = transfer.from_owner
- or input_owner.address = transfer.to_owner
- )
- -- 非swap 的交易
- left join trade on trade.tx_id = transfer.tx_id
- WHERE
- trade.tx_id is null
- ),
- -- 下一步 temp_02 有连个方案
- -- 1. groupby tx_id 去除 一些是 none action 含有mint等非 ,mint_token_address为非 sol等的tx_id 获取到真正的tranfer 交易 然后获取他们的 relation owner
- -- 1. 缺点 明显太复杂 不知道时间能否允许不
- -- 2. 不用groupby 用union all 获取 exclude_ids 然后获取真正的 relation owner
- -- exclude_tx_ids as (
- -- SELECT
- -- tx_id
- -- from
- -- temp_01
- -- where
- -- action != 'transfer'
- -- UNION all
- -- SELECT
- -- tx_id
- -- from
- -- temp_01
- -- where
- -- token_mint_address != 'So11111111111111111111111111111111111111112'
- -- UNION all
- -- SELECT
- -- tx_id
- -- from
- -- temp_01
- -- where
- -- from_owner is null
- -- or to_owner is null
- -- UNION all
- -- SELECT
- -- temp_01.tx_id as tx_id
- -- from
- -- temp_01
- -- left join exclude_address on temp_01.from_owner = exclude_address.address
- -- or temp_01.to_owner = exclude_address.address
- -- where
- -- exclude_address.address is null
- -- )
- -- temp_02 as (
- -- select
- -- temp_01.*
- -- from
- -- temp_01
- -- left join exclude_tx_ids on temp_01.tx_id = exclude_tx_ids.tx_id
- -- where
- -- exclude_tx_ids.tx_id is null
- -- )
- temp_02 as (
- SELECT
- tx_id
- from
- temp_01
- GROUP BY
- tx_id
- HAVING
- SUM(
- CASE
- WHEN action = 'transfer' THEN 1
- ELSE 0
- END
- ) > 0
- and COUNT(DISTINCT COALESCE(token_mint_address, 'NULL')) = 1
- and COUNT(DISTINCT COALESCE(action, 'NULL')) = 1
- and (
- SUM(
- CASE
- WHEN token_mint_address = 'So11111111111111111111111111111111111111112' THEN 1
- ELSE 0
- END
- ) > 0
- and sum(amount) >= 0.5 * 1e9
- )
- and SUM(
- CASE
- WHEN from_owner is null THEN 1
- ELSE 0
- END
- ) = 0
- and SUM(
- CASE
- WHEN to_owner is null THEN 1
- ELSE 0
- END
- ) = 0
- )
- SELECT
- -- DISTINCT
- temp_02.tx_id as tx_id,
- action,
- from_owner,
- to_owner,
- from_token_account,
- to_token_account,
- amount
- from
- temp_02
- inner join temp_01 on temp_01.tx_id = temp_02.tx_id
-
-
-
|