Explorer: Add support for cluster specific program ids (#23609)
This commit is contained in:
@@ -5,11 +5,10 @@ import Select, { InputActionMeta, ActionMeta, ValueType } from "react-select";
|
|||||||
import StateManager from "react-select";
|
import StateManager from "react-select";
|
||||||
import {
|
import {
|
||||||
LOADER_IDS,
|
LOADER_IDS,
|
||||||
PROGRAM_NAME_BY_ID,
|
PROGRAM_INFO_BY_ID,
|
||||||
SPECIAL_IDS,
|
SPECIAL_IDS,
|
||||||
SYSVAR_IDS,
|
SYSVAR_IDS,
|
||||||
LoaderName,
|
LoaderName,
|
||||||
programLabel,
|
|
||||||
} from "utils/tx";
|
} from "utils/tx";
|
||||||
import { Cluster, useCluster } from "providers/cluster";
|
import { Cluster, useCluster } from "providers/cluster";
|
||||||
import { useTokenRegistry } from "providers/mints/token-registry";
|
import { useTokenRegistry } from "providers/mints/token-registry";
|
||||||
@@ -73,10 +72,9 @@ export function SearchBar() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildProgramOptions(search: string, cluster: Cluster) {
|
function buildProgramOptions(search: string, cluster: Cluster) {
|
||||||
const matchedPrograms = Object.entries(PROGRAM_NAME_BY_ID).filter(
|
const matchedPrograms = Object.entries(PROGRAM_INFO_BY_ID).filter(
|
||||||
([address]) => {
|
([address, { name, deployments }]) => {
|
||||||
const name = programLabel(address, cluster);
|
if (!deployments.includes(cluster)) return false;
|
||||||
if (!name) return false;
|
|
||||||
return (
|
return (
|
||||||
name.toLowerCase().includes(search.toLowerCase()) ||
|
name.toLowerCase().includes(search.toLowerCase()) ||
|
||||||
address.includes(search)
|
address.includes(search)
|
||||||
@@ -87,10 +85,10 @@ function buildProgramOptions(search: string, cluster: Cluster) {
|
|||||||
if (matchedPrograms.length > 0) {
|
if (matchedPrograms.length > 0) {
|
||||||
return {
|
return {
|
||||||
label: "Programs",
|
label: "Programs",
|
||||||
options: matchedPrograms.map(([id, name]) => ({
|
options: matchedPrograms.map(([address, { name }]) => ({
|
||||||
label: name,
|
label: name,
|
||||||
value: [name, id],
|
value: [name, address],
|
||||||
pathname: "/address/" + id,
|
pathname: "/address/" + address,
|
||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -21,9 +21,6 @@ import { Cluster } from "providers/cluster";
|
|||||||
import { SerumMarketRegistry } from "serumMarketRegistry";
|
import { SerumMarketRegistry } from "serumMarketRegistry";
|
||||||
import { TokenInfoMap } from "@solana/spl-token-registry";
|
import { TokenInfoMap } from "@solana/spl-token-registry";
|
||||||
|
|
||||||
export type ProgramName =
|
|
||||||
typeof PROGRAM_NAME_BY_ID[keyof typeof PROGRAM_NAME_BY_ID];
|
|
||||||
|
|
||||||
export enum PROGRAM_NAMES {
|
export enum PROGRAM_NAMES {
|
||||||
// native built-ins
|
// native built-ins
|
||||||
ADDRESS_MAP = "Address Map Program",
|
ADDRESS_MAP = "Address Map Program",
|
||||||
@@ -67,7 +64,9 @@ export enum PROGRAM_NAMES {
|
|||||||
ORCA_SWAP_2 = "Orca Swap Program v2",
|
ORCA_SWAP_2 = "Orca Swap Program v2",
|
||||||
ORCA_AQUAFARM = "Orca Aquafarm Program",
|
ORCA_AQUAFARM = "Orca Aquafarm Program",
|
||||||
PORT = "Port Finance Program",
|
PORT = "Port Finance Program",
|
||||||
PYTH = "Pyth Oracle Program",
|
PYTH_DEVNET = "Pyth Oracle Program",
|
||||||
|
PYTH_TESTNET = "Pyth Oracle Program",
|
||||||
|
PYTH_MAINNET = "Pyth Oracle Program",
|
||||||
QUARRY_MERGE_MINE = "Quarry Merge Mine",
|
QUARRY_MERGE_MINE = "Quarry Merge Mine",
|
||||||
QUARRY_MINE = "Quarry Mine",
|
QUARRY_MINE = "Quarry Mine",
|
||||||
QUARRY_MINT_WRAPPER = "Quarry Mint Wrapper",
|
QUARRY_MINT_WRAPPER = "Quarry Mint Wrapper",
|
||||||
@@ -99,148 +98,257 @@ const ALL_CLUSTERS = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const LIVE_CLUSTERS = [Cluster.Devnet, Cluster.Testnet, Cluster.MainnetBeta];
|
const LIVE_CLUSTERS = [Cluster.Devnet, Cluster.Testnet, Cluster.MainnetBeta];
|
||||||
const MAINNET_ONLY = [Cluster.MainnetBeta];
|
|
||||||
|
|
||||||
export const PROGRAM_DEPLOYMENTS = {
|
export type ProgramInfo = {
|
||||||
|
name: string;
|
||||||
|
deployments: Cluster[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const PROGRAM_INFO_BY_ID: { [address: string]: ProgramInfo } = {
|
||||||
// native built-ins
|
// native built-ins
|
||||||
[PROGRAM_NAMES.ADDRESS_MAP]: ALL_CLUSTERS,
|
AddressMap111111111111111111111111111111111: {
|
||||||
[PROGRAM_NAMES.CONFIG]: ALL_CLUSTERS,
|
name: PROGRAM_NAMES.ADDRESS_MAP,
|
||||||
[PROGRAM_NAMES.STAKE]: ALL_CLUSTERS,
|
deployments: ALL_CLUSTERS,
|
||||||
[PROGRAM_NAMES.SYSTEM]: ALL_CLUSTERS,
|
},
|
||||||
[PROGRAM_NAMES.VOTE]: ALL_CLUSTERS,
|
Config1111111111111111111111111111111111111: {
|
||||||
|
name: PROGRAM_NAMES.CONFIG,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
[StakeProgram.programId.toBase58()]: {
|
||||||
|
name: PROGRAM_NAMES.STAKE,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
[SystemProgram.programId.toBase58()]: {
|
||||||
|
name: PROGRAM_NAMES.SYSTEM,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
[VOTE_PROGRAM_ID.toBase58()]: {
|
||||||
|
name: PROGRAM_NAMES.VOTE,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
|
||||||
// native precompiles
|
// native precompiles
|
||||||
[PROGRAM_NAMES.SECP256K1]: ALL_CLUSTERS,
|
[Secp256k1Program.programId.toBase58()]: {
|
||||||
[PROGRAM_NAMES.ED25519]: ALL_CLUSTERS,
|
name: PROGRAM_NAMES.SECP256K1,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
[Ed25519Program.programId.toBase58()]: {
|
||||||
|
name: PROGRAM_NAMES.ED25519,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
|
||||||
// spl
|
// spl
|
||||||
[PROGRAM_NAMES.ASSOCIATED_TOKEN]: ALL_CLUSTERS,
|
ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL: {
|
||||||
[PROGRAM_NAMES.FEATURE_PROPOSAL]: ALL_CLUSTERS,
|
name: PROGRAM_NAMES.ASSOCIATED_TOKEN,
|
||||||
[PROGRAM_NAMES.LENDING]: LIVE_CLUSTERS,
|
deployments: ALL_CLUSTERS,
|
||||||
[PROGRAM_NAMES.MEMO]: ALL_CLUSTERS,
|
},
|
||||||
[PROGRAM_NAMES.MEMO_2]: ALL_CLUSTERS,
|
Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse: {
|
||||||
[PROGRAM_NAMES.NAME]: LIVE_CLUSTERS,
|
name: PROGRAM_NAMES.FEATURE_PROPOSAL,
|
||||||
[PROGRAM_NAMES.STAKE_POOL]: LIVE_CLUSTERS,
|
deployments: ALL_CLUSTERS,
|
||||||
[PROGRAM_NAMES.SWAP]: LIVE_CLUSTERS,
|
},
|
||||||
[PROGRAM_NAMES.TOKEN]: ALL_CLUSTERS,
|
LendZqTs7gn5CTSJU1jWKhKuVpjJGom45nnwPb2AMTi: {
|
||||||
[PROGRAM_NAMES.TOKEN_METADATA]: LIVE_CLUSTERS,
|
name: PROGRAM_NAMES.LENDING,
|
||||||
[PROGRAM_NAMES.TOKEN_VAULT]: LIVE_CLUSTERS,
|
deployments: LIVE_CLUSTERS,
|
||||||
|
},
|
||||||
|
Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo: {
|
||||||
|
name: PROGRAM_NAMES.MEMO,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr: {
|
||||||
|
name: PROGRAM_NAMES.MEMO_2,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX: {
|
||||||
|
name: PROGRAM_NAMES.NAME,
|
||||||
|
deployments: LIVE_CLUSTERS,
|
||||||
|
},
|
||||||
|
SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy: {
|
||||||
|
name: PROGRAM_NAMES.STAKE_POOL,
|
||||||
|
deployments: LIVE_CLUSTERS,
|
||||||
|
},
|
||||||
|
SwaPpA9LAaLfeLi3a68M4DjnLqgtticKg6CnyNwgAC8: {
|
||||||
|
name: PROGRAM_NAMES.SWAP,
|
||||||
|
deployments: LIVE_CLUSTERS,
|
||||||
|
},
|
||||||
|
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA: {
|
||||||
|
name: PROGRAM_NAMES.TOKEN,
|
||||||
|
deployments: ALL_CLUSTERS,
|
||||||
|
},
|
||||||
|
metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s: {
|
||||||
|
name: PROGRAM_NAMES.TOKEN_METADATA,
|
||||||
|
deployments: LIVE_CLUSTERS,
|
||||||
|
},
|
||||||
|
vau1zxA2LbssAUEF7Gpw91zMM1LvXrvpzJtmZ58rPsn: {
|
||||||
|
name: PROGRAM_NAMES.TOKEN_VAULT,
|
||||||
|
deployments: LIVE_CLUSTERS,
|
||||||
|
},
|
||||||
|
|
||||||
// other
|
// other
|
||||||
[PROGRAM_NAMES.ACUMEN]: MAINNET_ONLY,
|
C64kTdg1Hzv5KoQmZrQRcm2Qz7PkxtFBgw7EpFhvYn8W: {
|
||||||
[PROGRAM_NAMES.BONFIDA_POOL]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.ACUMEN,
|
||||||
[PROGRAM_NAMES.BREAK_SOLANA]: LIVE_CLUSTERS,
|
deployments: [Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.MANGO_GOVERNANCE]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.MANGO_ICO]: MAINNET_ONLY,
|
WvmTNLpGMVbwJVYztYL4Hnsy82cJhQorxjnnXcRm3b6: {
|
||||||
[PROGRAM_NAMES.MANGO_1]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.BONFIDA_POOL,
|
||||||
[PROGRAM_NAMES.MANGO_2]: MAINNET_ONLY,
|
deployments: [Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.MANGO_3]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.MARINADE]: MAINNET_ONLY,
|
BrEAK7zGZ6dM71zUDACDqJnekihmwF15noTddWTsknjC: {
|
||||||
[PROGRAM_NAMES.MERCURIAL]: [Cluster.Devnet, Cluster.MainnetBeta] as Cluster[],
|
name: PROGRAM_NAMES.BREAK_SOLANA,
|
||||||
[PROGRAM_NAMES.METAPLEX]: LIVE_CLUSTERS,
|
deployments: LIVE_CLUSTERS,
|
||||||
[PROGRAM_NAMES.NFT_AUCTION]: LIVE_CLUSTERS,
|
},
|
||||||
[PROGRAM_NAMES.NFT_CANDY_MACHINE]: LIVE_CLUSTERS,
|
GqTPL6qRf5aUuqscLh8Rg2HTxPUXfhhAXDptTLhp1t2J: {
|
||||||
[PROGRAM_NAMES.ORCA_SWAP_1]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.MANGO_GOVERNANCE,
|
||||||
[PROGRAM_NAMES.ORCA_SWAP_2]: MAINNET_ONLY,
|
deployments: [Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.ORCA_AQUAFARM]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.PORT]: MAINNET_ONLY,
|
"7sPptkymzvayoSbLXzBsXEF8TSf3typNnAWkrKrDizNb": {
|
||||||
[PROGRAM_NAMES.PYTH]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.MANGO_ICO,
|
||||||
[PROGRAM_NAMES.QUARRY_MERGE_MINE]: LIVE_CLUSTERS,
|
deployments: [Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.QUARRY_MINE]: LIVE_CLUSTERS,
|
},
|
||||||
[PROGRAM_NAMES.QUARRY_MINT_WRAPPER]: LIVE_CLUSTERS,
|
JD3bq9hGdy38PuWQ4h2YJpELmHVGPPfFSuFkpzAd9zfu: {
|
||||||
[PROGRAM_NAMES.QUARRY_REDEEMER]: LIVE_CLUSTERS,
|
name: PROGRAM_NAMES.MANGO_1,
|
||||||
[PROGRAM_NAMES.QUARRY_REGISTRY]: LIVE_CLUSTERS,
|
deployments: [Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.RAYDIUM_AMM]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.RAYDIUM_IDO]: MAINNET_ONLY,
|
"5fNfvyp5czQVX77yoACa3JJVEhdRaWjPuazuWgjhTqEH": {
|
||||||
[PROGRAM_NAMES.RAYDIUM_LP_1]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.MANGO_2,
|
||||||
[PROGRAM_NAMES.RAYDIUM_LP_2]: MAINNET_ONLY,
|
deployments: [Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.RAYDIUM_STAKING]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.SABER_ROUTER]: [
|
mv3ekLzLbnVPNxjSKvqBpU3ZeZXPQdEC3bp5MDEBG68: {
|
||||||
Cluster.Devnet,
|
name: PROGRAM_NAMES.MANGO_3,
|
||||||
Cluster.MainnetBeta,
|
deployments: [Cluster.MainnetBeta],
|
||||||
] as Cluster[],
|
},
|
||||||
[PROGRAM_NAMES.SABER_SWAP]: [
|
MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD: {
|
||||||
Cluster.Devnet,
|
name: PROGRAM_NAMES.MARINADE,
|
||||||
Cluster.MainnetBeta,
|
deployments: [Cluster.MainnetBeta],
|
||||||
] as Cluster[],
|
},
|
||||||
[PROGRAM_NAMES.SERUM_1]: MAINNET_ONLY,
|
MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky: {
|
||||||
[PROGRAM_NAMES.SERUM_2]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.MERCURIAL,
|
||||||
[PROGRAM_NAMES.SERUM_3]: MAINNET_ONLY,
|
deployments: [Cluster.Devnet, Cluster.MainnetBeta],
|
||||||
[PROGRAM_NAMES.SERUM_SWAP]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.SOLEND]: MAINNET_ONLY,
|
p1exdMJcjVao65QdewkaZRUnU6VPSXhus9n2GzWfh98: {
|
||||||
[PROGRAM_NAMES.SOLIDO]: MAINNET_ONLY,
|
name: PROGRAM_NAMES.METAPLEX,
|
||||||
[PROGRAM_NAMES.STEP_SWAP]: MAINNET_ONLY,
|
deployments: LIVE_CLUSTERS,
|
||||||
[PROGRAM_NAMES.SWITCHBOARD]: MAINNET_ONLY,
|
},
|
||||||
[PROGRAM_NAMES.WORMHOLE]: MAINNET_ONLY,
|
auctxRXPeJoc4817jDhf4HbjnhEcr1cCXenosMhK5R8: {
|
||||||
} as const;
|
name: PROGRAM_NAMES.NFT_AUCTION,
|
||||||
|
deployments: LIVE_CLUSTERS,
|
||||||
export const PROGRAM_NAME_BY_ID = {
|
},
|
||||||
// native built-ins
|
cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ: {
|
||||||
AddressMap111111111111111111111111111111111: PROGRAM_NAMES.ADDRESS_MAP,
|
name: PROGRAM_NAMES.NFT_CANDY_MACHINE,
|
||||||
Config1111111111111111111111111111111111111: PROGRAM_NAMES.CONFIG,
|
deployments: LIVE_CLUSTERS,
|
||||||
[StakeProgram.programId.toBase58()]: PROGRAM_NAMES.STAKE,
|
},
|
||||||
[SystemProgram.programId.toBase58()]: PROGRAM_NAMES.SYSTEM,
|
DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1: {
|
||||||
[VOTE_PROGRAM_ID.toBase58()]: PROGRAM_NAMES.VOTE,
|
name: PROGRAM_NAMES.ORCA_SWAP_1,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
// native precompiles
|
},
|
||||||
[Secp256k1Program.programId.toBase58()]: PROGRAM_NAMES.SECP256K1,
|
"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP": {
|
||||||
[Ed25519Program.programId.toBase58()]: PROGRAM_NAMES.ED25519,
|
name: PROGRAM_NAMES.ORCA_SWAP_2,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
// spl
|
},
|
||||||
ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL: PROGRAM_NAMES.ASSOCIATED_TOKEN,
|
"82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ": {
|
||||||
Feat1YXHhH6t1juaWF74WLcfv4XoNocjXA6sPWHNgAse: PROGRAM_NAMES.FEATURE_PROPOSAL,
|
name: PROGRAM_NAMES.ORCA_AQUAFARM,
|
||||||
LendZqTs7gn5CTSJU1jWKhKuVpjJGom45nnwPb2AMTi: PROGRAM_NAMES.LENDING,
|
deployments: [Cluster.MainnetBeta],
|
||||||
Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo: PROGRAM_NAMES.MEMO,
|
},
|
||||||
MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr: PROGRAM_NAMES.MEMO_2,
|
Port7uDYB3wk6GJAw4KT1WpTeMtSu9bTcChBHkX2LfR: {
|
||||||
namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX: PROGRAM_NAMES.NAME,
|
name: PROGRAM_NAMES.PORT,
|
||||||
SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy: PROGRAM_NAMES.STAKE_POOL,
|
deployments: [Cluster.MainnetBeta],
|
||||||
SwaPpA9LAaLfeLi3a68M4DjnLqgtticKg6CnyNwgAC8: PROGRAM_NAMES.SWAP,
|
},
|
||||||
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA: PROGRAM_NAMES.TOKEN,
|
gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s: {
|
||||||
metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s: PROGRAM_NAMES.TOKEN_METADATA,
|
name: PROGRAM_NAMES.PYTH_DEVNET,
|
||||||
vau1zxA2LbssAUEF7Gpw91zMM1LvXrvpzJtmZ58rPsn: PROGRAM_NAMES.TOKEN_VAULT,
|
deployments: [Cluster.Devnet],
|
||||||
|
},
|
||||||
// other
|
"8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz": {
|
||||||
C64kTdg1Hzv5KoQmZrQRcm2Qz7PkxtFBgw7EpFhvYn8W: PROGRAM_NAMES.ACUMEN,
|
name: PROGRAM_NAMES.PYTH_TESTNET,
|
||||||
WvmTNLpGMVbwJVYztYL4Hnsy82cJhQorxjnnXcRm3b6: PROGRAM_NAMES.BONFIDA_POOL,
|
deployments: [Cluster.Testnet],
|
||||||
BrEAK7zGZ6dM71zUDACDqJnekihmwF15noTddWTsknjC: PROGRAM_NAMES.BREAK_SOLANA,
|
},
|
||||||
GqTPL6qRf5aUuqscLh8Rg2HTxPUXfhhAXDptTLhp1t2J: PROGRAM_NAMES.MANGO_GOVERNANCE,
|
FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH: {
|
||||||
"7sPptkymzvayoSbLXzBsXEF8TSf3typNnAWkrKrDizNb": PROGRAM_NAMES.MANGO_ICO,
|
name: PROGRAM_NAMES.PYTH_MAINNET,
|
||||||
JD3bq9hGdy38PuWQ4h2YJpELmHVGPPfFSuFkpzAd9zfu: PROGRAM_NAMES.MANGO_1,
|
deployments: [Cluster.MainnetBeta],
|
||||||
"5fNfvyp5czQVX77yoACa3JJVEhdRaWjPuazuWgjhTqEH": PROGRAM_NAMES.MANGO_2,
|
},
|
||||||
mv3ekLzLbnVPNxjSKvqBpU3ZeZXPQdEC3bp5MDEBG68: PROGRAM_NAMES.MANGO_3,
|
QMMD16kjauP5knBwxNUJRZ1Z5o3deBuFrqVjBVmmqto: {
|
||||||
MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD: PROGRAM_NAMES.MARINADE,
|
name: PROGRAM_NAMES.QUARRY_MERGE_MINE,
|
||||||
MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky: PROGRAM_NAMES.MERCURIAL,
|
deployments: LIVE_CLUSTERS,
|
||||||
p1exdMJcjVao65QdewkaZRUnU6VPSXhus9n2GzWfh98: PROGRAM_NAMES.METAPLEX,
|
},
|
||||||
auctxRXPeJoc4817jDhf4HbjnhEcr1cCXenosMhK5R8: PROGRAM_NAMES.NFT_AUCTION,
|
QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB: {
|
||||||
cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ: PROGRAM_NAMES.NFT_CANDY_MACHINE,
|
name: PROGRAM_NAMES.QUARRY_MINE,
|
||||||
DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1: PROGRAM_NAMES.ORCA_SWAP_1,
|
deployments: LIVE_CLUSTERS,
|
||||||
"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP": PROGRAM_NAMES.ORCA_SWAP_2,
|
},
|
||||||
"82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ": PROGRAM_NAMES.ORCA_AQUAFARM,
|
QMWoBmAyJLAsA1Lh9ugMTw2gciTihncciphzdNzdZYV: {
|
||||||
Port7uDYB3wk6GJAw4KT1WpTeMtSu9bTcChBHkX2LfR: PROGRAM_NAMES.PORT,
|
name: PROGRAM_NAMES.QUARRY_MINT_WRAPPER,
|
||||||
FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH: PROGRAM_NAMES.PYTH,
|
deployments: LIVE_CLUSTERS,
|
||||||
QMMD16kjauP5knBwxNUJRZ1Z5o3deBuFrqVjBVmmqto: PROGRAM_NAMES.QUARRY_MERGE_MINE,
|
},
|
||||||
QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB: PROGRAM_NAMES.QUARRY_MINE,
|
QRDxhMw1P2NEfiw5mYXG79bwfgHTdasY2xNP76XSea9: {
|
||||||
QMWoBmAyJLAsA1Lh9ugMTw2gciTihncciphzdNzdZYV:
|
name: PROGRAM_NAMES.QUARRY_REDEEMER,
|
||||||
PROGRAM_NAMES.QUARRY_MINT_WRAPPER,
|
deployments: LIVE_CLUSTERS,
|
||||||
QRDxhMw1P2NEfiw5mYXG79bwfgHTdasY2xNP76XSea9: PROGRAM_NAMES.QUARRY_REDEEMER,
|
},
|
||||||
QREGBnEj9Sa5uR91AV8u3FxThgP5ZCvdZUW2bHAkfNc: PROGRAM_NAMES.QUARRY_REGISTRY,
|
QREGBnEj9Sa5uR91AV8u3FxThgP5ZCvdZUW2bHAkfNc: {
|
||||||
"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8": PROGRAM_NAMES.RAYDIUM_AMM,
|
name: PROGRAM_NAMES.QUARRY_REGISTRY,
|
||||||
"9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC": PROGRAM_NAMES.RAYDIUM_IDO,
|
deployments: LIVE_CLUSTERS,
|
||||||
RVKd61ztZW9GUwhRbbLoYVRE5Xf1B2tVscKqwZqXgEr: PROGRAM_NAMES.RAYDIUM_LP_1,
|
},
|
||||||
"27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv": PROGRAM_NAMES.RAYDIUM_LP_2,
|
"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8": {
|
||||||
EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q: PROGRAM_NAMES.RAYDIUM_STAKING,
|
name: PROGRAM_NAMES.RAYDIUM_AMM,
|
||||||
Crt7UoUR6QgrFrN7j8rmSQpUTNWNSitSwWvsWGf1qZ5t: PROGRAM_NAMES.SABER_ROUTER,
|
deployments: [Cluster.MainnetBeta],
|
||||||
SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ: PROGRAM_NAMES.SABER_SWAP,
|
},
|
||||||
BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg: PROGRAM_NAMES.SERUM_1,
|
"9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC": {
|
||||||
EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o: PROGRAM_NAMES.SERUM_2,
|
name: PROGRAM_NAMES.RAYDIUM_IDO,
|
||||||
"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin": PROGRAM_NAMES.SERUM_3,
|
deployments: [Cluster.MainnetBeta],
|
||||||
"22Y43yTVxuUkoRKdm9thyRhQ3SdgQS7c7kB6UNCiaczD": PROGRAM_NAMES.SERUM_SWAP,
|
},
|
||||||
So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo: PROGRAM_NAMES.SOLEND,
|
RVKd61ztZW9GUwhRbbLoYVRE5Xf1B2tVscKqwZqXgEr: {
|
||||||
CrX7kMhLC3cSsXJdT7JDgqrRVWGnUpX3gfEfxxU2NVLi: PROGRAM_NAMES.SOLIDO,
|
name: PROGRAM_NAMES.RAYDIUM_LP_1,
|
||||||
SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1: PROGRAM_NAMES.STEP_SWAP,
|
deployments: [Cluster.MainnetBeta],
|
||||||
DtmE9D2CSB4L5D6A15mraeEjrGMm6auWVzgaD8hK2tZM: PROGRAM_NAMES.SWITCHBOARD,
|
},
|
||||||
WormT3McKhFJ2RkiGpdw9GKvNCrB2aB54gb2uV9MfQC: PROGRAM_NAMES.WORMHOLE,
|
"27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv": {
|
||||||
} as const;
|
name: PROGRAM_NAMES.RAYDIUM_LP_2,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q: {
|
||||||
|
name: PROGRAM_NAMES.RAYDIUM_STAKING,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
Crt7UoUR6QgrFrN7j8rmSQpUTNWNSitSwWvsWGf1qZ5t: {
|
||||||
|
name: PROGRAM_NAMES.SABER_ROUTER,
|
||||||
|
deployments: [Cluster.Devnet, Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ: {
|
||||||
|
name: PROGRAM_NAMES.SABER_SWAP,
|
||||||
|
deployments: [Cluster.Devnet, Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg: {
|
||||||
|
name: PROGRAM_NAMES.SERUM_1,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o: {
|
||||||
|
name: PROGRAM_NAMES.SERUM_2,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin": {
|
||||||
|
name: PROGRAM_NAMES.SERUM_3,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
"22Y43yTVxuUkoRKdm9thyRhQ3SdgQS7c7kB6UNCiaczD": {
|
||||||
|
name: PROGRAM_NAMES.SERUM_SWAP,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo: {
|
||||||
|
name: PROGRAM_NAMES.SOLEND,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
CrX7kMhLC3cSsXJdT7JDgqrRVWGnUpX3gfEfxxU2NVLi: {
|
||||||
|
name: PROGRAM_NAMES.SOLIDO,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1: {
|
||||||
|
name: PROGRAM_NAMES.STEP_SWAP,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
DtmE9D2CSB4L5D6A15mraeEjrGMm6auWVzgaD8hK2tZM: {
|
||||||
|
name: PROGRAM_NAMES.SWITCHBOARD,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
WormT3McKhFJ2RkiGpdw9GKvNCrB2aB54gb2uV9MfQC: {
|
||||||
|
name: PROGRAM_NAMES.WORMHOLE,
|
||||||
|
deployments: [Cluster.MainnetBeta],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
export type LoaderName = typeof LOADER_IDS[keyof typeof LOADER_IDS];
|
export type LoaderName = typeof LOADER_IDS[keyof typeof LOADER_IDS];
|
||||||
export const LOADER_IDS = {
|
export const LOADER_IDS = {
|
||||||
@@ -273,9 +381,9 @@ export function programLabel(
|
|||||||
address: string,
|
address: string,
|
||||||
cluster: Cluster
|
cluster: Cluster
|
||||||
): string | undefined {
|
): string | undefined {
|
||||||
const programName = PROGRAM_NAME_BY_ID[address];
|
const programInfo = PROGRAM_INFO_BY_ID[address];
|
||||||
if (programName && PROGRAM_DEPLOYMENTS[programName].includes(cluster)) {
|
if (programInfo && programInfo.deployments.includes(cluster)) {
|
||||||
return programName;
|
return programInfo.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LOADER_IDS[address];
|
return LOADER_IDS[address];
|
||||||
|
Reference in New Issue
Block a user