From 3faeb1338ef5136bccf64b301de263834bae89b5 Mon Sep 17 00:00:00 2001 From: smypmsa Date: Fri, 1 Aug 2025 05:25:54 +0000 Subject: [PATCH] feat(core): update buy instruction, add volume_accumulator accounts --- src/bot_runner.py | 2 +- src/core/pubkeys.py | 31 +++++++++++++++++++++++++++++++ src/trading/buyer.py | 6 ++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/bot_runner.py b/src/bot_runner.py index ba2d0a5..9a73351 100644 --- a/src/bot_runner.py +++ b/src/bot_runner.py @@ -86,7 +86,7 @@ async def start_bot(config_path: str): "wait_before_new_token", 15 ), max_token_age=cfg.get("timing", {}).get("max_token_age", 0.001), - token_wait_timeout=cfg.get("timing", {}).get("token_wait_timeout", 30), + token_wait_timeout=cfg.get("timing", {}).get("token_wait_timeout", 120), # Cleanup settings cleanup_mode=cfg.get("cleanup", {}).get("mode", "disabled"), cleanup_force_close_with_burn=cfg.get("cleanup", {}).get( diff --git a/src/core/pubkeys.py b/src/core/pubkeys.py index 7790ef7..6bc28f8 100644 --- a/src/core/pubkeys.py +++ b/src/core/pubkeys.py @@ -49,3 +49,34 @@ class PumpAddresses: LIQUIDITY_MIGRATOR: Final[Pubkey] = Pubkey.from_string( "39azUYFWPz3VHgKCf3VChUwbpURdCHRxjWVowf5jUJjg" ) + + @staticmethod + def find_global_volume_accumulator() -> Pubkey: + """ + Derive the Program Derived Address (PDA) for the global volume accumulator. + + Returns: + Pubkey of the derived global volume accumulator account + """ + derived_address, _ = Pubkey.find_program_address( + [b"global_volume_accumulator"], + PumpAddresses.PROGRAM, + ) + return derived_address + + @staticmethod + def find_user_volume_accumulator(user: Pubkey) -> Pubkey: + """ + Derive the Program Derived Address (PDA) for a user's volume accumulator. + + Args: + user: Pubkey of the user account + + Returns: + Pubkey of the derived user volume accumulator account + """ + derived_address, _ = Pubkey.find_program_address( + [b"user_volume_accumulator", bytes(user)], + PumpAddresses.PROGRAM, + ) + return derived_address diff --git a/src/trading/buyer.py b/src/trading/buyer.py index 0c75e64..12dc3f4 100644 --- a/src/trading/buyer.py +++ b/src/trading/buyer.py @@ -195,6 +195,12 @@ class TokenBuyer(Trader): AccountMeta( pubkey=PumpAddresses.PROGRAM, is_signer=False, is_writable=False ), + AccountMeta( + pubkey=PumpAddresses.find_global_volume_accumulator(), is_signer=False, is_writable=True + ), + AccountMeta( + pubkey=PumpAddresses.find_user_volume_accumulator(self.wallet.pubkey), is_signer=False, is_writable=True + ), ] # Prepare idempotent create ATA instruction: it will not fail if ATA already exists