mirror of https://github.com/certusone/oyster.git
Merge pull request #1 from jstarry/fix-borrow
fix: borrow instruction inputs
This commit is contained in:
commit
8e761239ea
|
@ -1,12 +1,12 @@
|
|||
import { AccountLayout, Token } from "@solana/spl-token";
|
||||
import { AccountLayout, MintLayout, Token } from "@solana/spl-token";
|
||||
import {
|
||||
Account,
|
||||
PublicKey,
|
||||
SystemProgram,
|
||||
TransactionInstruction,
|
||||
} from "@solana/web3.js";
|
||||
import { TOKEN_PROGRAM_ID, WRAPPED_SOL_MINT } from "../constants/ids";
|
||||
import { TokenAccount } from "../models";
|
||||
import { LENDING_PROGRAM_ID, TOKEN_PROGRAM_ID, WRAPPED_SOL_MINT } from "../constants/ids";
|
||||
import { LendingObligationLayout, TokenAccount } from "../models";
|
||||
import { cache, TokenAccountParser } from "./../contexts/accounts";
|
||||
|
||||
export function ensureSplAccount(
|
||||
|
@ -75,6 +75,50 @@ export function createTempMemoryAccount(
|
|||
return account.publicKey;
|
||||
}
|
||||
|
||||
export function createUninitializedObligation(
|
||||
instructions: TransactionInstruction[],
|
||||
payer: PublicKey,
|
||||
amount: number,
|
||||
signers: Account[]
|
||||
) {
|
||||
const account = new Account();
|
||||
instructions.push(
|
||||
SystemProgram.createAccount({
|
||||
fromPubkey: payer,
|
||||
newAccountPubkey: account.publicKey,
|
||||
lamports: amount,
|
||||
space: LendingObligationLayout.span,
|
||||
programId: LENDING_PROGRAM_ID,
|
||||
})
|
||||
);
|
||||
|
||||
signers.push(account);
|
||||
|
||||
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,
|
||||
|
|
|
@ -12,6 +12,8 @@ import { LENDING_PROGRAM_ID, TOKEN_PROGRAM_ID } from "../constants/ids";
|
|||
import {
|
||||
createTempMemoryAccount,
|
||||
createUninitializedAccount,
|
||||
createUninitializedMint,
|
||||
createUninitializedObligation,
|
||||
ensureSplAccount,
|
||||
findOrCreateAccountByMint,
|
||||
} from "./account";
|
||||
|
@ -51,7 +53,7 @@ export const borrow = async (
|
|||
AccountLayout.span
|
||||
);
|
||||
|
||||
const obligation = createUninitializedAccount(
|
||||
const obligation = createUninitializedObligation(
|
||||
instructions,
|
||||
wallet.publicKey,
|
||||
await connection.getMinimumBalanceForRentExemption(
|
||||
|
@ -60,7 +62,7 @@ export const borrow = async (
|
|||
signers
|
||||
);
|
||||
|
||||
const obligationMint = createUninitializedAccount(
|
||||
const obligationMint = createUninitializedMint(
|
||||
instructions,
|
||||
wallet.publicKey,
|
||||
await connection.getMinimumBalanceForRentExemption(MintLayout.span),
|
||||
|
|
|
@ -22,7 +22,7 @@ import { LendingInstruction } from "./lending";
|
|||
/// 6. `[writable]` Obligation - uninitialized
|
||||
/// 7. `[writable]` Obligation token mint - uninitialized
|
||||
/// 8. `[writable]` Obligation token output - uninitialized
|
||||
/// 9. `[]` Obligation token owner - uninitialized
|
||||
/// 9. `[]` Obligation token owner
|
||||
/// 10 `[]` Derived lending market authority ($authority).
|
||||
/// 11 `[]` Dex market
|
||||
/// 12 `[]` Dex order book side // could be bid/ask
|
||||
|
@ -78,16 +78,16 @@ export const borrowInstruction = (
|
|||
{
|
||||
pubkey: borrowReserveLiquiditySupply,
|
||||
isSigner: false,
|
||||
isWritable: false,
|
||||
isWritable: true,
|
||||
},
|
||||
{ pubkey: obligation, isSigner: false, isWritable: true },
|
||||
{ pubkey: obligationMint, isSigner: false, isWritable: true },
|
||||
{ pubkey: obligationTokenOutput, isSigner: false, isWritable: true },
|
||||
{ pubkey: obligationTokenOwner, isSigner: false, isWritable: false },
|
||||
{ pubkey: lendingMarketAuthority, isSigner: false, isWritable: true },
|
||||
{ pubkey: dexMarket, isSigner: false, isWritable: true },
|
||||
{ pubkey: lendingMarketAuthority, isSigner: false, isWritable: false },
|
||||
{ pubkey: dexMarket, isSigner: false, isWritable: false },
|
||||
{ pubkey: dexOrderBookSide, isSigner: false, isWritable: false },
|
||||
{ pubkey: memory, isSigner: false, isWritable: true },
|
||||
{ pubkey: memory, isSigner: false, isWritable: false },
|
||||
{ pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },
|
||||
{ pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },
|
||||
{ pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
|
||||
|
|
Loading…
Reference in New Issue