From 4fd31816121979952fa891224f82fc6af36b95ec Mon Sep 17 00:00:00 2001 From: smypmsa Date: Fri, 1 Aug 2025 05:05:55 +0000 Subject: [PATCH] feat(examples): update bonding curve buy instructions --- learning-examples/manual_buy.py | 23 +++++++++++++++++++++++ learning-examples/mint_and_buy.py | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/learning-examples/manual_buy.py b/learning-examples/manual_buy.py index b609bfc..a9b234d 100644 --- a/learning-examples/manual_buy.py +++ b/learning-examples/manual_buy.py @@ -104,6 +104,27 @@ def _find_creator_vault(creator: Pubkey) -> Pubkey: return derived_address +def _find_global_volume_accumulator() -> Pubkey: + derived_address, _ = Pubkey.find_program_address( + [ + b"global_volume_accumulator" + ], + PUMP_PROGRAM, + ) + return derived_address + + +def _find_user_volume_accumulator(user: Pubkey) -> Pubkey: + derived_address, _ = Pubkey.find_program_address( + [ + b"user_volume_accumulator", + bytes(user) + ], + PUMP_PROGRAM, + ) + return derived_address + + async def buy_token( mint: Pubkey, bonding_curve: Pubkey, @@ -153,6 +174,8 @@ async def buy_token( pubkey=PUMP_EVENT_AUTHORITY, is_signer=False, is_writable=False ), AccountMeta(pubkey=PUMP_PROGRAM, is_signer=False, is_writable=False), + AccountMeta(pubkey=_find_global_volume_accumulator(), is_signer=False, is_writable=True), + AccountMeta(pubkey=_find_user_volume_accumulator(payer.pubkey()), is_signer=False, is_writable=True), ] discriminator = struct.pack(" Pubkey: return derived_address +def _find_global_volume_accumulator() -> Pubkey: + derived_address, _ = Pubkey.find_program_address( + [ + b"global_volume_accumulator" + ], + PUMP_PROGRAM, + ) + return derived_address + + +def _find_user_volume_accumulator(user: Pubkey) -> Pubkey: + derived_address, _ = Pubkey.find_program_address( + [ + b"user_volume_accumulator", + bytes(user) + ], + PUMP_PROGRAM, + ) + return derived_address + + def create_pump_create_instruction( mint: Pubkey, mint_authority: Pubkey, @@ -177,6 +198,8 @@ def create_buy_instruction( AccountMeta(pubkey=creator_vault, is_signer=False, is_writable=True), AccountMeta(pubkey=PUMP_EVENT_AUTHORITY, is_signer=False, is_writable=False), AccountMeta(pubkey=PUMP_PROGRAM, is_signer=False, is_writable=False), + AccountMeta(pubkey=_find_global_volume_accumulator(), is_signer=False, is_writable=True), + AccountMeta(pubkey=_find_user_volume_accumulator(user), is_signer=False, is_writable=True), ] data = (