List known markets and coins. Remove assumptions about default DEX program IDs
This commit is contained in:
parent
338f5d229a
commit
6a5e61bc4d
|
@ -1,4 +1,5 @@
|
|||
export { Market, Orderbook, OpenOrders } from './market';
|
||||
export { DexInstructions, DEX_PROGRAM_ID } from './instructions';
|
||||
export { DexInstructions } from './instructions';
|
||||
export { TOKEN_MINTS, MARKETS } from './tokens_and_markets';
|
||||
export { decodeEventQueue, decodeRequestQueue } from './queue';
|
||||
export * as TokenInstructions from './token-instructions';
|
||||
|
|
|
@ -7,17 +7,9 @@ import {
|
|||
u64,
|
||||
VersionedLayout,
|
||||
} from './layout';
|
||||
import {
|
||||
PublicKey,
|
||||
SYSVAR_RENT_PUBKEY,
|
||||
TransactionInstruction,
|
||||
} from '@solana/web3.js';
|
||||
import { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';
|
||||
import { TOKEN_PROGRAM_ID } from './token-instructions';
|
||||
|
||||
export const DEX_PROGRAM_ID = new PublicKey(
|
||||
'4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn',
|
||||
);
|
||||
|
||||
export const INSTRUCTION_LAYOUT = new VersionedLayout(
|
||||
0,
|
||||
union(u32('instruction')),
|
||||
|
@ -84,7 +76,7 @@ export class DexInstructions {
|
|||
feeRateBps,
|
||||
vaultSignerNonce,
|
||||
quoteDustThreshold,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
@ -124,7 +116,7 @@ export class DexInstructions {
|
|||
maxQuantity,
|
||||
orderType,
|
||||
clientId,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
@ -156,7 +148,7 @@ export class DexInstructions {
|
|||
baseVault,
|
||||
quoteVault,
|
||||
limit,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
@ -178,7 +170,7 @@ export class DexInstructions {
|
|||
eventQueue,
|
||||
openOrdersAccounts,
|
||||
limit,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
@ -203,7 +195,7 @@ export class DexInstructions {
|
|||
side,
|
||||
orderId,
|
||||
openOrdersSlot,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
@ -225,7 +217,7 @@ export class DexInstructions {
|
|||
owner,
|
||||
requestQueue,
|
||||
clientId,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
@ -250,7 +242,7 @@ export class DexInstructions {
|
|||
baseWallet,
|
||||
quoteWallet,
|
||||
vaultSigner,
|
||||
programId = DEX_PROGRAM_ID,
|
||||
programId,
|
||||
}) {
|
||||
return new TransactionInstruction({
|
||||
keys: [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { blob, seq, struct, u8 } from 'buffer-layout';
|
||||
import { accountFlagsLayout, publicKeyLayout, u128, u64 } from './layout';
|
||||
import { Slab, SLAB_LAYOUT } from './slab';
|
||||
import { DEX_PROGRAM_ID, DexInstructions } from './instructions';
|
||||
import { DexInstructions } from './instructions';
|
||||
import BN from 'bn.js';
|
||||
import {
|
||||
Account,
|
||||
|
@ -75,7 +75,7 @@ export class Market {
|
|||
baseMintDecimals: number,
|
||||
quoteMintDecimals: number,
|
||||
options: MarketOptions = {},
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
programId: PublicKey,
|
||||
) {
|
||||
const { skipPreflight = false, confirmations = 0 } = options;
|
||||
if (!decoded.accountFlags.initialized || !decoded.accountFlags.market) {
|
||||
|
@ -98,7 +98,7 @@ export class Market {
|
|||
connection: Connection,
|
||||
address: PublicKey,
|
||||
options: MarketOptions = {},
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
programId: PublicKey,
|
||||
) {
|
||||
const { owner, data } = throwIfNull(
|
||||
await connection.getAccountInfo(address),
|
||||
|
@ -842,11 +842,7 @@ export class OpenOrders {
|
|||
orders!: BN[];
|
||||
clientIds!: BN[];
|
||||
|
||||
constructor(
|
||||
address: PublicKey,
|
||||
decoded,
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
) {
|
||||
constructor(address: PublicKey, decoded, programId: PublicKey) {
|
||||
this.address = address;
|
||||
this._programId = programId;
|
||||
Object.assign(this, decoded);
|
||||
|
@ -860,7 +856,7 @@ export class OpenOrders {
|
|||
connection: Connection,
|
||||
marketAddress: PublicKey,
|
||||
ownerAddress: PublicKey,
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
programId: PublicKey,
|
||||
) {
|
||||
const filters = [
|
||||
{
|
||||
|
@ -892,7 +888,7 @@ export class OpenOrders {
|
|||
static async load(
|
||||
connection: Connection,
|
||||
address: PublicKey,
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
programId: PublicKey,
|
||||
) {
|
||||
const accountInfo = await connection.getAccountInfo(address);
|
||||
if (accountInfo === null) {
|
||||
|
@ -904,7 +900,7 @@ export class OpenOrders {
|
|||
static fromAccountInfo(
|
||||
address: PublicKey,
|
||||
accountInfo: AccountInfo<Buffer>,
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
programId: PublicKey,
|
||||
) {
|
||||
const { owner, data } = accountInfo;
|
||||
if (!owner.equals(programId)) {
|
||||
|
@ -922,7 +918,7 @@ export class OpenOrders {
|
|||
marketAddress: PublicKey,
|
||||
ownerAddress: PublicKey,
|
||||
newAccountAddress: PublicKey,
|
||||
programId: PublicKey = DEX_PROGRAM_ID,
|
||||
programId: PublicKey,
|
||||
) {
|
||||
return SystemProgram.createAccount({
|
||||
fromPubkey: ownerAddress,
|
||||
|
|
|
@ -14,6 +14,14 @@ export const WRAPPED_SOL_MINT = new PublicKey(
|
|||
'So11111111111111111111111111111111111111112',
|
||||
);
|
||||
|
||||
export const SRM_MINT = new PublicKey(
|
||||
'SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt',
|
||||
);
|
||||
|
||||
export const MSRM_MINT = new PublicKey(
|
||||
'MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L',
|
||||
);
|
||||
|
||||
const LAYOUT = BufferLayout.union(BufferLayout.u8('instruction'));
|
||||
LAYOUT.addVariant(
|
||||
0,
|
||||
|
|
|
@ -0,0 +1,198 @@
|
|||
import { MSRM_MINT, SRM_MINT, WRAPPED_SOL_MINT } from './token-instructions';
|
||||
import { PublicKey } from '@solana/web3.js';
|
||||
|
||||
export const TOKEN_MINTS: Array<{ address: PublicKey; name: string }> = [
|
||||
{
|
||||
address: new PublicKey('9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E'),
|
||||
name: 'BTC',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk'),
|
||||
name: 'ETH',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3'),
|
||||
name: 'FTT',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB'),
|
||||
name: 'YFI',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG'),
|
||||
name: 'LINK',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('Ga2AXHpfAF6mv2ekZwcsJFqu7wB4NV331qNH7fW9Nst8'),
|
||||
name: 'XRP',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4'),
|
||||
name: 'USDT',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW'),
|
||||
name: 'USDC',
|
||||
},
|
||||
{
|
||||
address: MSRM_MINT,
|
||||
name: 'MSRM',
|
||||
},
|
||||
{
|
||||
address: SRM_MINT,
|
||||
name: 'SRM',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('AR1Mtgh7zAtxuxGd2XPovXPVjcSdY3i4rQYisNadjfKy'),
|
||||
name: 'SUSHI',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX'),
|
||||
name: 'SXP',
|
||||
},
|
||||
{
|
||||
address: new PublicKey('CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K'),
|
||||
name: 'ALEPH',
|
||||
},
|
||||
{ address: WRAPPED_SOL_MINT, name: 'SOL' },
|
||||
];
|
||||
|
||||
export const MARKETS: Array<{
|
||||
address: PublicKey;
|
||||
name: string;
|
||||
programId: PublicKey;
|
||||
deprecated: boolean;
|
||||
}> = [
|
||||
{
|
||||
address: new PublicKey('EmCzMQfXMgNHcnRoFwAdPe1i2SuiSzMj1mx6wu3KN2uA'),
|
||||
name: 'ALEPH/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('B37pZmwrwXHjpgvd9hHDAx1yeDsNevTnbbrN9W12BoGK'),
|
||||
name: 'ALEPH/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('8AcVjMG2LTbpkjNoyq8RwysokqZunkjy3d5JDzxC6BJa'),
|
||||
name: 'BTC/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('CAgAeMD7quTdnr6RPa7JySQpjf3irAmefYNdTb6anemq'),
|
||||
name: 'BTC/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('HfCZdJ1wfsWKfYP2qyWdXTT5PWAGWFctzFjLH48U1Hsd'),
|
||||
name: 'ETH/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('ASKiV944nKg1W9vsf7hf3fTsjawK6DwLwrnB2LH9n61c'),
|
||||
name: 'ETH/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('8mDuvJJSgoodovMRYArtVVYBbixWYdGzR47GPrRT65YJ'),
|
||||
name: 'SOL/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('Cdp72gDcYMCLLk3aDkPxjeiirKoFqK38ECm8Ywvk94Wi'),
|
||||
name: 'SOL/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('HARFLhSq8nECZk4DVFKvzqXMNMA9a3hjvridGMFizeLa'),
|
||||
name: 'SRM/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('68J6nkWToik6oM9rTatKSR5ibVSykAtzftBUEAvpRsys'),
|
||||
name: 'SRM/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('DzFjazak6EKHnaB2w6qSsArnj28CV1TKd2Smcj9fqtHW'),
|
||||
name: 'SUSHI/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('9wDmxsfwaDb2ysmZpBLzxKzoWrF1zHzBN7PV5EmJe19R'),
|
||||
name: 'SUSHI/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('GuvWMATdEV6DExWnXncPYEzn4ePWYkvGdC8pu8gsn7m7'),
|
||||
name: 'SXP/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('GbQSffne1NcJbS4jsewZEpRGYVR4RNnuVUN8Ht6vAGb6'),
|
||||
name: 'SXP/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('H4snTKK9adiU15gP22ErfZYtro3aqR9BTMXiH3AwiUTQ'),
|
||||
name: 'MSRM/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('7kgkDyW7dmyMeP8KFXzbcUZz1R2WHsovDZ7n3ihZuNDS'),
|
||||
name: 'MSRM/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('DHDdghmkBhEpReno3tbzBPtsxCt6P3KrMzZvxavTktJt'),
|
||||
name: 'FTT/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('FZqrBXz7ADGsmDf1TM9YgysPUfvtG8rJiNUrqDpHc9Au'),
|
||||
name: 'FTT/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('5zu5bTZZvqESAAgFsr12CUMxdQvMrvU9CgvC1GW8vJdf'),
|
||||
name: 'YFI/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('FJg9FUtbN3fg3YFbMCFiZKjGh5Bn4gtzxZmtxFzmz9kT'),
|
||||
name: 'YFI/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('F5xschQBMpu1gD2q1babYEAVJHR1buj1YazLiXyQNqSW'),
|
||||
name: 'LINK/USDT',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
{
|
||||
address: new PublicKey('7GZ59DMgJ7D6dfoJTpszPayTRyua9jwcaGJXaRMMF1my'),
|
||||
name: 'LINK/USDC',
|
||||
deprecated: false,
|
||||
programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'),
|
||||
},
|
||||
];
|
Loading…
Reference in New Issue