diff --git a/src/actions/account.ts b/src/actions/account.ts index 883530c..f428008 100644 --- a/src/actions/account.ts +++ b/src/actions/account.ts @@ -1,4 +1,4 @@ -import { AccountLayout, Token } from "@solana/spl-token"; +import { AccountLayout, MintLayout, Token } from "@solana/spl-token"; import { Account, PublicKey, @@ -75,6 +75,28 @@ export function createTempMemoryAccount( return account.publicKey; } +export function createUninitializedMint( + instructions: TransactionInstruction[], + payer: PublicKey, + amount: number, + signers: Account[] +) { + const account = new Account(); + instructions.push( + SystemProgram.createAccount({ + fromPubkey: payer, + newAccountPubkey: account.publicKey, + lamports: amount, + space: MintLayout.span, + programId: TOKEN_PROGRAM_ID, + }) + ); + + signers.push(account); + + return account.publicKey; +} + export function createUninitializedAccount( instructions: TransactionInstruction[], payer: PublicKey, diff --git a/src/actions/borrow.tsx b/src/actions/borrow.tsx index fb4a178..4d59073 100644 --- a/src/actions/borrow.tsx +++ b/src/actions/borrow.tsx @@ -12,6 +12,7 @@ import { LENDING_PROGRAM_ID, TOKEN_PROGRAM_ID } from "../constants/ids"; import { createTempMemoryAccount, createUninitializedAccount, + createUninitializedMint, ensureSplAccount, findOrCreateAccountByMint, } from "./account"; @@ -60,7 +61,7 @@ export const borrow = async ( signers ); - const obligationMint = createUninitializedAccount( + const obligationMint = createUninitializedMint( instructions, wallet.publicKey, await connection.getMinimumBalanceForRentExemption(MintLayout.span),