Cleaned up call to PLACE_SPOT_ORDER_2 using fee discount address.
This commit is contained in:
parent
4bcabbffa6
commit
57b7e4e99c
|
@ -609,7 +609,7 @@ def build_spot_place_order_instructions(context: Context, wallet: Wallet, group:
|
|||
market: PySerumMarket,
|
||||
order_type: OrderType, side: Side, price: Decimal,
|
||||
quantity: Decimal, client_id: int,
|
||||
fee_discount_address: typing.Optional[PublicKey]) -> CombinableInstructions:
|
||||
fee_discount_address: PublicKey) -> CombinableInstructions:
|
||||
instructions: CombinableInstructions = CombinableInstructions.empty()
|
||||
|
||||
spot_market_address = market.state.public_key()
|
||||
|
@ -651,9 +651,6 @@ def build_spot_place_order_instructions(context: Context, wallet: Wallet, group:
|
|||
market.state.program_id(),
|
||||
)
|
||||
|
||||
fee_discount_address_meta: typing.List[AccountMeta] = []
|
||||
if fee_discount_address is not None:
|
||||
fee_discount_address_meta = [AccountMeta(is_signer=False, is_writable=False, pubkey=fee_discount_address)]
|
||||
place_spot_instruction = TransactionInstruction(
|
||||
keys=[
|
||||
AccountMeta(is_signer=False, is_writable=False, pubkey=group.address),
|
||||
|
@ -677,11 +674,9 @@ def build_spot_place_order_instructions(context: Context, wallet: Wallet, group:
|
|||
AccountMeta(is_signer=False, is_writable=False, pubkey=TOKEN_PROGRAM_ID),
|
||||
AccountMeta(is_signer=False, is_writable=False, pubkey=group.signer_key),
|
||||
AccountMeta(is_signer=False, is_writable=False, pubkey=vault_signer),
|
||||
AccountMeta(is_signer=False, is_writable=False,
|
||||
pubkey=fee_discount_address or group.msrm_vault or group.srm_vault or SYSTEM_PROGRAM_ADDRESS),
|
||||
AccountMeta(is_signer=False, is_writable=False, pubkey=fee_discount_address),
|
||||
*list([AccountMeta(is_signer=False, is_writable=(oo_address == open_orders_address),
|
||||
pubkey=oo_address or SYSTEM_PROGRAM_ADDRESS) for oo_address in account.spot_open_orders]),
|
||||
*fee_discount_address_meta
|
||||
pubkey=oo_address) for oo_address in account.spot_open_orders if oo_address is not None])
|
||||
],
|
||||
program_id=context.mango_program_address,
|
||||
data=layouts.PLACE_SPOT_ORDER_2.build(
|
||||
|
|
|
@ -42,7 +42,7 @@ from .wallet import Wallet
|
|||
#
|
||||
|
||||
class SpotMarketInstructionBuilder(MarketInstructionBuilder):
|
||||
def __init__(self, context: Context, wallet: Wallet, group: Group, account: Account, spot_market: SpotMarket, raw_market: PySerumMarket, market_index: int, fee_discount_token_address: typing.Optional[PublicKey]):
|
||||
def __init__(self, context: Context, wallet: Wallet, group: Group, account: Account, spot_market: SpotMarket, raw_market: PySerumMarket, market_index: int, fee_discount_token_address: PublicKey):
|
||||
super().__init__()
|
||||
self.context: Context = context
|
||||
self.wallet: Wallet = wallet
|
||||
|
@ -51,7 +51,7 @@ class SpotMarketInstructionBuilder(MarketInstructionBuilder):
|
|||
self.spot_market: SpotMarket = spot_market
|
||||
self.raw_market: PySerumMarket = raw_market
|
||||
self.market_index: int = market_index
|
||||
self.fee_discount_token_address: typing.Optional[PublicKey] = fee_discount_token_address
|
||||
self.fee_discount_token_address: PublicKey = fee_discount_token_address
|
||||
|
||||
self.open_orders_address: typing.Optional[PublicKey] = self.account.spot_open_orders[self.market_index]
|
||||
|
||||
|
@ -61,11 +61,15 @@ class SpotMarketInstructionBuilder(MarketInstructionBuilder):
|
|||
context.client.compatible_client, spot_market.address, context.serum_program_address)
|
||||
|
||||
msrm_balance = context.client.get_token_account_balance(group.msrm_vault)
|
||||
logging.debug(f"MSRM balance is: {msrm_balance}")
|
||||
fee_discount_token_address: PublicKey = group.srm_vault
|
||||
fee_discount_token_address: PublicKey
|
||||
if msrm_balance > 0:
|
||||
fee_discount_token_address = group.msrm_vault
|
||||
logging.debug(f"Using fee discount address {fee_discount_token_address}")
|
||||
logging.debug(
|
||||
f"MSRM balance is: {msrm_balance} - using MSRM fee discount address {fee_discount_token_address}")
|
||||
else:
|
||||
fee_discount_token_address = group.srm_vault
|
||||
logging.debug(
|
||||
f"MSRM balance is: {msrm_balance} - using SRM fee discount address {fee_discount_token_address}")
|
||||
|
||||
market_index = group.find_spot_market_index(spot_market.address)
|
||||
|
||||
|
|
Loading…
Reference in New Issue