diff --git a/src/actions/placeBid.ts b/src/actions/placeBid.ts index 5bb0400..d57c3bd 100644 --- a/src/actions/placeBid.ts +++ b/src/actions/placeBid.ts @@ -5,6 +5,7 @@ import { Wallet } from '../wallet'; import { Connection } from '../Connection'; import { sendTransaction } from './transactions'; import { + AuctionProgram, AuctionExtended, BidderMetadata, BidderPot, @@ -82,19 +83,11 @@ export const placeBid = async ({ //// } else { // create a new account for bid - const account = Keypair.generate(); - const createBidderPotTransaction = new CreateTokenAccount( - { feePayer: bidder }, - { - newAccountPubkey: account.publicKey, - lamports: accountRentExempt, - mint: auctionTokenMint, - owner: auction, - }, - ); - txBatch.addSigner(account); - txBatch.addTransaction(createBidderPotTransaction); - bidderPotToken = account.publicKey; + bidderPotToken = await AuctionProgram.findProgramAddress([ + Buffer.from(AuctionProgram.PREFIX), + bidderPot.toBuffer(), + Buffer.from('bidder_pot_token'), + ]); //// } @@ -105,7 +98,6 @@ export const placeBid = async ({ closeTokenAccountTx, } = await createWrappedAccountTxs(connection, bidder, amount.toNumber() + accountRentExempt * 2); txBatch.addTransaction(createTokenAccountTx); - txBatch.addAfterTransaction(closeTokenAccountTx); txBatch.addSigner(payingAccount); //// @@ -123,6 +115,9 @@ export const placeBid = async ({ txBatch.addAfterTransaction(createRevokeTx); txBatch.addSigner(transferAuthority); //// + + // token account must be closed after the revoke instruction + txBatch.addAfterTransaction(closeTokenAccountTx); // create place bid transaction const placeBidTransaction = new PlaceBid(