Skip to content

Commit 07c247a

Browse files
authored
fix: idempotent solana token account creation (#3410)
1 parent 0474356 commit 07c247a

2 files changed

Lines changed: 16 additions & 19 deletions

File tree

src/integration/blockchain/api/services/blockchain-transaction.service.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,18 +102,14 @@ export class BlockchainTransactionService {
102102
const fromTokenAccount = await SolanaToken.getAssociatedTokenAddress(mintPublicKey, fromPublicKey);
103103
const toTokenAccount = await SolanaToken.getAssociatedTokenAddress(mintPublicKey, toPublicKey);
104104

105-
const isTokenAccountAvailable = await this.solanaClient.checkTokenAccount(toAddress, mintAddress);
106-
107-
if (!isTokenAccountAvailable) {
108-
transaction.add(
109-
SolanaToken.createAssociatedTokenAccountInstruction(
110-
fromPublicKey,
111-
toTokenAccount,
112-
toPublicKey,
113-
mintPublicKey,
114-
),
115-
);
116-
}
105+
transaction.add(
106+
SolanaToken.createAssociatedTokenAccountIdempotentInstruction(
107+
fromPublicKey,
108+
toTokenAccount,
109+
toPublicKey,
110+
mintPublicKey,
111+
),
112+
);
117113

118114
transaction.add(
119115
SolanaToken.createTransferInstruction(

src/integration/blockchain/solana/solana-client.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,15 +229,16 @@ export class SolanaClient extends BlockchainClient {
229229
const fromTokenAccount = await SolanaToken.getAssociatedTokenAddress(mintPublicKey, fromPublicKey);
230230
const toTokenAccount = await SolanaToken.getAssociatedTokenAddress(mintPublicKey, toPublicKey);
231231

232-
const isTokenAccountAvailable = await this.checkTokenAccount(toAddress, mintAddress);
233-
234232
const transaction = new Solana.Transaction();
235233

236-
if (!isTokenAccountAvailable) {
237-
transaction.add(
238-
SolanaToken.createAssociatedTokenAccountInstruction(fromPublicKey, toTokenAccount, toPublicKey, mintPublicKey),
239-
);
240-
}
234+
transaction.add(
235+
SolanaToken.createAssociatedTokenAccountIdempotentInstruction(
236+
fromPublicKey,
237+
toTokenAccount,
238+
toPublicKey,
239+
mintPublicKey,
240+
),
241+
);
241242

242243
transaction.add(
243244
SolanaToken.createTransferInstruction(

0 commit comments

Comments
 (0)