List known markets and coins. Remove assumptions about default DEX program IDs

This commit is contained in:
Nishad 2020-09-07 09:50:56 +08:00
parent 338f5d229a
commit 6a5e61bc4d
5 changed files with 224 additions and 29 deletions

View File

@ -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';

View File

@ -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: [

View File

@ -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,

View File

@ -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,

198
src/tokens_and_markets.ts Normal file
View File

@ -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'),
},
];