- Add SWQOS_ENDPOINTS_BLOCKRAZOR_GRPC with correct gRPC endpoints - Add Grpc variant to SwqosTransport enum - Add get_endpoint_with_transport() method for transport-aware endpoint selection - Change BlockRazor default: transport=None now uses gRPC (was HTTP) - Require explicit Some(SwqosTransport::Http) for HTTP fallback This fixes the issue where BlockRazor was incorrectly using HTTP endpoints when gRPC was intended. Users can now use gRPC by default or explicitly specify HTTP transport when needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
384 lines
17 KiB
Rust
Executable File
384 lines
17 KiB
Rust
Executable File
use solana_program::pubkey;
|
||
use solana_sdk::pubkey::Pubkey;
|
||
|
||
pub const JITO_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5"),
|
||
pubkey!("HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe"),
|
||
pubkey!("Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY"),
|
||
pubkey!("ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49"),
|
||
pubkey!("DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh"),
|
||
pubkey!("ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt"),
|
||
pubkey!("DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL"),
|
||
pubkey!("3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT"),
|
||
];
|
||
|
||
/// Helius Sender tip accounts (fee recipient addresses).
|
||
pub const HELIUS_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("4ACfpUFoaSD9bfPdeu6DBt89gB6ENTeHBXCAi87NhDEE"),
|
||
pubkey!("D2L6yPZ2FmmmTKPgzaMKdhu6EWZcTpLy1Vhx8uvZe7NZ"),
|
||
pubkey!("9bnz4RShgq1hAnLnZbP8kbgBg1kEmcJBYQq3gQbmnSta"),
|
||
pubkey!("5VY91ws6B2hMmBFRsXkoAAdsPHBJwRfBht4DXox3xkwn"),
|
||
pubkey!("2nyhqdwKcJZR2vcqCyrYsaPVdAnFoJjiksCXJ7hfEYgD"),
|
||
pubkey!("2q5pghRs6arqVjRvT5gfgWfWcHWmw1ZuCzphgd5KfWGJ"),
|
||
pubkey!("wyvPkWjVZz1M8fHQnMMCDTQDbkManefNNhweYk5WkcF"),
|
||
pubkey!("3KCKozbAaF75qEU33jtzozcJ29yJuaLJTy2jFdzUY8bT"),
|
||
pubkey!("4vieeGHPYPG2MmyPRcYjdiDmmhN3ww7hsFNap8pVN3Ey"),
|
||
pubkey!("4TQLFNWK8AovT1gFvda5jfw2oJeRMKEmw7aH6MGBJ3or"),
|
||
];
|
||
|
||
pub const NEXTBLOCK_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("NextbLoCkVtMGcV47JzewQdvBpLqT9TxQFozQkN98pE"),
|
||
pubkey!("NexTbLoCkWykbLuB1NkjXgFWkX9oAtcoagQegygXXA2"),
|
||
pubkey!("NeXTBLoCKs9F1y5PJS9CKrFNNLU1keHW71rfh7KgA1X"),
|
||
pubkey!("NexTBLockJYZ7QD7p2byrUa6df8ndV2WSd8GkbWqfbb"),
|
||
pubkey!("neXtBLock1LeC67jYd1QdAa32kbVeubsfPNTJC1V5At"),
|
||
pubkey!("nEXTBLockYgngeRmRrjDV31mGSekVPqZoMGhQEZtPVG"),
|
||
pubkey!("NEXTbLoCkB51HpLBLojQfpyVAMorm3zzKg7w9NFdqid"),
|
||
pubkey!("nextBLoCkPMgmG8ZgJtABeScP35qLa2AMCNKntAP7Xc"),
|
||
];
|
||
|
||
pub const ZEROSLOT_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("Eb2KpSC8uMt9GmzyAEm5Eb1AAAgTjRaXWFjKyFXHZxF3"),
|
||
pubkey!("FCjUJZ1qozm1e8romw216qyfQMaaWKxWsuySnumVCCNe"),
|
||
pubkey!("ENxTEjSQ1YabmUpXAdCgevnHQ9MHdLv8tzFiuiYJqa13"),
|
||
pubkey!("6rYLG55Q9RpsPGvqdPNJs4z5WTxJVatMB8zV3WJhs5EK"),
|
||
pubkey!("Cix2bHfqPcKcM233mzxbLk14kSggUUiz2A87fJtGivXr"),
|
||
];
|
||
|
||
pub const NOZOMI_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq"),
|
||
pubkey!("noz3jAjPiHuBPqiSPkkugaJDkJscPuRhYnSpbi8UvC4"),
|
||
pubkey!("noz3str9KXfpKknefHji8L1mPgimezaiUyCHYMDv1GE"),
|
||
pubkey!("noz6uoYCDijhu1V7cutCpwxNiSovEwLdRHPwmgCGDNo"),
|
||
pubkey!("noz9EPNcT7WH6Sou3sr3GGjHQYVkN3DNirpbvDkv9YJ"),
|
||
pubkey!("nozc5yT15LazbLTFVZzoNZCwjh3yUtW86LoUyqsBu4L"),
|
||
pubkey!("nozFrhfnNGoyqwVuwPAW4aaGqempx4PU6g6D9CJMv7Z"),
|
||
pubkey!("nozievPk7HyK1Rqy1MPJwVQ7qQg2QoJGyP71oeDwbsu"),
|
||
pubkey!("noznbgwYnBLDHu8wcQVCEw6kDrXkPdKkydGJGNXGvL7"),
|
||
pubkey!("nozNVWs5N8mgzuD3qigrCG2UoKxZttxzZ85pvAQVrbP"),
|
||
pubkey!("nozpEGbwx4BcGp6pvEdAh1JoC2CQGZdU6HbNP1v2p6P"),
|
||
pubkey!("nozrhjhkCr3zXT3BiT4WCodYCUFeQvcdUkM7MqhKqge"),
|
||
pubkey!("nozrwQtWhEdrA6W8dkbt9gnUaMs52PdAv5byipnadq3"),
|
||
pubkey!("nozUacTVWub3cL4mJmGCYjKZTnE9RbdY5AP46iQgbPJ"),
|
||
pubkey!("nozWCyTPppJjRuw2fpzDhhWbW355fzosWSzrrMYB1Qk"),
|
||
pubkey!("nozWNju6dY353eMkMqURqwQEoM3SFgEKC6psLCSfUne"),
|
||
pubkey!("nozxNBgWohjR75vdspfxR5H9ceC7XXH99xpxhVGt3Bb"),
|
||
];
|
||
|
||
pub const BLOX_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("HWEoBxYs7ssKuudEjzjmpfJVX7Dvi7wescFsVx2L5yoY"),
|
||
pubkey!("95cfoy472fcQHaw4tPGBTKpn6ZQnfEPfBgDQx6gcRmRg"),
|
||
pubkey!("3UQUKjhMKaY2S6bjcQD6yHB7utcZt5bfarRCmctpRtUd"),
|
||
pubkey!("FogxVNs6Mm2w9rnGL1vkARSwJxvLE8mujTv3LK8RnUhF"),
|
||
];
|
||
|
||
pub const NODE1_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("node1PqAa3BWWzUnTHVbw8NJHC874zn9ngAkXjgWEej"),
|
||
pubkey!("node1UzzTxAAeBTpfZkQPJXBAqixsbdth11ba1NXLBG"),
|
||
pubkey!("node1Qm1bV4fwYnCurP8otJ9s5yrkPq7SPZ5uhj3Tsv"),
|
||
pubkey!("node1PUber6SFmSQgvf2ECmXsHP5o3boRSGhvJyPMX1"),
|
||
pubkey!("node1AyMbeqiVN6eoQzEAwCA6Pk826hrdqdAHR7cdJ3"),
|
||
pubkey!("node1YtWCoTwwVYTFLfS19zquRQzYX332hs1HEuRBjC"),
|
||
];
|
||
|
||
pub const FLASHBLOCK_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("FLaShB3iXXTWE1vu9wQsChUKq3HFtpMAhb8kAh1pf1wi"),
|
||
pubkey!("FLashhsorBmM9dLpuq6qATawcpqk1Y2aqaZfkd48iT3W"),
|
||
pubkey!("FLaSHJNm5dWYzEgnHJWWJP5ccu128Mu61NJLxUf7mUXU"),
|
||
pubkey!("FLaSHR4Vv7sttd6TyDF4yR1bJyAxRwWKbohDytEMu3wL"),
|
||
pubkey!("FLASHRzANfcAKDuQ3RXv9hbkBy4WVEKDzoAgxJ56DiE4"),
|
||
pubkey!("FLasHstqx11M8W56zrSEqkCyhMCCpr6ze6Mjdvqope5s"),
|
||
pubkey!("FLAShWTjcweNT4NSotpjpxAkwxUr2we3eXQGhpTVzRwy"),
|
||
pubkey!("FLasHXTqrbNvpWFB6grN47HGZfK6pze9HLNTgbukfPSk"),
|
||
pubkey!("FLAshyAyBcKb39KPxSzXcepiS8iDYUhDGwJcJDPX4g2B"),
|
||
pubkey!("FLAsHZTRcf3Dy1APaz6j74ebdMC6Xx4g6i9YxjyrDybR"),
|
||
];
|
||
|
||
pub const BLOCKRAZOR_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("FjmZZrFvhnqqb9ThCuMVnENaM3JGVuGWNyCAxRJcFpg9"),
|
||
pubkey!("6No2i3aawzHsjtThw81iq1EXPJN6rh8eSJCLaYZfKDTG"),
|
||
pubkey!("A9cWowVAiHe9pJfKAj3TJiN9VpbzMUq6E4kEvf5mUT22"),
|
||
pubkey!("Gywj98ophM7GmkDdaWs4isqZnDdFCW7B46TXmKfvyqSm"),
|
||
pubkey!("68Pwb4jS7eZATjDfhmTXgRJjCiZmw1L7Huy4HNpnxJ3o"),
|
||
pubkey!("4ABhJh5rZPjv63RBJBuyWzBK3g9gWMUQdTZP2kiW31V9"),
|
||
pubkey!("B2M4NG5eyZp5SBQrSdtemzk5TqVuaWGQnowGaCBt8GyM"),
|
||
pubkey!("5jA59cXMKQqZAVdtopv8q3yyw9SYfiE3vUCbt7p8MfVf"),
|
||
pubkey!("5YktoWygr1Bp9wiS1xtMtUki1PeYuuzuCF98tqwYxf61"),
|
||
pubkey!("295Avbam4qGShBYK7E9H5Ldew4B3WyJGmgmXfiWdeeyV"),
|
||
pubkey!("EDi4rSy2LZgKJX74mbLTFk4mxoTgT6F7HxxzG2HBAFyK"),
|
||
pubkey!("BnGKHAC386n4Qmv9xtpBVbRaUTKixjBe3oagkPFKtoy6"),
|
||
pubkey!("Dd7K2Fp7AtoN8xCghKDRmyqr5U169t48Tw5fEd3wT9mq"),
|
||
pubkey!("AP6qExwrbRgBAVaehg4b5xHENX815sMabtBzUzVB4v8S"),
|
||
];
|
||
|
||
/// Astralane tip wallets. Extended with new addresses for improved routing and reduced write-lock contention (see portal.astralane.io/blockline).
|
||
pub const ASTRALANE_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("astrazznxsGUhWShqgNtAdfrzP2G83DzcWVJDxwV9bF"),
|
||
pubkey!("astra4uejePWneqNaJKuFFA8oonqCE1sqF6b45kDMZm"),
|
||
pubkey!("astra9xWY93QyfG6yM8zwsKsRodscjQ2uU2HKNL5prk"),
|
||
pubkey!("astraRVUuTHjpwEVvNBeQEgwYx9w9CFyfxjYoobCZhL"),
|
||
pubkey!("astraEJ2fEj8Xmy6KLG7B3VfbKfsHXhHrNdCQx7iGJK"),
|
||
pubkey!("astraubkDw81n4LuutzSQ8uzHCv4BhPVhfvTcYv8SKC"),
|
||
pubkey!("astraZW5GLFefxNPAatceHhYjfA1ciq9gvfEg2S47xk"),
|
||
pubkey!("astrawVNP4xDBKT7rAdxrLYiTSTdqtUr63fSMduivXK"),
|
||
// New tip wallets (2025) for improved performance and reduced write-lock delays
|
||
pubkey!("AstrA1ejL4UeXC2SBP4cpeEmtcFPZVLxx3XGKXyCW6to"),
|
||
pubkey!("AsTra79FET4aCKWspPqeSFvjJNyp96SvAnrmyAxqg5b7"),
|
||
pubkey!("AstrABAu8CBTyuPXpV4eSCJ5fePEPnxN8NqBaPKQ9fHR"),
|
||
pubkey!("AsTRADtvb6tTmrsqULQ9Wji9PigDMjhfEMza6zkynEvV"),
|
||
pubkey!("AsTRAEoyMofR3vUPpf9k68Gsfb6ymTZttEtsAbv8Bk4d"),
|
||
pubkey!("AStrAJv2RN2hKCHxwUMtqmSxgdcNZbihCwc1mCSnG83W"),
|
||
pubkey!("Astran35aiQUF57XZsmkWMtNCtXGLzs8upfiqXxth2bz"),
|
||
pubkey!("AStRAnpi6kFrKypragExgeRoJ1QnKH7pbSjLAKQVWUum"),
|
||
pubkey!("ASTRaoF93eYt73TYvwtsv6fMWHWbGmMUZfVZPo3CRU9C"),
|
||
];
|
||
|
||
pub const STELLIUM_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("ste11JV3MLMM7x7EJUM2sXcJC1H7F4jBLnP9a9PG8PH"),
|
||
pubkey!("ste11MWPjXCRfQryCshzi86SGhuXjF4Lv6xMXD2AoSt"),
|
||
pubkey!("ste11p5x8tJ53H1NbNQsRBg1YNRd4GcVpxtDw8PBpmb"),
|
||
pubkey!("ste11p7e2KLYou5bwtt35H7BM6uMdo4pvioGjJXKFcN"),
|
||
pubkey!("ste11TMV68LMi1BguM4RQujtbNCZvf1sjsASpqgAvSX"),
|
||
];
|
||
|
||
// Lightspeed (Solana Vibe Station) tip accounts
|
||
pub const LIGHTSPEED_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("53PhM3UTdMQWu5t81wcd35AHGc5xpmHoRjem7GQPvXjA"),
|
||
pubkey!("9tYF5yPDC1NP8s6diiB3kAX6ZZnva9DM3iDwJkBRarBB"),
|
||
];
|
||
|
||
pub const SOYAS_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("soyas4s6L8KWZ8rsSk1mF3d1mQScoTGGAgjk98bF8nP"),
|
||
pubkey!("soyascXFW5wEEYiwfEmHy2pNwomqzvggJosGVD6TJdY"),
|
||
pubkey!("soyasDBdKjADwPz3xk82U3TNPRDKEWJj7wWLajNHZ1L"),
|
||
pubkey!("soyasE2abjBAynmHbGWgEwk4ctBy7JMTUCNrMbjcnyH"),
|
||
];
|
||
|
||
pub const SPEEDLANDING_TIP_ACCOUNTS: &[Pubkey] = &[
|
||
pubkey!("SpEEdz8S1KorkMZqjMUxfxrmWwofmp6ReNP2Nx6CUmq"),
|
||
pubkey!("SpeeDy3GJM4wcrQmk1itRFWgidvxX4rwjTLMv78wwjE"),
|
||
pubkey!("SPeEdva37vW8vRtqgYjprQs1g3965icfVN5Rt7SMAyh"),
|
||
pubkey!("speEdrSEpox5GUfHWcBc7tQjRuSfUin2yvB7qoYvvJh"),
|
||
pubkey!("SPeEDmkHkN3A2roSZf6aZyEMsmrGqTHKqwP51y2Y4rV"),
|
||
pubkey!("SpeedLdTJXh2RKpXEaP8JCxkWoUVXhtdPQ1EnxBJMxc"),
|
||
pubkey!("SpEediGKLbbXndSYTzwmz6Z3NDgHQLDcTDEvGFkSMH9"),
|
||
pubkey!("speede8xCcUq2Tiv1efXeTuE3k9TDNq8TnGKaKSc6J4"),
|
||
];
|
||
|
||
// NewYork,
|
||
// Frankfurt,
|
||
// Amsterdam,
|
||
// SLC,
|
||
// Tokyo,
|
||
// London,
|
||
// LosAngeles,
|
||
// Default,
|
||
|
||
pub const SWQOS_ENDPOINTS_JITO: [&str; 8] = [
|
||
"https://ny.mainnet.block-engine.jito.wtf",
|
||
"https://frankfurt.mainnet.block-engine.jito.wtf",
|
||
"https://amsterdam.mainnet.block-engine.jito.wtf",
|
||
"https://slc.mainnet.block-engine.jito.wtf",
|
||
"https://tokyo.mainnet.block-engine.jito.wtf",
|
||
"https://london.mainnet.block-engine.jito.wtf",
|
||
"https://ny.mainnet.block-engine.jito.wtf",
|
||
"https://mainnet.block-engine.jito.wtf",
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_NEXTBLOCK: [&str; 8] = [
|
||
"http://ny.nextblock.io",
|
||
"http://frankfurt.nextblock.io",
|
||
"http://amsterdam.nextblock.io",
|
||
"http://slc.nextblock.io",
|
||
"http://tokyo.nextblock.io",
|
||
"http://london.nextblock.io",
|
||
"http://singapore.nextblock.io",
|
||
"http://frankfurt.nextblock.io",
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_ZERO_SLOT: [&str; 8] = [
|
||
"http://ny.0slot.trade",
|
||
"http://de2.0slot.trade", // Use de2 for TSW, and de1 for OVH
|
||
"http://ams.0slot.trade",
|
||
"http://ny.0slot.trade",
|
||
"http://jp.0slot.trade",
|
||
"http://ams.0slot.trade",
|
||
"http://la.0slot.trade",
|
||
"http://de2.0slot.trade", // Use de2 for TSW, and de1 for OVH
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_TEMPORAL: [&str; 8] = [
|
||
"http://ewr1.nozomi.temporal.xyz",
|
||
"http://fra2.nozomi.temporal.xyz",
|
||
"http://ams1.nozomi.temporal.xyz",
|
||
"http://ewr1.nozomi.temporal.xyz",
|
||
"http://tyo1.nozomi.temporal.xyz",
|
||
"http://sgp1.nozomi.temporal.xyz",
|
||
"http://pit1.nozomi.temporal.xyz",
|
||
"http://fra2.nozomi.temporal.xyz",
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_BLOX: [&str; 8] = [
|
||
"https://ny.solana.dex.blxrbdn.com",
|
||
"https://germany.solana.dex.blxrbdn.com",
|
||
"https://amsterdam.solana.dex.blxrbdn.com",
|
||
"https://ny.solana.dex.blxrbdn.com",
|
||
"https://tokyo.solana.dex.blxrbdn.com",
|
||
"https://uk.solana.dex.blxrbdn.com",
|
||
"https://la.solana.dex.blxrbdn.com",
|
||
"https://global.solana.dex.blxrbdn.com",
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_NODE1: [&str; 8] = [
|
||
"http://ny.node1.me",
|
||
"http://fra.node1.me",
|
||
"http://ams.node1.me",
|
||
"http://ny.node1.me",
|
||
"http://tk.node1.me",
|
||
"http://lon.node1.me",
|
||
"http://ny.node1.me",
|
||
"http://fra.node1.me",
|
||
];
|
||
|
||
/// Node1 QUIC: port 16666. Region order: NewYork, Frankfurt, Amsterdam, SLC→ny, Tokyo, London, LosAngeles→ny, Default→ny.
|
||
/// server_name = host part (e.g. ny.node1.me). Auth: first bi stream = 16-byte UUID; each tx = new bi stream, bincode body.
|
||
pub const SWQOS_ENDPOINTS_NODE1_QUIC: [&str; 8] = [
|
||
"ny.node1.me:16666",
|
||
"fra.node1.me:16666",
|
||
"ams.node1.me:16666",
|
||
"ny.node1.me:16666", // SLC → ny
|
||
"tk.node1.me:16666",
|
||
"lon.node1.me:16666",
|
||
"ny.node1.me:16666", // LA → ny
|
||
"ny.node1.me:16666", // Default → ny
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_FLASHBLOCK: [&str; 8] = [
|
||
"http://ny.flashblock.trade",
|
||
"http://fra.flashblock.trade",
|
||
"http://ams.flashblock.trade",
|
||
"http://slc.flashblock.trade",
|
||
"http://singapore.flashblock.trade",
|
||
"http://london.flashblock.trade",
|
||
"http://ny.flashblock.trade",
|
||
"http://ny.flashblock.trade",
|
||
];
|
||
|
||
/// BlockRazor Send Transaction v2: plain-text Base64 body, auth in URI, Content-Type: text/plain. Keep-alive: POST /v2/health.
|
||
/// 若 HTTP 返回 500,可尝试 HTTPS:https://<region>.solana.blockrazor.io/v2/sendTransaction(Frankfurt/NewYork/Tokyo),通过 custom_url 覆盖。
|
||
pub const SWQOS_ENDPOINTS_BLOCKRAZOR: [&str; 8] = [
|
||
"http://newyork.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://frankfurt.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://amsterdam.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://newyork.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://tokyo.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://london.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://newyork.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
"http://frankfurt.solana.blockrazor.xyz:443/v2/sendTransaction",
|
||
];
|
||
|
||
/// BlockRazor gRPC endpoints. Region order: NewYork, Frankfurt, Amsterdam, SLC, Tokyo, London, LosAngeles, Default.
|
||
/// Port 80 for gRPC protocol. Auth: apikey metadata in gRPC headers.
|
||
pub const SWQOS_ENDPOINTS_BLOCKRAZOR_GRPC: [&str; 8] = [
|
||
"http://newyork.solana-grpc.blockrazor.xyz:80",
|
||
"http://frankfurt.solana-grpc.blockrazor.xyz:80",
|
||
"http://amsterdam.solana-grpc.blockrazor.xyz:80",
|
||
"http://newyork.solana-grpc.blockrazor.xyz:80",
|
||
"http://tokyo.solana-grpc.blockrazor.xyz:80",
|
||
"http://london.solana-grpc.blockrazor.xyz:80",
|
||
"http://newyork.solana-grpc.blockrazor.xyz:80",
|
||
"http://frankfurt.solana-grpc.blockrazor.xyz:80",
|
||
];
|
||
|
||
/// Astralane binary API path (no Base64; use with ?api-key=...&method=sendTransaction|getHealth).
|
||
pub const ASTRALANE_PATH_IRISB: &str = "irisb";
|
||
|
||
pub const SWQOS_ENDPOINTS_ASTRALANE: [&str; 8] = [
|
||
"http://ny.gateway.astralane.io/irisb",
|
||
"http://fr.gateway.astralane.io/irisb",
|
||
"http://ams.gateway.astralane.io/irisb",
|
||
"http://ny.gateway.astralane.io/irisb",
|
||
"http://jp.gateway.astralane.io/irisb",
|
||
"http://ny.gateway.astralane.io/irisb",
|
||
"http://lax.gateway.astralane.io/irisb",
|
||
"http://lim.gateway.astralane.io/irisb",
|
||
];
|
||
|
||
/// Astralane QUIC endpoints (port 7000). Region order: NewYork, Frankfurt, Amsterdam, SLC, Tokyo, London, LosAngeles, Default.
|
||
/// See: https://github.com/Astralane/astralane-quic-client. We use fr, ams, la, ny, lim, sg only (avoid ams2/fr2 for lower latency).
|
||
pub const SWQOS_ENDPOINTS_ASTRALANE_QUIC: [&str; 8] = [
|
||
"ny.gateway.astralane.io:7000", // NewYork
|
||
"fr.gateway.astralane.io:7000", // Frankfurt
|
||
"ams.gateway.astralane.io:7000", // Amsterdam
|
||
"lim.gateway.astralane.io:7000", // SLC (no slc, use lim)
|
||
"sg.gateway.astralane.io:7000", // Tokyo (Asia)
|
||
"ams.gateway.astralane.io:7000", // London (Europe, avoid ams2)
|
||
"la.gateway.astralane.io:7000", // LosAngeles
|
||
"lim.gateway.astralane.io:7000", // Default
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_STELLIUM: [&str; 8] = [
|
||
"http://ewr1.flashrpc.com",
|
||
"http://fra1.flashrpc.com",
|
||
"http://ams1.flashrpc.com",
|
||
"http://ewr1.flashrpc.com",
|
||
"http://tyo1.flashrpc.com",
|
||
"http://lhr1.flashrpc.com",
|
||
"http://ewr1.flashrpc.com",
|
||
"http://fra1.flashrpc.com",
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_SOYAS: [&str; 8] = [
|
||
"nyc.landing.soyas.xyz:9000",
|
||
"fra.landing.soyas.xyz:9000",
|
||
"ams.landing.soyas.xyz:9000",
|
||
"nyc.landing.soyas.xyz:9000",
|
||
"tyo.landing.soyas.xyz:9000",
|
||
"lon.landing.soyas.xyz:9000",
|
||
"nyc.landing.soyas.xyz:9000",
|
||
"fra.landing.soyas.xyz:9000",
|
||
];
|
||
|
||
pub const SWQOS_ENDPOINTS_SPEEDLANDING: [&str; 8] = [
|
||
"nyc.speedlanding.trade:17778",
|
||
"fra.speedlanding.trade:17778",
|
||
"ams.speedlanding.trade:17778",
|
||
"nyc.speedlanding.trade:17778",
|
||
"tyo.speedlanding.trade:17778",
|
||
"fra.speedlanding.trade:17778",
|
||
"nyc.speedlanding.trade:17778",
|
||
"fra.speedlanding.trade:17778",
|
||
];
|
||
|
||
/// Helius Sender: POST /fast, dual routing to validators and Jito. API key optional (custom TPS only).
|
||
/// Region order: NewYork(EWR), Frankfurt, Amsterdam, SLC, Tokyo, London, LosAngeles(SG), Default(Global).
|
||
pub const SWQOS_ENDPOINTS_HELIUS: [&str; 8] = [
|
||
"http://ewr-sender.helius-rpc.com/fast",
|
||
"http://fra-sender.helius-rpc.com/fast",
|
||
"http://ams-sender.helius-rpc.com/fast",
|
||
"http://slc-sender.helius-rpc.com/fast",
|
||
"http://tyo-sender.helius-rpc.com/fast",
|
||
"http://lon-sender.helius-rpc.com/fast",
|
||
"http://sg-sender.helius-rpc.com/fast",
|
||
"https://sender.helius-rpc.com/fast",
|
||
];
|
||
|
||
pub const SWQOS_MIN_TIP_DEFAULT: f64 = 0.00001; // 其它SWQOS默认最低小费
|
||
pub const SWQOS_MIN_TIP_JITO: f64 = 0.00001;
|
||
pub const SWQOS_MIN_TIP_NEXTBLOCK: f64 = 0.001;
|
||
pub const SWQOS_MIN_TIP_ZERO_SLOT: f64 = 0.0001;
|
||
pub const SWQOS_MIN_TIP_TEMPORAL: f64 = 0.0001;
|
||
pub const SWQOS_MIN_TIP_BLOXROUTE: f64 = 0.0001;
|
||
pub const SWQOS_MIN_TIP_NODE1: f64 = 0.0001; // 如需更高阈值可调整
|
||
pub const SWQOS_MIN_TIP_FLASHBLOCK: f64 = 0.0001;
|
||
pub const SWQOS_MIN_TIP_BLOCKRAZOR: f64 = 0.0001;
|
||
pub const SWQOS_MIN_TIP_ASTRALANE: f64 = 0.00001;
|
||
pub const SWQOS_MIN_TIP_STELLIUM: f64 = 0.0001; // Stellium requires minimum 0.001 SOL tip
|
||
pub const SWQOS_MIN_TIP_LIGHTSPEED: f64 = 0.0001; // Lightspeed requires minimum 0.001 SOL tip
|
||
pub const SWQOS_MIN_TIP_SOYAS: f64 = 0.001; // Soyas requires minimum 0.001 SOL tip
|
||
pub const SWQOS_MIN_TIP_SPEEDLANDING: f64 = 0.001; // Speedlanding requires minimum 0.001 SOL tip
|
||
/// Helius Sender: 0.0002 SOL when not swqos_only; use SWQOS_MIN_TIP_HELIUS_SWQOS_ONLY when swqos_only=true.
|
||
pub const SWQOS_MIN_TIP_HELIUS: f64 = 0.0002;
|
||
/// Helius Sender with swqos_only: minimum 0.000005 SOL (much lower tip allowed).
|
||
pub const SWQOS_MIN_TIP_HELIUS_SWQOS_ONLY: f64 = 0.000005;
|