Jupiter inner swaps (#588)

* reorganize swaps models folder structure

* wip jupv6 inner swaps

* wip

* wip

* update logic

* refactored

* remove comments

* docs and tests

* cleanup and add metadata cols

* pick the larger of the 2 dates so that it gets picked up downstream

* fix bad swap index in test seed

* adjust swap index to relate to each top level jupiter instruction

* add test cases

* put tags last

* remove _inserted_timestamp greatest, causing unexpected incremental behavior

* handle multiple top level swaps inner instructions each using >1 route

* remove incremental upper bound

* add test case
This commit is contained in:
desmond-hui 2024-06-25 19:39:44 -07:00 committed by GitHub
parent 2b4f8e1ef2
commit 79b061e755
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
33 changed files with 330 additions and 0 deletions

View File

@ -0,0 +1,21 @@
tx_id,index,inner_index,swap_index,swapper,from_mint,from_amount,to_mint,to_amount,swap_program_id
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,4,0,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.0,So11111111111111111111111111111111111111112,0.012991046,LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,8,1,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,So11111111111111111111111111111111111111112,0.012991046,Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,2.001428,whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,13,2,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,2.001428,So11111111111111111111111111111111111111112,0.013004972,2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,18,3,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,So11111111111111111111111111111111111111112,0.013004972,SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y,4.468413717,9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP
4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T,6,22,4,yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ,SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y,4.468413717,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,2.003102,675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,3,0,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1.42,So11111111111111111111111111111111111111112,0.007959974,H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,8,1,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,So11111111111111111111111111111111111111112,0.007959974,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,12,2,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7,61.727513,DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,16,3,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7,61.727513,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB
Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa,2,21,4,ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM,9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i,61.727513,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1.407539,SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ
4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9,3,5,0,FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo,4cwVHQtwiK7r9aAUsu4cetk1JtLWPymopWcpTSsihCdL,1.41174032,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,3.924970,C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr
4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9,3,10,1,FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,3.924970,So11111111111111111111111111111111111111112,0.028191302,2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9,3,14,2,FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo,So11111111111111111111111111111111111111112,0.028191302,26KMQVgDUoB6rEfnJ51yAABWWJND8uMtpnQgsHQ64Udr,540.215186,675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
5UMtTnzJRZDnKYjM1nnVzU46gnys98EZySiUUkWEaWj2G82D7EhzxQHdPJ6nYDDd5T9dB7KanGQHKwWdXN5KXjGh,6,11,0,DpbCAnke1ubJrvT6meuqijD7FbhBVpYzqMatAAEBrTRy,So11111111111111111111111111111111111111112,9.780663556,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,1628.350049,LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc,1,4,0,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr,2.142586566,So11111111111111111111111111111111111111112,0.005840258,675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc,1,9,0,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,So11111111111111111111111111111111111111112,0.005840258,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,0.963540,CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK
3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF,0,4,0,BeePr3RWQL188BfCtzrqngPzYHrJQjNsN4fb2cDP2ivy,So11111111111111111111111111111111111111112,1,EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm,49.119676,LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF,1,4,0,BeePr3RWQL188BfCtzrqngPzYHrJQjNsN4fb2cDP2ivy,EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm,49.119676,So11111111111111111111111111111111111111112,1.000153095,2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X,0,5,0,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,So11111111111111111111111111111111111111112,0.444462749,7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj,0.384901668,MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky
32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X,0,9,1,BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx,7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj,0.384901668,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,42.179012,whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
1 tx_id index inner_index swap_index swapper from_mint from_amount to_mint to_amount swap_program_id
2 4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T 6 4 0 yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 2.0 So11111111111111111111111111111111111111112 0.012991046 LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
3 4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T 6 8 1 yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ So11111111111111111111111111111111111111112 0.012991046 Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB 2.001428 whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
4 4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T 6 13 2 yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB 2.001428 So11111111111111111111111111111111111111112 0.013004972 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
5 4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T 6 18 3 yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ So11111111111111111111111111111111111111112 0.013004972 SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y 4.468413717 9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP
6 4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T 6 22 4 yssJP6Te8Qu5SUUfYCNXzbxoE9tDyvN6bDHf7KuE8QZ SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y 4.468413717 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 2.003102 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
7 Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa 2 3 0 ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 1.42 So11111111111111111111111111111111111111112 0.007959974 H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt
8 Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa 2 8 1 ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM So11111111111111111111111111111111111111112 0.007959974 9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i 61.727513 9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP
9 Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa 2 12 2 ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM 9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i 61.727513 UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7 61.727513 DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB
10 Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa 2 16 3 ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM UST8SCn7jrqsq51odVLqcmvnC658HkqrKrPL3w2hHQ7 61.727513 9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i 61.727513 DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB
11 Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa 2 21 4 ARFysWfdq2s8LC1nWm39HaPtYJXNbT6138T8sJYAJqpM 9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i 61.727513 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 1.407539 SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ
12 4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9 3 5 0 FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo 4cwVHQtwiK7r9aAUsu4cetk1JtLWPymopWcpTSsihCdL 1.41174032 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 3.924970 C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr
13 4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9 3 10 1 FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 3.924970 So11111111111111111111111111111111111111112 0.028191302 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
14 4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9 3 14 2 FKK1YBAoyfrg7RcVRhg8QAQ6SridwynMHn1VfsGSqJbo So11111111111111111111111111111111111111112 0.028191302 26KMQVgDUoB6rEfnJ51yAABWWJND8uMtpnQgsHQ64Udr 540.215186 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
15 5UMtTnzJRZDnKYjM1nnVzU46gnys98EZySiUUkWEaWj2G82D7EhzxQHdPJ6nYDDd5T9dB7KanGQHKwWdXN5KXjGh 6 11 0 DpbCAnke1ubJrvT6meuqijD7FbhBVpYzqMatAAEBrTRy So11111111111111111111111111111111111111112 9.780663556 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 1628.350049 LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
16 5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc 1 4 0 BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx 7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr 2.142586566 So11111111111111111111111111111111111111112 0.005840258 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
17 5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc 1 9 0 BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx So11111111111111111111111111111111111111112 0.005840258 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 0.963540 CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK
18 3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF 0 4 0 BeePr3RWQL188BfCtzrqngPzYHrJQjNsN4fb2cDP2ivy So11111111111111111111111111111111111111112 1 EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm 49.119676 LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
19 3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF 1 4 0 BeePr3RWQL188BfCtzrqngPzYHrJQjNsN4fb2cDP2ivy EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm 49.119676 So11111111111111111111111111111111111111112 1.000153095 2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c
20 32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X 0 5 0 BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx So11111111111111111111111111111111111111112 0.444462749 7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj 0.384901668 MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky
21 32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X 0 9 1 BLBYiq48WcLQ5SxiftyKmPtmsZPUBEnDEjqEnKGAR4zx 7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj 0.384901668 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 42.179012 whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc

View File

@ -0,0 +1,189 @@
-- depends_on: {{ ref('silver__decoded_logs') }}
{{ config(
materialized = 'incremental',
unique_key = "swaps_inner_intermediate_jupiterv6_id",
incremental_predicates = ["dynamic_range_predicate", "block_timestamp::date"],
merge_exclude_columns = ["inserted_timestamp"],
cluster_by = ['block_timestamp::DATE','modified_timestamp::DATE'],
post_hook = enable_search_optimization(
'{{this.schema}}',
'{{this.identifier}}',
'ON EQUALITY(tx_id, swapper, from_mint, to_mint)'
),
tags = ['scheduled_non_core'],
) }}
{% if execute %}
{% set base_query %}
CREATE OR REPLACE TEMPORARY TABLE silver.swaps_inner_intermediate_jupiterv6__intermediate_tmp AS
SELECT
block_timestamp,
block_id,
tx_id,
index,
inner_index,
succeeded,
event_type,
decoded_log:args:amm::string AS program_id,
decoded_log:args:inputMint::string AS from_mint,
decoded_log:args:inputAmount::string AS from_amount,
decoded_log:args:outputMint::string AS to_mint,
decoded_log:args:outputAmount::string AS to_amount,
_inserted_timestamp,
FROM
{{ ref('silver__decoded_logs') }}
WHERE
program_id = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'
AND event_type = 'SwapEvent'
AND succeeded
{% if is_incremental() %}
AND _inserted_timestamp >= (
SELECT
MAX(_inserted_timestamp) - INTERVAL '1 hour'
FROM
{{ this }}
)
{% else %}
AND _inserted_timestamp::date >= '2024-06-12'
AND _inserted_timestamp::date < '2024-06-14'
{% endif %}
{% if is_incremental() %}
UNION ALL
SELECT
l.block_timestamp,
l.block_id,
l.tx_id,
l.index,
l.inner_index,
l.succeeded,
l.event_type,
l.decoded_log:args:amm::string AS program_id,
l.decoded_log:args:inputMint::string AS from_mint,
l.decoded_log:args:inputAmount::string AS from_amount,
l.decoded_log:args:outputMint::string AS to_mint,
l.decoded_log:args:outputAmount::string AS to_amount,
l._inserted_timestamp,
FROM
{{ this }} s
INNER JOIN
{{ ref('silver__decoded_logs') }} l
ON s.block_timestamp::date = l.block_timestamp::date
AND s.tx_id = l.tx_id
AND s.index = l.index
AND coalesce(s.inner_index,-1) = coalesce(l.inner_index,-1)
WHERE
l.program_id = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'
AND l.event_type = 'SwapEvent'
AND l.succeeded
AND s.swapper IS NULL
AND s._inserted_timestamp >= current_date - 2 /* only look back 2 days */
{% endif %}
{% endset %}
{% do run_query(base_query) %}
{% set between_stmts = fsc_utils.dynamic_range_predicate("silver.swaps_inner_intermediate_jupiterv6__intermediate_tmp","block_timestamp::date") %}
{% endif %}
WITH base AS (
SELECT
*
FROM
silver.swaps_inner_intermediate_jupiterv6__intermediate_tmp
QUALIFY
row_number() OVER (PARTITION BY tx_id, index, coalesce(inner_index,-1) ORDER BY _inserted_timestamp DESC) = 1
),
swappers AS (
SELECT
tx_id,
index,
inner_index,
silver.udf_get_account_pubkey_by_name('userTransferAuthority', decoded_instruction:accounts) AS swapper,
lead(inner_index) OVER (PARTITION BY tx_id, index ORDER BY inner_index) AS next_summary_swap_index,
_inserted_timestamp
FROM
{{ ref('silver__decoded_instructions_combined') }}
WHERE
{{ between_stmts }}
AND program_id = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'
AND event_type IN ('exactOutRoute','sharedAccountsExactOutRoute','sharedAccountsRoute','routeWithTokenLedger','route','sharedAccountsRouteWithTokenLedger')
AND swapper IS NOT NULL
QUALIFY
row_number() OVER (PARTITION BY tx_id, index, coalesce(inner_index, -1) ORDER BY _inserted_timestamp DESC) = 1
),
distinct_mints AS (
SELECT DISTINCT
mint
FROM (
SELECT DISTINCT
from_mint AS mint
FROM
base
UNION ALL
SELECT DISTINCT
to_mint
FROM
base
)
),
token_decimals AS (
SELECT DISTINCT
mint,
decimal
FROM
{{ ref('silver__mint_actions') }}
INNER JOIN
distinct_mints
USING(mint)
WHERE
succeeded
AND decimal IS NOT NULL
UNION ALL
SELECT
'So11111111111111111111111111111111111111112',
9
UNION ALL
SELECT
'GyD5AvrcZAhSP5rrhXXGPUHri6sbkRpq67xfG3x8ourT',
9
)
SELECT
b.block_timestamp,
b.block_id,
b.tx_id,
b.index,
b.inner_index,
row_number() OVER (PARTITION BY b.tx_id, b.index, s.inner_index ORDER BY b.inner_index)-1 AS swap_index, /* we want the swap index as it relates to the top level swap instruction */
b.succeeded,
b.program_id AS swap_program_id,
'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4' AS aggregator_program_id,
s.swapper,
b.from_mint,
b.from_amount * pow(10,-d.decimal) AS from_amount,
b.to_mint,
b.to_amount * pow(10,-d2.decimal) AS to_amount,
b._inserted_timestamp,
{{ dbt_utils.generate_surrogate_key(['b.tx_id','b.index','b.inner_index']) }} as swaps_inner_intermediate_jupiterv6_id,
sysdate() as inserted_timestamp,
sysdate() as modified_timestamp,
'{{ invocation_id }}' AS _invocation_id
FROM
base b
LEFT OUTER JOIN
swappers s
ON b.tx_id = s.tx_id
AND b.index = s.index
AND (
s.inner_index IS NULL
OR
(
b.inner_index > s.inner_index
AND (b.inner_index < s.next_summary_swap_index
OR s.next_summary_swap_index IS NULL)
)
)
LEFT OUTER JOIN
token_decimals d
ON b.from_mint = d.mint
LEFT OUTER JOIN
token_decimals d2
ON b.to_mint = d2.mint

View File

@ -0,0 +1,120 @@
version: 2
models:
- name: silver__swaps_inner_intermediate_jupiterv6
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- TX_ID
- INDEX
- INNER_INDEX
where: block_timestamp::date > current_date - 30
- compare_model_subset:
name: silver__swaps_inner_intermediate_jupiterv6_business_logic_test
compare_model: ref('testing__swaps_inner_intermediate_jupiterv6')
compare_columns:
- tx_id
- index
- inner_index
- swap_index
- swapper
- from_mint
- round(from_amount,2)
- to_mint
- round(to_amount,2)
- swap_program_id
model_condition: "where tx_id in ('4UkpYVPGr5uQnr1Zb7AuUrryF8qFYJvHJqGBVkjgQkJEbxTuR4tgx8NG7t329TbHkSUSUnj7E13c18ZQ6XbDf34T',
'Cn7LBvp6iRdg3SMPbRsZx88kVzhDsRXt6EXxpqhH8DpwziLBbDuKh9Ay8cpiHiSRoXX7bVj5ueYtAU4wtWeGmFa',
'4ExHEmvVXiXgGCHVWrfD8cshnQA3GvV84dTGbSsoXBr9NZHAoEDMHKiT8jY44AreyAkorc34UyNamJjKWbPgQQv9',
'5UMtTnzJRZDnKYjM1nnVzU46gnys98EZySiUUkWEaWj2G82D7EhzxQHdPJ6nYDDd5T9dB7KanGQHKwWdXN5KXjGh',
'5bnJuU5wkckz82WZLDPcA9v6uFwX1QJg7t9pL56cRbLc9VPNYaNKTo2ddRB1AECkSEmoHBYQsjtSLr7dguSGscUc',
'3ho3m3EYmWy5T3GPvL83HQw2ntezXYXYiwqhJyV6izFGPUEkRMgtzT9Hp67ftvaXxCpbZH2W4LWTDR55G7DMEAcF',
'32q7kcFadu2gzNSaTviBpdSfa9GHEuHb9JC8morJqUKGPtVa7ndknTJ1VBwFWFZ2un9kaqd8WbQxBAJUBjG5t71X')"
recent_date_filter: &recent_date_filter
config:
where: _inserted_timestamp >= current_date - 7
columns:
- name: BLOCK_TIMESTAMP
description: "{{ doc('block_timestamp') }}"
tests:
- not_null: *recent_date_filter
- dbt_expectations.expect_row_values_to_have_recent_data:
datepart: day
interval: 2
- name: BLOCK_ID
description: "{{ doc('block_id') }}"
tests:
- not_null: *recent_date_filter
- name: TX_ID
description: "{{ doc('tx_id') }}"
tests:
- not_null: *recent_date_filter
- name: INDEX
description: "{{ doc('event_index') }}"
tests:
- not_null: *recent_date_filter
- name: INNER_INDEX
description: "{{ doc('inner_index') }}. This is the inner index of the log event listing the inner swap"
tests:
- not_null: *recent_date_filter
- name: SWAP_INDEX
description: "{{ doc('swaps_swap_index') }} as it relates to the top level Jupiter V6 swap instruction"
tests:
- not_null: *recent_date_filter
- name: SUCCEEDED
description: "{{ doc('tx_succeeded') }}"
tests:
- not_null: *recent_date_filter
- name: SWAP_PROGRAM_ID
description: "{{ doc('program_id') }}. This is the AMM performing the swap."
tests:
- not_null: *recent_date_filter
- name: AGGREGATOR_PROGRAM_ID
description: "{{ doc('program_id') }}. This is the aggregator calling the different AMMs."
tests:
- not_null: *recent_date_filter
- accepted_values:
values: ['JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4']
<<: *recent_date_filter
- name: SWAPPER
description: "{{ doc('swaps_swapper') }}"
tests:
- not_null:
where: _inserted_timestamp between current_date - 7 and current_date - 2 # allow it to be null during lookback buffer
- name: FROM_AMOUNT
description: "{{ doc('swaps_from_amt') }}"
tests:
- not_null: *recent_date_filter
- name: FROM_MINT
description: "{{ doc('swaps_from_mint') }}"
tests:
- not_null: *recent_date_filter
- name: TO_AMOUNT
description: "{{ doc('swaps_to_amt') }}"
tests:
- not_null: *recent_date_filter
- name: TO_MINT
description: "{{ doc('swaps_to_mint') }}"
tests:
- not_null: *recent_date_filter
- name: _INSERTED_TIMESTAMP
description: "{{ doc('_inserted_timestamp') }}"
tests:
- not_null
- name: SWAPS_INNER_INTERMEDIATE_JUPITERV6_ID
description: '{{ doc("pk") }}'
tests:
- unique: *recent_date_filter
- name: INSERTED_TIMESTAMP
description: '{{ doc("inserted_timestamp") }}'
tests:
- not_null: *recent_date_filter
- name: MODIFIED_TIMESTAMP
description: '{{ doc("modified_timestamp") }}'
tests:
- not_null: *recent_date_filter
- name: _INVOCATION_ID
description: '{{ doc("_invocation_id") }}'
tests:
- not_null:
name: test_silver__not_null_swaps_inner_intermediate_jupiterv6__invocation_id
<<: *recent_date_filter