Documentation
¶
Index ¶
- Constants
- Variables
- func GetAllBotFeeAccounts() []string
- func GetBotName(account string) string
- func GetBotNames() []string
- func GetProgramName(programId string) string
- func GetTokenDecimals(mint string) (uint8, bool)
- func IsBotFeeAccount(account string) bool
- func IsDexProgram(programId string) bool
- func IsFeeAccount(account string) bool
- func IsQuoteToken(mint string) bool
- func IsSOL(mint string) bool
- func IsSPLBurnInstruction(instructionType uint8) bool
- func IsSPLMintInstruction(instructionType uint8) bool
- func IsSPLTransferInstruction(instructionType uint8) bool
- func IsStablecoin(mint string) bool
- func IsSystemProgram(programId string) bool
- func MatchAnyDiscriminator(data []byte, discriminators map[string][]byte) (string, bool)
- func MatchDiscriminator(data []byte, discriminator []byte) bool
- type BoopfunDiscriminators
- type DFlowDiscriminators
- type DexProgram
- type GoonFiDiscriminators
- type HeavenDiscriminators
- type HumidiFiDiscriminators
- type JupiterDCADiscriminators
- type JupiterDiscriminators
- type JupiterLimitOrderDiscriminators
- type JupiterLimitOrderV2Discriminators
- type JupiterVADiscriminators
- type MetaplexDiscriminators
- type MeteoraDAMMDiscriminators
- type MeteoraDAMMV2Discriminators
- type MeteoraDBCDiscriminators
- type MeteoraDLMMDiscriminators
- type MoonitDiscriminators
- type ObricDiscriminators
- type OrcaDiscriminators
- type PhotonDiscriminators
- type PumpfunDiscriminators
- type PumpswapDiscriminators
- type RaydiumCLAddLiquidityDiscriminators
- type RaydiumCLCreateDiscriminators
- type RaydiumCLDiscriminators
- type RaydiumCLEventDiscriminators
- type RaydiumCLRemoveLiquidityDiscriminators
- type RaydiumCLSwapDiscriminators
- type RaydiumCPMMDiscriminators
- type RaydiumDiscriminators
- type RaydiumLCPDiscriminators
- type SolFiDiscriminators
- type SugarDiscriminators
Constants ¶
const ( SPLTokenInitializeMint = 0 SPLTokenInitializeAccount = 1 SPLTokenInitializeMultisig = 2 SPLTokenTransfer = 3 SPLTokenApprove = 4 SPLTokenRevoke = 5 SPLTokenSetAuthority = 6 SPLTokenMintTo = 7 SPLTokenBurn = 8 SPLTokenCloseAccount = 9 SPLTokenFreezeAccount = 10 SPLTokenThawAccount = 11 SPLTokenTransferChecked = 12 SPLTokenApproveChecked = 13 SPLTokenMintToChecked = 14 SPLTokenBurnChecked = 15 )
SPL Token instruction types
const ( SystemCreateAccount = 0 SystemAssign = 1 SystemTransfer = 2 SystemCreateAccountWithSeed = 3 SystemAdvanceNonceAccount = 4 SystemWithdrawNonceAccount = 5 SystemInitializeNonceAccount = 6 SystemAuthorizeNonceAccount = 7 SystemAllocate = 8 SystemAllocateWithSeed = 9 SystemAssignWithSeed = 10 SystemTransferWithSeed = 11 SystemUpgradeNonceAccount = 12 SystemCreateAccountWithSeedChecked = 13 SystemCreateIdempotent = 14 )
System instruction types
const ( // System program ID (SOL transfers) SYSTEM_PROGRAM_ID = "11111111111111111111111111111111" // SPL Token program ID TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" // SPL Token 2022 program ID TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" // Associated Token Account program ID ASSOCIATED_TOKEN_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" // Metaplex Token Metadata program ID METAPLEX_PROGRAM_ID = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" // Address Lookup Table program ALT_PROGRAM_ID = "AddressLookupTab1e1111111111111111111111111" )
Token program constants
Variables ¶
var BOT_FEE_ACCOUNTS = map[string][]string{
"Trojan": {
"9yMwSPk9mrXSN7yDHUuZurAh1sjbJsfpUqjZ7SvVtdco",
},
"BONKbot": {
"ZG98FUCjb8mJ824Gbs6RsgVmr1FhXb2oNiJHa2dwmPd",
},
"Axiom": {
"7LCZckF6XXGQ1hDY6HFXBKWAtiUgL9QY5vj1C4Bn1Qjj",
"4V65jvcDG9DSQioUVqVPiUcUY9v6sb6HKtMnsxSKEz5S",
"CeA3sPZfWWToFEBmw5n1Y93tnV66Vmp8LacLzsVprgxZ",
"AaG6of1gbj1pbDumvbSiTuJhRCRkkUNaWVxijSbWvTJW",
"7oi1L8U9MRu5zDz5syFahsiLUric47LzvJBQX6r827ws",
"9kPrgLggBJ69tx1czYAbp7fezuUmL337BsqQTKETUEhP",
"DKyUs1xXMDy8Z11zNsLnUg3dy9HZf6hYZidB6WodcaGy",
"4FobGn5ZWYquoJkxMzh2VUAWvV36xMgxQ3M7uG1pGGhd",
"76sxKrPtgoJHDJvxwFHqb3cAXWfRHFLe3VpKcLCAHSEf",
"H2cDR3EkJjtTKDQKk8SJS48du9mhsdzQhy8xJx5UMqQK",
"8m5GkL7nVy95G4YVUbs79z873oVKqg2afgKRmqxsiiRm",
"4kuG6NsAFJNwqEkac8GFDMMheCGKUPEbaRVHHyFHSwWz",
"8vFGAKdwpn4hk7kc1cBgfWZzpyW3MEMDATDzVZhddeQb",
"86Vh4XGLW2b6nvWbRyDs4ScgMXbuvRCHT7WbUT3RFxKG",
"DZfEurFKFtSbdWZsKSDTqpqsQgvXxmESpvRtXkAdgLwM",
"5L2QKqDn5ukJSWGyqR4RPvFvwnBabKWqAqMzH4heaQNB",
"DYVeNgXGLAhZdeLMMYnCw1nPnMxkBN7fJnNpHmizTrrF",
"Hbj6XdxX6eV4nfbYTseysibp4zZJtVRRPn2J3BhGRuK9",
"846ah7iBSu9ApuCyEhA5xpnjHHX7d4QJKetWLbwzmJZ8",
"5BqYhuD4q1YD3DMAYkc1FeTu9vqQVYYdfBAmkZjamyZg",
},
"GMGN": {
"BB5dnY55FXS1e1NXqZDwCzgdYJdMCj3B92PU6Q5Fb6DT",
"7sHXjs1j7sDJGVSMSPjD1b4v3FD6uRSvRWfhRdfv5BiA",
"HeZVpHj9jLwTVtMMbzQRf6mLtFPkWNSg11o68qrbUBa3",
"ByRRgnZenY6W2sddo1VJzX9o4sMU4gPDUkcmgrpGBxRy",
"DXfkEGoo6WFsdL7x6gLZ7r6Hw2S6HrtrAQVPWYx2A1s9",
"3t9EKmRiAUcQUYzTZpNojzeGP1KBAVEEbDNmy6wECQpK",
"DymeoWc5WLNiQBaoLuxrxDnDRvLgGZ1QGsEoCAM7Jsrx",
"dBhdrmwBkRa66XxBuAK4WZeZnsZ6bHeHCCLXa3a8bTJ",
"6TxjC5wJzuuZgTtnTMipwwULEbMPx5JPW3QwWkdTGnrn",
},
"BullX": {
"9RYJ3qr5eU5xAooqVcbmdeusjcViL5Nkiq7Gske3tiKq",
"F4hJ3Ee3c5UuaorKAMfELBjYCjiiLH75haZTKqTywRP3",
},
"Maestro": {
"MaestroUL88UBnZr3wfoN7hqmNWFi3ZYCGqZoJJHE36",
"FRMxAnZgkW58zbYcE7Bxqsg99VWpJh6sMP5xLzAWNabN",
},
"Bloom": {
"7HeD6sLLqAnKVRuSfc1Ko3BSPMNKWgGTiWLKXJF31vKM",
},
"BananaGun": {
"47hEzz83VFR23rLTEeVm9A7eFzjJwjvdupPPmX3cePqF",
"4BBNEVRgrxVKv9f7pMNE788XM1tt379X9vNjpDH2KCL7",
"8r2hZoDfk5hDWJ1sDujAi2Qr45ZyZw5EQxAXiMZWLKh2",
},
"Raybot": {
"4mih95RmBqfHYvEfqq6uGGLp1Fr3gVS3VNSEa3JVRfQK",
},
}
BOT_FEE_ACCOUNTS maps bot names to their fee account addresses Trading bots are detected by SOL transfers to these fee accounts
var DEX_PROGRAMS = struct { // DEX Aggregators JUPITER DexProgram JUPITER_V2 DexProgram JUPITER_V4 DexProgram JUPITER_DCA DexProgram JUPITER_DCA_KEEPER1 DexProgram JUPITER_DCA_KEEPER2 DexProgram JUPITER_DCA_KEEPER3 DexProgram JUPITER_LIMIT_ORDER DexProgram JUPITER_LIMIT_ORDER_V2 DexProgram JUPITER_VA DexProgram OKX_DEX DexProgram OKX_ROUTER DexProgram RAYDIUM_ROUTE DexProgram SANCTUM DexProgram PHOTON DexProgram // Major DEX Protocols RAYDIUM_V4 DexProgram RAYDIUM_AMM DexProgram RAYDIUM_CPMM DexProgram RAYDIUM_CL DexProgram RAYDIUM_LCP DexProgram ORCA DexProgram ORCA_V2 DexProgram ORCA_V1 DexProgram PHOENIX DexProgram OPENBOOK DexProgram METEORA DexProgram METEORA_DAMM DexProgram METEORA_DAMM_V2 DexProgram METEORA_DBC DexProgram SERUM_V3 DexProgram // Vault Programs METEORA_VAULT DexProgram STABBEL_VAULT DexProgram // Trading Bot Programs BANANA_GUN DexProgram MINTECH DexProgram BLOOM DexProgram MAESTRO DexProgram NOVA DexProgram APEPRO DexProgram // Other DEX Protocols ALDRIN DexProgram ALDRIN_V2 DexProgram CREMA DexProgram GOOSEFX DexProgram LIFINITY DexProgram LIFINITY_V2 DexProgram MERCURIAL DexProgram MOONIT DexProgram ONEDEX DexProgram PUMP_FUN DexProgram PUMP_SWAP DexProgram SABER DexProgram SAROS DexProgram SOLFI DexProgram STABBEL DexProgram STABBEL_WEIGHT DexProgram BOOP_FUN DexProgram ZERO_FI DexProgram SUGAR DexProgram HEAVEN DexProgram HEAVEN_VAULT DexProgram // Prop AMM Protocols (Dark Pools) GOONFI DexProgram OBRIC_V2 DexProgram HUMIDIFI DexProgram // Additional Aggregators DFLOW DexProgram }{ JUPITER: DexProgram{ ID: "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", Name: "Jupiter", Tags: []string{"route"}, }, JUPITER_V2: DexProgram{ ID: "JUP2jxvXaqu7NQY1GmNF4m1vodw12LVXYxbFL2uJvfo", Name: "JupiterV2", Tags: []string{"route"}, }, JUPITER_V4: DexProgram{ ID: "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB", Name: "JupiterV4", Tags: []string{"route"}, }, JUPITER_DCA: DexProgram{ ID: "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M", Name: "JupiterDCA", Tags: []string{"route"}, }, JUPITER_DCA_KEEPER1: DexProgram{ ID: "DCAKxn5PFNN1mBREPWGdk1RXg5aVH9rPErLfBFEi2Emb", Name: "JupiterDcaKeeper1", Tags: []string{"route"}, }, JUPITER_DCA_KEEPER2: DexProgram{ ID: "DCAKuApAuZtVNYLk3KTAVW9GLWVvPbnb5CxxRRmVgcTr", Name: "JupiterDcaKeeper2", Tags: []string{"route"}, }, JUPITER_DCA_KEEPER3: DexProgram{ ID: "DCAK36VfExkPdAkYUQg6ewgxyinvcEyPLyHjRbmveKFw", Name: "JupiterDcaKeeper3", Tags: []string{"route"}, }, JUPITER_LIMIT_ORDER: DexProgram{ ID: "jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu", Name: "JupiterLimit", Tags: []string{"route"}, }, JUPITER_LIMIT_ORDER_V2: DexProgram{ ID: "j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X", Name: "JupiterLimitV2", Tags: []string{"route"}, }, JUPITER_VA: DexProgram{ ID: "VALaaymxQh2mNy2trH9jUqHT1mTow76wpTcGmSWSwJe", Name: "JupiterVA", Tags: []string{"route"}, }, OKX_DEX: DexProgram{ ID: "6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma", Name: "OKX", Tags: []string{"route"}, }, OKX_ROUTER: DexProgram{ ID: "HV1KXxWFaSeriyFvXyx48FqG9BoFbfinB8njCJonqP7K", Name: "OKXRouter", Tags: []string{"route"}, }, RAYDIUM_ROUTE: DexProgram{ ID: "routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS", Name: "RaydiumRoute", Tags: []string{"route"}, }, SANCTUM: DexProgram{ ID: "stkitrT1Uoy18Dk1fTrgPw8W6MVzoCfYoAFT4MLsmhq", Name: "Sanctum", Tags: []string{"route"}, }, PHOTON: DexProgram{ ID: "BSfD6SHZigAfDWSjzD5Q41jw8LmKwtmjskPH9XW1mrRW", Name: "Photon", Tags: []string{"route"}, }, RAYDIUM_V4: DexProgram{ ID: "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", Name: "RaydiumV4", Tags: []string{"amm"}, }, RAYDIUM_AMM: DexProgram{ ID: "5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h", Name: "RaydiumAMM", Tags: []string{"amm"}, }, RAYDIUM_CPMM: DexProgram{ ID: "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C", Name: "RaydiumCPMM", Tags: []string{"amm"}, }, RAYDIUM_CL: DexProgram{ ID: "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK", Name: "RaydiumCL", Tags: []string{"amm"}, }, RAYDIUM_LCP: DexProgram{ ID: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj", Name: "RaydiumLaunchpad", Tags: []string{"amm"}, }, ORCA: DexProgram{ ID: "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc", Name: "Orca", Tags: []string{"amm"}, }, ORCA_V2: DexProgram{ ID: "9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP", Name: "OrcaV2", Tags: []string{"amm"}, }, ORCA_V1: DexProgram{ ID: "DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1", Name: "OrcaV1", Tags: []string{"amm"}, }, PHOENIX: DexProgram{ ID: "PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY", Name: "Phoenix", Tags: []string{"route", "amm"}, }, OPENBOOK: DexProgram{ ID: "opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb", Name: "Openbook", Tags: []string{"amm"}, }, METEORA: DexProgram{ ID: "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo", Name: "MeteoraDLMM", Tags: []string{"amm"}, }, METEORA_DAMM: DexProgram{ ID: "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB", Name: "MeteoraDamm", Tags: []string{"amm"}, }, METEORA_DAMM_V2: DexProgram{ ID: "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", Name: "MeteoraDammV2", Tags: []string{"amm"}, }, METEORA_DBC: DexProgram{ ID: "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN", Name: "MeteoraDBC", Tags: []string{"amm"}, }, SERUM_V3: DexProgram{ ID: "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin", Name: "SerumV3", Tags: []string{"amm", "vault"}, }, METEORA_VAULT: DexProgram{ ID: "24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi", Name: "MeteoraVault", Tags: []string{"vault"}, }, STABBEL_VAULT: DexProgram{ ID: "vo1tWgqZMjG61Z2T9qUaMYKqZ75CYzMuaZ2LZP1n7HV", Name: "StabbleVault", Tags: []string{"vault"}, }, BANANA_GUN: DexProgram{ ID: "BANANAjs7FJiPQqJTGFzkZJndT9o7UmKiYYGaJz6frGu", Name: "BananaGun", Tags: []string{"bot"}, }, MINTECH: DexProgram{ ID: "minTcHYRLVPubRK8nt6sqe2ZpWrGDLQoNLipDJCGocY", Name: "Mintech", Tags: []string{"bot"}, }, BLOOM: DexProgram{ ID: "b1oomGGqPKGD6errbyfbVMBuzSC8WtAAYo8MwNafWW1", Name: "Bloom", Tags: []string{"bot"}, }, MAESTRO: DexProgram{ ID: "MaestroAAe9ge5HTc64VbBQZ6fP77pwvrhM8i1XWSAx", Name: "Maestro", Tags: []string{"bot"}, }, NOVA: DexProgram{ ID: "NoVA1TmDUqksaj2hB1nayFkPysjJbFiU76dT4qPw2wm", Name: "Nova", Tags: []string{"bot"}, }, APEPRO: DexProgram{ ID: "JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw", Name: "Apepro", Tags: []string{"bot"}, }, ALDRIN: DexProgram{ ID: "AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6", Name: "Aldrin", Tags: []string{"amm"}, }, ALDRIN_V2: DexProgram{ ID: "CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4", Name: "Aldrin V2", Tags: []string{"amm"}, }, CREMA: DexProgram{ ID: "CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR", Name: "Crema", Tags: []string{"amm"}, }, GOOSEFX: DexProgram{ ID: "GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT", Name: "GooseFX GAMMA", Tags: []string{"amm"}, }, LIFINITY: DexProgram{ ID: "EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S", Name: "Lifinity", Tags: []string{"amm"}, }, LIFINITY_V2: DexProgram{ ID: "2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c", Name: "LifinityV2", Tags: []string{"amm"}, }, MERCURIAL: DexProgram{ ID: "MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky", Name: "Mercurial", Tags: []string{"amm"}, }, MOONIT: DexProgram{ ID: "MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG", Name: "Moonit", Tags: []string{"amm"}, }, ONEDEX: DexProgram{ ID: "DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm", Name: "1Dex", Tags: []string{"amm"}, }, PUMP_FUN: DexProgram{ ID: "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", Name: "Pumpfun", Tags: []string{"amm"}, }, PUMP_SWAP: DexProgram{ ID: "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA", Name: "Pumpswap", Tags: []string{"amm"}, }, SABER: DexProgram{ ID: "SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ", Name: "Saber", Tags: []string{"amm"}, }, SAROS: DexProgram{ ID: "SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr", Name: "Saros", Tags: []string{"amm"}, }, SOLFI: DexProgram{ ID: "SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe", Name: "SolFi", Tags: []string{"amm"}, }, STABBEL: DexProgram{ ID: "swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ", Name: "Stabble", Tags: []string{"amm"}, }, STABBEL_WEIGHT: DexProgram{ ID: "swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW", Name: "StabbleWeight", Tags: []string{"amm"}, }, BOOP_FUN: DexProgram{ ID: "boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4", Name: "Boopfun", Tags: []string{"amm"}, }, ZERO_FI: DexProgram{ ID: "ZERor4xhbUycZ6gb9ntrhqscUcZmAbQDjEAtCf4hbZY", Name: "ZeroFi", Tags: []string{"amm"}, }, SUGAR: DexProgram{ ID: "deus4Bvftd5QKcEkE5muQaWGWDoma8GrySvPFrBPjhS", Name: "Sugar", Tags: []string{"amm"}, }, HEAVEN: DexProgram{ ID: "HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o", Name: "Heaven", Tags: []string{"amm"}, }, HEAVEN_VAULT: DexProgram{ ID: "HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny", Name: "HeavenStore", Tags: []string{"vault"}, }, GOONFI: DexProgram{ ID: "goonERTdGsjnkZqWuVjs73BZ3Pb9qoCUdBUL17BnS5j", Name: "GoonFi", Tags: []string{"amm"}, }, OBRIC_V2: DexProgram{ ID: "obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y", Name: "ObricV2", Tags: []string{"amm"}, }, HUMIDIFI: DexProgram{ ID: "9H6tua7jkLhdm3w8BvgpTn5LZNU7g4ZynDmCiNN3q6Rp", Name: "HumidiFi", Tags: []string{"amm"}, }, DFLOW: DexProgram{ ID: "DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH", Name: "DFlow", Tags: []string{"route"}, }, }
DEX_PROGRAMS contains all supported DEX program configurations
var DEX_PROGRAM_IDS = []string{ DEX_PROGRAMS.JUPITER.ID, DEX_PROGRAMS.JUPITER_V2.ID, DEX_PROGRAMS.JUPITER_V4.ID, DEX_PROGRAMS.JUPITER_DCA.ID, DEX_PROGRAMS.JUPITER_DCA_KEEPER1.ID, DEX_PROGRAMS.JUPITER_DCA_KEEPER2.ID, DEX_PROGRAMS.JUPITER_DCA_KEEPER3.ID, DEX_PROGRAMS.JUPITER_LIMIT_ORDER.ID, DEX_PROGRAMS.JUPITER_LIMIT_ORDER_V2.ID, DEX_PROGRAMS.JUPITER_VA.ID, DEX_PROGRAMS.OKX_DEX.ID, DEX_PROGRAMS.OKX_ROUTER.ID, DEX_PROGRAMS.RAYDIUM_ROUTE.ID, DEX_PROGRAMS.SANCTUM.ID, DEX_PROGRAMS.PHOTON.ID, DEX_PROGRAMS.RAYDIUM_V4.ID, DEX_PROGRAMS.RAYDIUM_AMM.ID, DEX_PROGRAMS.RAYDIUM_CPMM.ID, DEX_PROGRAMS.RAYDIUM_CL.ID, DEX_PROGRAMS.RAYDIUM_LCP.ID, DEX_PROGRAMS.ORCA.ID, DEX_PROGRAMS.ORCA_V2.ID, DEX_PROGRAMS.ORCA_V1.ID, DEX_PROGRAMS.PHOENIX.ID, DEX_PROGRAMS.OPENBOOK.ID, DEX_PROGRAMS.METEORA.ID, DEX_PROGRAMS.METEORA_DAMM.ID, DEX_PROGRAMS.METEORA_DAMM_V2.ID, DEX_PROGRAMS.METEORA_DBC.ID, DEX_PROGRAMS.SERUM_V3.ID, DEX_PROGRAMS.METEORA_VAULT.ID, DEX_PROGRAMS.STABBEL_VAULT.ID, DEX_PROGRAMS.BANANA_GUN.ID, DEX_PROGRAMS.MINTECH.ID, DEX_PROGRAMS.BLOOM.ID, DEX_PROGRAMS.MAESTRO.ID, DEX_PROGRAMS.NOVA.ID, DEX_PROGRAMS.APEPRO.ID, DEX_PROGRAMS.ALDRIN.ID, DEX_PROGRAMS.ALDRIN_V2.ID, DEX_PROGRAMS.CREMA.ID, DEX_PROGRAMS.GOOSEFX.ID, DEX_PROGRAMS.LIFINITY.ID, DEX_PROGRAMS.LIFINITY_V2.ID, DEX_PROGRAMS.MERCURIAL.ID, DEX_PROGRAMS.MOONIT.ID, DEX_PROGRAMS.ONEDEX.ID, DEX_PROGRAMS.PUMP_FUN.ID, DEX_PROGRAMS.PUMP_SWAP.ID, DEX_PROGRAMS.SABER.ID, DEX_PROGRAMS.SAROS.ID, DEX_PROGRAMS.SOLFI.ID, DEX_PROGRAMS.STABBEL.ID, DEX_PROGRAMS.STABBEL_WEIGHT.ID, DEX_PROGRAMS.BOOP_FUN.ID, DEX_PROGRAMS.ZERO_FI.ID, DEX_PROGRAMS.SUGAR.ID, DEX_PROGRAMS.HEAVEN.ID, DEX_PROGRAMS.HEAVEN_VAULT.ID, DEX_PROGRAMS.GOONFI.ID, DEX_PROGRAMS.OBRIC_V2.ID, DEX_PROGRAMS.HUMIDIFI.ID, DEX_PROGRAMS.DFLOW.ID, }
DEX_PROGRAM_IDS is a list of all DEX program IDs
var DISCRIMINATORS = struct { JUPITER JupiterDiscriminators JUPITER_DCA JupiterDCADiscriminators JUPITER_LIMIT_ORDER JupiterLimitOrderDiscriminators JUPITER_LIMIT_ORDER_V2 JupiterLimitOrderV2Discriminators JUPITER_VA JupiterVADiscriminators PUMPFUN PumpfunDiscriminators PUMPSWAP PumpswapDiscriminators MOONIT MoonitDiscriminators RAYDIUM RaydiumDiscriminators RAYDIUM_CL RaydiumCLDiscriminators RAYDIUM_CPMM RaydiumCPMMDiscriminators RAYDIUM_LCP RaydiumLCPDiscriminators METEORA_DLMM MeteoraDLMMDiscriminators METEORA_DAMM MeteoraDAMMDiscriminators METEORA_DAMM_V2 MeteoraDAMMV2Discriminators METEORA_DBC MeteoraDBCDiscriminators ORCA OrcaDiscriminators BOOPFUN BoopfunDiscriminators HEAVEN HeavenDiscriminators METAPLEX MetaplexDiscriminators SUGAR SugarDiscriminators PHOTON PhotonDiscriminators SOLFI SolFiDiscriminators GOONFI GoonFiDiscriminators OBRIC ObricDiscriminators DFLOW DFlowDiscriminators HUMIDIFI HumidiFiDiscriminators }{ JUPITER: JupiterDiscriminators{ ROUTE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 64, 198, 205, 232, 38, 8, 113, 226}, ROUTE: []byte{229, 23, 203, 151, 122, 227, 173, 42}, ROUTE_EXACT_OUT: []byte{208, 51, 239, 151, 123, 43, 237, 92}, ROUTE_WITH_TOKEN_LEDGER: []byte{150, 86, 71, 116, 167, 93, 14, 104}, SHARE_ACCOUNTS_ROUTE: []byte{193, 32, 155, 51, 65, 214, 156, 129}, SHARE_ACCOUNTS_EXACT_OUT_ROUTE: []byte{176, 209, 105, 168, 154, 125, 69, 62}, SHARE_ACCOUNTS_ROUTE_WITH_TOKEN_LEDGER: []byte{230, 121, 143, 80, 119, 159, 106, 170}, }, JUPITER_DCA: JupiterDCADiscriminators{ FILLED: []byte{228, 69, 165, 46, 81, 203, 154, 29, 134, 4, 17, 63, 221, 45, 177, 173}, CLOSE_DCA: []byte{22, 7, 33, 98, 168, 183, 34, 243}, OPEN_DCA: []byte{36, 65, 185, 54, 1, 210, 100, 163}, OPEN_DCA_V2: []byte{142, 119, 43, 109, 162, 52, 11, 177}, }, JUPITER_LIMIT_ORDER: JupiterLimitOrderDiscriminators{ CANCEL_ORDER: []byte{95, 129, 237, 240, 8, 49, 223, 132}, CREATE_ORDER: []byte{133, 110, 74, 175, 112, 159, 245, 159}, TRADE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 189, 219, 127, 211, 78, 230, 97, 238}, UNKNOWN: []byte{232, 122, 115, 25, 199, 143, 136, 162}, FLASH_FILL_ORDER: []byte{252, 104, 18, 134, 164, 78, 18, 140}, }, JUPITER_LIMIT_ORDER_V2: JupiterLimitOrderV2Discriminators{ CANCEL_ORDER: []byte{95, 129, 237, 240, 8, 49, 223, 132}, CREATE_ORDER_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 49, 142, 72, 166, 230, 29, 84, 84}, TRADE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 189, 219, 127, 211, 78, 230, 97, 238}, UNKNOWN: []byte{232, 122, 115, 25, 199, 143, 136, 162}, FLASH_FILL_ORDER: []byte{252, 104, 18, 134, 164, 78, 18, 140}, }, JUPITER_VA: JupiterVADiscriminators{ FILL_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 78, 225, 199, 154, 86, 219, 224, 169}, OPEN_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 104, 220, 224, 191, 87, 241, 132, 61}, CLOSE_EVENT: []byte{}, DEPOSIT_EVENT: []byte{}, WITHDRAW_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 192, 241, 201, 217, 70, 150, 90, 247}, }, PUMPFUN: PumpfunDiscriminators{ CREATE: []byte{24, 30, 200, 40, 5, 28, 7, 119}, MIGRATE: []byte{155, 234, 231, 146, 236, 158, 162, 30}, BUY: []byte{102, 6, 61, 18, 1, 218, 235, 234}, SELL: []byte{51, 230, 133, 164, 1, 127, 131, 173}, TRADE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 189, 219, 127, 211, 78, 230, 97, 238}, CREATE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 27, 114, 169, 77, 222, 235, 99, 118}, COMPLETE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 95, 114, 97, 156, 212, 46, 152, 8}, MIGRATE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 189, 233, 93, 185, 92, 148, 234, 148}, }, PUMPSWAP: PumpswapDiscriminators{ CREATE_POOL: []byte{233, 146, 209, 142, 207, 104, 64, 188}, ADD_LIQUIDITY: []byte{242, 35, 198, 137, 82, 225, 242, 182}, REMOVE_LIQUIDITY: []byte{183, 18, 70, 156, 148, 109, 161, 34}, BUY: []byte{102, 6, 61, 18, 1, 218, 235, 234}, SELL: []byte{51, 230, 133, 164, 1, 127, 131, 173}, CREATE_POOL_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 177, 49, 12, 210, 160, 118, 167, 116}, ADD_LIQUIDITY_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 120, 248, 61, 83, 31, 142, 107, 144}, REMOVE_LIQUIDITY_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 22, 9, 133, 26, 160, 44, 71, 192}, BUY_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 103, 244, 82, 31, 44, 245, 119, 119}, SELL_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 62, 47, 55, 10, 165, 3, 220, 42}, }, MOONIT: MoonitDiscriminators{ BUY: []byte{102, 6, 61, 18, 1, 218, 235, 234}, SELL: []byte{51, 230, 133, 164, 1, 127, 131, 173}, CREATE: []byte{3, 44, 164, 184, 123, 13, 245, 179}, MIGRATE: []byte{42, 229, 10, 231, 189, 62, 193, 174}, }, RAYDIUM: RaydiumDiscriminators{ CREATE: []byte{1}, ADD_LIQUIDITY: []byte{3}, REMOVE_LIQUIDITY: []byte{4}, SWAP: []byte{9}, SWAP_EXACT_OUT: []byte{11}, }, RAYDIUM_CL: RaydiumCLDiscriminators{ CREATE: RaydiumCLCreateDiscriminators{ OPEN_POSITION: []byte{135, 128, 47, 77, 15, 152, 240, 49}, OPEN_POSITION_V2: []byte{77, 184, 74, 214, 112, 86, 241, 199}, CREATE_POOL: []byte{233, 146, 209, 142, 207, 104, 64, 188}, }, ADD_LIQUIDITY: RaydiumCLAddLiquidityDiscriminators{ INCREASE_LIQUIDITY: []byte{46, 156, 243, 118, 13, 205, 251, 178}, INCREASE_LIQUIDITY_V2: []byte{133, 29, 89, 223, 69, 238, 176, 10}, OPEN_POSITION_WITH_TOKEN22: []byte{77, 255, 174, 82, 125, 29, 201, 46}, }, REMOVE_LIQUIDITY: RaydiumCLRemoveLiquidityDiscriminators{ DECREASE_LIQUIDITY: []byte{160, 38, 208, 111, 104, 91, 44, 1}, DECREASE_LIQUIDITY_V2: []byte{58, 127, 188, 62, 79, 82, 196, 96}, CLOSE_POSITION: []byte{123, 134, 81, 0, 49, 68, 98, 98}, }, SWAP: RaydiumCLSwapDiscriminators{ SWAP: []byte{248, 198, 158, 145, 225, 117, 135, 200}, SWAP_V2: []byte{43, 4, 237, 11, 26, 201, 30, 98}, SWAP_ROUTER_BASE_IN: []byte{69, 125, 115, 218, 245, 186, 242, 196}, }, EVENTS: RaydiumCLEventDiscriminators{ COLLECT_PERSONAL_FEE: []byte{166, 174, 105, 192, 81, 161, 83, 105}, COLLECT_PROTOCOL_FEE: []byte{206, 87, 17, 79, 45, 41, 213, 61}, CONFIG_CHANGE: []byte{247, 189, 7, 119, 106, 112, 95, 151}, CREATE_PERSONAL_POSITION: []byte{100, 30, 87, 249, 196, 223, 154, 206}, DECREASE_LIQUIDITY: []byte{58, 222, 86, 58, 68, 50, 85, 56}, INCREASE_LIQUIDITY: []byte{49, 79, 105, 212, 32, 34, 30, 84}, LIQUIDITY_CALCULATE: []byte{237, 112, 148, 230, 57, 84, 180, 162}, LIQUIDITY_CHANGE: []byte{126, 240, 175, 206, 158, 88, 153, 107}, POOL_CREATED: []byte{25, 94, 75, 47, 112, 99, 53, 63}, SWAP: []byte{64, 198, 205, 232, 38, 8, 113, 226}, UPDATE_REWARD_INFOS: []byte{109, 127, 186, 78, 114, 65, 37, 236}, }, }, RAYDIUM_CPMM: RaydiumCPMMDiscriminators{ CREATE: []byte{175, 175, 109, 31, 13, 152, 155, 237}, ADD_LIQUIDITY: []byte{242, 35, 198, 137, 82, 225, 242, 182}, REMOVE_LIQUIDITY: []byte{183, 18, 70, 156, 148, 109, 161, 34}, }, RAYDIUM_LCP: RaydiumLCPDiscriminators{ CREATE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 151, 215, 226, 9, 118, 161, 115, 174}, TRADE_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 189, 219, 127, 211, 78, 230, 97, 238}, MIGRATE_TO_AMM: []byte{207, 82, 192, 145, 254, 207, 145, 223}, MIGRATE_TO_CPSWAP: []byte{136, 92, 200, 103, 28, 218, 144, 140}, BUY_EXACT_IN: []byte{250, 234, 13, 123, 213, 156, 19, 236}, BUY_EXACT_OUT: []byte{24, 211, 116, 40, 105, 3, 153, 56}, SELL_EXACT_IN: []byte{149, 39, 222, 155, 211, 124, 152, 26}, SELL_EXACT_OUT: []byte{95, 200, 71, 34, 8, 9, 11, 166}, INITIALIZE: []byte{175, 175, 109, 31, 13, 152, 155, 237}, }, METEORA_DLMM: MeteoraDLMMDiscriminators{ ADD_LIQUIDITY: map[string][]byte{ "addLiquidity": {181, 157, 89, 67, 143, 182, 52, 72}, "addLiquidityByStrategy": {7, 3, 150, 127, 148, 40, 61, 200}, "addLiquidityByStrategy2": {3, 221, 149, 218, 111, 141, 118, 213}, "addLiquidityByStrategyOneSide": {41, 5, 238, 175, 100, 225, 6, 205}, "addLiquidityOneSide": {94, 155, 103, 151, 70, 95, 220, 165}, "addLiquidityOneSidePrecise": {161, 194, 103, 84, 171, 71, 250, 154}, "addLiquidityByWeight": {28, 140, 238, 99, 231, 162, 21, 149}, }, REMOVE_LIQUIDITY: map[string][]byte{ "removeLiquidity": {80, 85, 209, 72, 24, 206, 177, 108}, "removeLiquidityByRange": {26, 82, 102, 152, 240, 74, 105, 26}, "removeLiquidityByRange2": {204, 2, 195, 145, 53, 145, 145, 205}, "removeAllLiquidity": {10, 51, 61, 35, 112, 105, 24, 85}, "claimFee": {169, 32, 79, 137, 136, 232, 70, 137}, "claimFeeV2": {112, 191, 101, 171, 28, 144, 127, 187}, }, LIQUIDITY_EVENT: map[string][]byte{ "compositionFeeEvent": {228, 69, 165, 46, 81, 203, 154, 29, 128, 151, 123, 106, 17, 102, 113, 142}, "addLiquidityEvent": {228, 69, 165, 46, 81, 203, 154, 29, 31, 94, 125, 90, 227, 52, 61, 186}, "removeLiquidityEvent": {228, 69, 165, 46, 81, 203, 154, 29, 151, 113, 115, 164, 224, 159, 112, 193}, }, }, METEORA_DAMM: MeteoraDAMMDiscriminators{ CREATE: []byte{7, 166, 138, 171, 206, 171, 236, 244}, ADD_LIQUIDITY: []byte{168, 227, 50, 62, 189, 171, 84, 176}, REMOVE_LIQUIDITY: []byte{133, 109, 44, 179, 56, 238, 114, 33}, ADD_IMBALANCE_LIQUIDITY: []byte{79, 35, 122, 84, 173, 15, 93, 191}, }, METEORA_DAMM_V2: MeteoraDAMMV2Discriminators{ INITIALIZE_POOL: []byte{95, 180, 10, 172, 84, 174, 232, 40}, INITIALIZE_CUSTOM_POOL: []byte{20, 161, 241, 24, 189, 221, 180, 2}, INITIALIZE_POOL_WITH_DYNAMIC_CONFIG: []byte{149, 82, 72, 197, 253, 252, 68, 15}, ADD_LIQUIDITY: []byte{181, 157, 89, 67, 143, 182, 52, 72}, CLAIM_POSITION_FEE: []byte{180, 38, 154, 17, 133, 33, 162, 211}, REMOVE_LIQUIDITY: []byte{80, 85, 209, 72, 24, 206, 177, 108}, REMOVE_ALL_LIQUIDITY: []byte{10, 51, 61, 35, 112, 105, 24, 85}, CREATE_POSITION_EVENT: []byte{228, 69, 165, 46, 81, 203, 154, 29, 156, 15, 119, 198, 29, 181, 221, 55}, }, METEORA_DBC: MeteoraDBCDiscriminators{ SWAP: []byte{248, 198, 158, 145, 225, 117, 135, 200}, SWAP_V2: []byte{65, 75, 63, 76, 235, 91, 91, 136}, INITIALIZE_VIRTUAL_POOL_WITH_SPL: []byte{140, 85, 215, 176, 102, 54, 104, 79}, INITIALIZE_VIRTUAL_POOL_WITH_TOKEN2022: []byte{169, 118, 51, 78, 145, 110, 220, 155}, METEORA_DBC_MIGRATE_DAMM: []byte{27, 1, 48, 22, 180, 63, 118, 217}, METEORA_DBC_MIGRATE_DAMM_V2: []byte{156, 169, 230, 103, 53, 228, 80, 64}, }, ORCA: OrcaDiscriminators{ CREATE: []byte{242, 29, 134, 48, 58, 110, 14, 60}, CREATE2: []byte{212, 47, 95, 92, 114, 102, 131, 250}, ADD_LIQUIDITY: []byte{46, 156, 243, 118, 13, 205, 251, 178}, ADD_LIQUIDITY2: []byte{133, 29, 89, 223, 69, 238, 176, 10}, REMOVE_LIQUIDITY: []byte{160, 38, 208, 111, 104, 91, 44, 1}, OTHER1: []byte{164, 152, 207, 99, 30, 186, 19, 182}, OTHER2: []byte{70, 5, 132, 87, 86, 235, 177, 34}, }, BOOPFUN: BoopfunDiscriminators{ CREATE: []byte{84, 52, 204, 228, 24, 140, 234, 75}, DEPLOY: []byte{180, 89, 199, 76, 168, 236, 217, 138}, COMPLETE: []byte{45, 235, 225, 181, 17, 218, 64, 130}, BUY: []byte{138, 127, 14, 91, 38, 87, 115, 105}, SELL: []byte{109, 61, 40, 187, 230, 176, 135, 174}, }, HEAVEN: HeavenDiscriminators{ BUY: []byte{102, 6, 61, 18, 1, 218, 235, 234}, SELL: []byte{51, 230, 133, 164, 1, 127, 131, 173}, CREATE_POOL: []byte{42, 43, 126, 56, 231, 10, 208, 53}, }, METAPLEX: MetaplexDiscriminators{ CREATE_MINT: []byte{42}, }, SUGAR: SugarDiscriminators{ BUY_EXACT_IN: []byte{250, 234, 13, 123, 213, 156, 19, 236}, BUY_EXACT_OUT: []byte{24, 211, 116, 40, 105, 3, 153, 56}, BUY_MAX_OUT: []byte{96, 177, 203, 117, 183, 65, 196, 177}, SELL_EXACT_IN: []byte{149, 39, 222, 155, 211, 124, 152, 26}, SELL_EXACT_OUT: []byte{149, 95, 200, 71, 34, 8, 9, 11, 166}, CREATE: []byte{24, 30, 200, 40, 5, 28, 7, 119}, INITIALIZE: []byte{175, 175, 109, 31, 13, 152, 155, 237}, MIGRATE_TO_RADIUM: []byte{96, 230, 91, 140, 139, 40, 235, 142}, }, PHOTON: PhotonDiscriminators{ PUMPSWAP_TRADE: []byte{44, 119, 175, 218, 199, 77, 196, 235}, PUMPFUN_BUY: []byte{82, 225, 119, 231, 78, 29, 45, 70}, PUMPFUN_SELL: []byte{93, 88, 60, 34, 91, 18, 86, 197}, MOONIT_BUY: []byte{61, 220, 193, 108, 173, 62, 69, 176}, MOONIT_SELL: []byte{206, 188, 188, 107, 32, 145, 81, 150}, HOP_TWO_SWAP: []byte{195, 96, 237, 108, 68, 162, 219, 230}, }, SOLFI: SolFiDiscriminators{ SWAP: []byte{0x07}, }, GOONFI: GoonFiDiscriminators{ SWAP: []byte{0x02}, }, OBRIC: ObricDiscriminators{ SWAP: []byte{248, 198, 158, 145, 225, 117, 135, 200}, SWAP_X_TO_Y: []byte{143, 190, 90, 218, 196, 30, 51, 222}, SWAP_Y_TO_X: []byte{220, 117, 232, 239, 48, 247, 211, 180}, }, DFLOW: DFlowDiscriminators{ SWAP: []byte{248, 198, 158, 145, 225, 117, 135, 200}, SWAP2: []byte{65, 75, 63, 76, 235, 91, 91, 136}, SWAP_WITH_DEST: []byte{168, 172, 24, 77, 197, 156, 135, 101}, OPEN_ORDER: []byte{206, 88, 88, 143, 38, 136, 50, 224}, FILL_ORDER: []byte{232, 122, 115, 25, 199, 143, 136, 162}, CLOSE_ORDER: []byte{90, 103, 209, 28, 7, 63, 168, 4}, }, HUMIDIFI: HumidiFiDiscriminators{ SWAP: []byte{248, 198, 158, 145, 225, 117, 135, 200}, }, }
Discriminator byte slices for instruction identification
var FEE_ACCOUNTS = []string{
"96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5",
"HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe",
"Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY",
"ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49",
"DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh",
"ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt",
"DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL",
"3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT",
"45ruCyfdRkWpRNGEqWzjCiXRHkZs8WXCLQ67Pnpye7Hp",
"39azUYFWPz3VHgKCf3VChUwbpURdCHRxjWVowf5jUJjg",
"FWsW1xNtWscwNmKv6wVsU1iTzRN6wmmk3MjxRP5tT7hz",
"G5UZAVbAf46s7cKWoyKu8kYTip9DGTpbLZ2qa9Aq69dP",
"7hTckgnGnLQR6sdH7YkqFTAA7VwTfYFaZ6EhEsU3saCX",
"9rPYyANsfQZw3DnDmKE3YCQF5E8oD89UXoHn9JFEhJUz",
"7VtfL8fvgNfhz17qKRMjzQEXgbdpnHHHQRh54R9jP2RJ",
"AVmoTthdrX6tKt4nDjco2D775W2YK3sDhxPcMmzUAmTY",
"62qc2CNXwrYqQScmEdiZFFAnJR262PxWEuNQtxfafNgV",
"JCRGumoE9Qi5BBgULTgdgTLjSgkCMSbF62ZZfGs84JeU",
"CebN5WGQ4jvEPvsVU4EoHEpgzq1VV7AbicfhtW4xC9iM",
"AVUCZyuT35YSuj4RH7fwiyPu82Djn2Hfg7y2ND2XcnZH",
"BUX7s2ef2htTGb2KKoPHWkmzxPj4nTWMWRgs5CSbQxf9",
"CdQTNULjDiTsvyR5UKjYBMqWvYpxXj6HY4m6atm2hErk",
}
FEE_ACCOUNTS contains known fee account addresses
var PUMPFUN_MIGRATORS = []string{
"39azUYFWPz3VHgKCf3VChUwbpURdCHRxjWVowf5jUJjg",
}
PUMPFUN_MIGRATORS contains Pumpfun migrator addresses
var SKIP_PROGRAM_IDS = []string{
"pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ",
}
SKIP_PROGRAM_IDS contains program IDs that should be skipped
var SYSTEM_PROGRAMS = []string{
"ComputeBudget111111111111111111111111111111",
"11111111111111111111111111111111",
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
}
SYSTEM_PROGRAMS contains system program IDs that should be ignored
var TOKENS = struct { NATIVE string SOL string USDC string USDT string USD1 string USDG string PYUSD string EURC string USDY string FDUSD string }{ NATIVE: "11111111111111111111111111111111", SOL: "So11111111111111111111111111111111111111112", USDC: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", USDT: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", USD1: "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB", USDG: "2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH", PYUSD: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo", EURC: "HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr", USDY: "A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6", FDUSD: "9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u", }
TOKENS contains known token addresses
var TOKEN_DECIMALS = map[string]uint8{
"So11111111111111111111111111111111111111112": 9,
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": 6,
"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB": 6,
"USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB": 6,
"2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH": 6,
"2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo": 6,
"HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr": 6,
"A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6": 6,
"9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u": 6,
}
TOKEN_DECIMALS maps token addresses to their decimal precision
Functions ¶
func GetAllBotFeeAccounts ¶ added in v1.2.0
func GetAllBotFeeAccounts() []string
GetAllBotFeeAccounts returns all known bot fee accounts as a slice
func GetBotName ¶ added in v1.2.0
GetBotName returns the bot name if the account is a known bot fee account Returns empty string if not found
func GetBotNames ¶ added in v1.2.0
func GetBotNames() []string
GetBotNames returns all known bot names
func GetProgramName ¶
GetProgramName returns the human-readable name for a program ID
func GetTokenDecimals ¶
GetTokenDecimals returns the decimals for a known token, or 0 if unknown
func IsBotFeeAccount ¶ added in v1.2.0
IsBotFeeAccount checks if an account is a known bot fee account
func IsDexProgram ¶
IsDexProgram checks if a program ID is a known DEX program
func IsFeeAccount ¶
IsFeeAccount checks if an account is a known fee account
func IsQuoteToken ¶
IsQuoteToken checks if a token is a quote token (SOL or stablecoin)
func IsSPLBurnInstruction ¶
IsSPLBurnInstruction checks if the instruction type is a burn operation
func IsSPLMintInstruction ¶
IsSPLMintInstruction checks if the instruction type is a mint operation
func IsSPLTransferInstruction ¶
IsSPLTransferInstruction checks if the instruction type is a transfer
func IsStablecoin ¶
IsStablecoin checks if a token is a known stablecoin
func IsSystemProgram ¶
IsSystemProgram checks if a program ID is a system program
func MatchAnyDiscriminator ¶
MatchAnyDiscriminator checks if data matches any of the given discriminators
func MatchDiscriminator ¶
MatchDiscriminator checks if data starts with the given discriminator
Types ¶
type BoopfunDiscriminators ¶
type DFlowDiscriminators ¶ added in v1.2.0
type DexProgram ¶
type DexProgram struct {
ID string // Program ID
Name string // Human-readable name
Tags []string // Tags: "route", "amm", "bot", "vault"
}
DexProgram represents a DEX program configuration
func GetDexProgramByID ¶
func GetDexProgramByID(id string) DexProgram
GetDexProgramByID returns the DEX program configuration for a given ID
type GoonFiDiscriminators ¶ added in v1.2.0
type GoonFiDiscriminators struct {
SWAP []byte
}
type HeavenDiscriminators ¶
type HumidiFiDiscriminators ¶ added in v1.2.0
type HumidiFiDiscriminators struct {
SWAP []byte
}
type JupiterDiscriminators ¶
type JupiterDiscriminators struct {
ROUTE_EVENT []byte
// Jupiter V6 shred discriminators
ROUTE []byte
ROUTE_EXACT_OUT []byte
ROUTE_WITH_TOKEN_LEDGER []byte
SHARE_ACCOUNTS_ROUTE []byte
SHARE_ACCOUNTS_EXACT_OUT_ROUTE []byte
SHARE_ACCOUNTS_ROUTE_WITH_TOKEN_LEDGER []byte
}
Discriminator type definitions
type JupiterVADiscriminators ¶
type MetaplexDiscriminators ¶
type MetaplexDiscriminators struct {
CREATE_MINT []byte
}
type MoonitDiscriminators ¶
type ObricDiscriminators ¶ added in v1.2.0
type OrcaDiscriminators ¶
type PhotonDiscriminators ¶ added in v1.2.0
type PumpfunDiscriminators ¶
type PumpswapDiscriminators ¶
type RaydiumCLDiscriminators ¶
type RaydiumCLDiscriminators struct {
CREATE RaydiumCLCreateDiscriminators
ADD_LIQUIDITY RaydiumCLAddLiquidityDiscriminators
REMOVE_LIQUIDITY RaydiumCLRemoveLiquidityDiscriminators
SWAP RaydiumCLSwapDiscriminators
EVENTS RaydiumCLEventDiscriminators
}
type RaydiumCLEventDiscriminators ¶ added in v1.2.0
type RaydiumCLEventDiscriminators struct {
COLLECT_PERSONAL_FEE []byte
COLLECT_PROTOCOL_FEE []byte
CONFIG_CHANGE []byte
CREATE_PERSONAL_POSITION []byte
DECREASE_LIQUIDITY []byte
INCREASE_LIQUIDITY []byte
LIQUIDITY_CALCULATE []byte
LIQUIDITY_CHANGE []byte
POOL_CREATED []byte
SWAP []byte
UPDATE_REWARD_INFOS []byte
}
type RaydiumCLSwapDiscriminators ¶ added in v1.2.0
type RaydiumDiscriminators ¶
type SolFiDiscriminators ¶ added in v1.2.0
type SolFiDiscriminators struct {
SWAP []byte
}