# Orca Program Addresses and Common Pools

## Program IDs

### Whirlpool Program

| Network | Program ID |
|---------|------------|
| Solana Mainnet | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc` |
| Solana Devnet | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc` |
| Eclipse Mainnet | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc` |
| Eclipse Testnet | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc` |

### Whirlpools Config

| Network | Config Address |
|---------|----------------|
| Solana Mainnet | `2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ` |
| Solana Devnet | `FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR` |
| Eclipse Mainnet | `9iFER3bWjNPBqm7Lkn7k2RjTbqvZ5Ybi8h3dNChnT4AM` |
| Eclipse Testnet | `BAkdGpQpxWbeHqPEqr2mnmXXgSq1c5j6EjkFHj5DPSZW` |

---

## Common Token Mints

### Solana Mainnet

| Token | Mint Address |
|-------|--------------|
| SOL (Wrapped) | `So11111111111111111111111111111111111111112` |
| USDC | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` |
| USDT | `Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB` |
| ORCA | `orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE` |
| RAY | `4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R` |
| BONK | `DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263` |
| JUP | `JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN` |
| JTO | `jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL` |
| PYTH | `HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3` |
| WIF | `EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm` |
| mSOL | `mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So` |
| stSOL | `7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj` |
| bSOL | `bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1` |

### Solana Devnet

| Token | Mint Address |
|-------|--------------|
| SOL (Wrapped) | `So11111111111111111111111111111111111111112` |
| USDC (Devnet) | `4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU` |
| USDT (Devnet) | `EJwZgeZrdC8TXTQbQBoL6bfuAnFUUy1PVCMB4DYPzVaS` |
| ORCA (Devnet) | `orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L` |

---

## Popular Whirlpools (Mainnet)

### Major Pairs

| Pool | Token A | Token B | Tick Spacing | Address |
|------|---------|---------|--------------|---------|
| SOL/USDC | SOL | USDC | 64 | `7qbRF6YsyGuLUVs6Y1sfC93Vulo2YBcmfkPHJmxRQWYL` |
| SOL/USDT | SOL | USDT | 64 | `4GkRbcYg1VKsZropgai4dMf2Nj2PkXNLf43knFpavrSi` |
| USDC/USDT | USDC | USDT | 1 | `4fuUiYxTQ6QCrdSq9ouBYcTM7bqSwYTSyLueGZLTy4T4` |
| ORCA/SOL | ORCA | SOL | 64 | `2AEWSvUds1wsufnsDPCXjFsJCMJH5SNNm7fSF4kxys9a` |
| BONK/SOL | BONK | SOL | 64 | `Bvk9dN2NWLNsNHsqrCEKAbDu1bcUXCHMQPHQUEWPRWV3` |
| JUP/SOL | JUP | SOL | 64 | `BqnpCdDLPV2pFdAaLnVidmn3G93RP2p5oRdGEY2sJGez` |
| WIF/SOL | WIF | SOL | 128 | `EP2ib6dYdEeqD8MfE2ezHCxX3kP3K2eLKkirfPm5eyMx` |

### Stablecoin Pools

| Pool | Token A | Token B | Tick Spacing | Address |
|------|---------|---------|--------------|---------|
| USDC/USDT | USDC | USDT | 1 | `4fuUiYxTQ6QCrdSq9ouBYcTM7bqSwYTSyLueGZLTy4T4` |

### Liquid Staking Pools

| Pool | Token A | Token B | Tick Spacing | Address |
|------|---------|---------|--------------|---------|
| mSOL/SOL | mSOL | SOL | 1 | `HJHdcP7xpvST5rhM5RqbUGMCYNE3hY4dMN4nfVMdZFYx` |
| stSOL/SOL | stSOL | SOL | 1 | `2AEWSvUds1wsufnsDPCXjFsJCMJH5SNNm7fSF4kxys9a` |
| bSOL/SOL | bSOL | SOL | 1 | `D68NB5JkzvyNCZAvi6EGtEcGvSoRNPanU9heYTAUFFRa` |

---

## Tick Spacing Reference

| Tick Spacing | Fee Tier | Use Case |
|--------------|----------|----------|
| 1 | 0.01% | Stablecoins, pegged assets |
| 8 | 0.04% | Correlated pairs |
| 64 | 0.30% | Standard pairs |
| 128 | 1.00% | Exotic/volatile pairs |

---

## PDA Seeds

### Whirlpool PDA

```typescript
import { PublicKey } from "@solana/web3.js";

const WHIRLPOOL_PROGRAM_ID = new PublicKey("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc");

// Whirlpool PDA
const [whirlpoolPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("whirlpool"),
    whirlpoolsConfig.toBuffer(),
    tokenMintA.toBuffer(),
    tokenMintB.toBuffer(),
    new BN(tickSpacing).toArrayLike(Buffer, "le", 2),
  ],
  WHIRLPOOL_PROGRAM_ID
);
```

### Position PDA

```typescript
// Position PDA
const [positionPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("position"),
    positionMint.toBuffer(),
  ],
  WHIRLPOOL_PROGRAM_ID
);
```

### Tick Array PDA

```typescript
// Tick Array PDA
const [tickArrayPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("tick_array"),
    whirlpool.toBuffer(),
    new BN(startTickIndex).toArrayLike(Buffer, "le", 4),
  ],
  WHIRLPOOL_PROGRAM_ID
);
```

### Position Bundle PDA

```typescript
// Position Bundle PDA
const [positionBundlePda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("position_bundle"),
    positionBundleMint.toBuffer(),
  ],
  WHIRLPOOL_PROGRAM_ID
);
```

### Fee Tier PDA

```typescript
// Fee Tier PDA
const [feeTierPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("fee_tier"),
    whirlpoolsConfig.toBuffer(),
    new BN(tickSpacing).toArrayLike(Buffer, "le", 2),
  ],
  WHIRLPOOL_PROGRAM_ID
);
```

---

## Account Sizes

| Account Type | Size (bytes) |
|--------------|--------------|
| WhirlpoolsConfig | 108 |
| Whirlpool | 653 |
| Position | 216 |
| PositionBundle | 136 |
| TickArray | 9988 |
| FeeTier | 44 |

---

## Useful Links

- [Orca App](https://www.orca.so/)
- [Pool Explorer](https://www.orca.so/pools)
- [Developer Docs](https://dev.orca.so/)
- [GitHub](https://github.com/orca-so/whirlpools)
- [Solscan Program](https://solscan.io/account/whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc)
