> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Toolchain

> Setup minimum untuk membaca state on-chain Raydium, membangun transaksi, dan mengembangkan melawan program. Solana CLI, Anchor, SDK di TypeScript dan Python, serta tips devnet/localnet.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/solana-fundamentals/toolchain)
</Info>

Seluruh dokumentasi ini mengasumsikan Anda memiliki toolchain pengembangan Solana yang berfungsi. Halaman ini mencantumkan alat yang diperlukan, versi minimum yang diketahui kompatibel dengan Raydium per April 2026, dan gotcha spesifik dalam setup. Mulai dari sini sebelum menjalankan contoh kode di bab-bab selanjutnya.

## Alat inti

### Solana CLI

Command-line interface kanonik untuk berinteraksi dengan cluster Solana — manajemen wallet, RPC call, deployment program.

Instalasi:

```bash theme={null}
sh -c "$(curl -sSfL https://release.solana.com/v1.18.22/install)"
# Atau versi stabil terbaru:
sh -c "$(curl -sSfL https://release.solana.com/stable/install)"
```

Verifikasi:

```bash theme={null}
solana --version   # → solana-cli 1.18.22 (atau lebih baru)
```

Konfigurasi untuk mainnet:

```bash theme={null}
solana config set --url https://api.mainnet-beta.solana.com
solana config set --keypair ~/.config/solana/id.json
solana-keygen new                           # buat wallet jika Anda belum punya
solana address                              # public key Anda
```

Untuk testing Raydium, Anda hampir selalu memerlukan wallet devnet yang terfunding:

```bash theme={null}
solana config set --url https://api.devnet.solana.com
solana airdrop 2                            # 2 SOL untuk testing
```

### SPL Token CLI

CLI resmi untuk operasi SPL Token / Token-2022 — membuat mint, minting token, transfer.

Instalasi (sudah termasuk dengan Solana CLI):

```bash theme={null}
spl-token --version
```

Operasi umum:

```bash theme={null}
spl-token create-token                                  # buat SPL Token mint
spl-token create-token --program-id TOKEN_2022 ...      # buat Token-2022 mint
spl-token create-account <MINT>                         # buat ATA
spl-token mint <MINT> 1000                              # mint 1000 token ke ATA Anda
spl-token transfer <MINT> 100 <RECIPIENT>               # transfer 100
spl-token display <ACCOUNT_OR_MINT>                     # inspeksi
```

### Anchor CLI

Diperlukan untuk fetch Raydium IDL, membangun klien, dan verifikasi program.

Instalasi:

```bash theme={null}
cargo install --git https://github.com/coral-xyz/anchor avm --locked
avm install 0.30.1
avm use 0.30.1
anchor --version
```

Operasi umum:

```bash theme={null}
anchor idl fetch <PROGRAM_ID> -o program.idl.json       # fetch IDL on-chain
anchor idl init -f idl.json <PROGRAM_ID>                # upload IDL
anchor build                                             # build program dari source
```

## Setup TypeScript

Path integrasi utama untuk Raydium.

### Package

```bash theme={null}
npm install \
  @solana/web3.js \
  @solana/spl-token \
  @coral-xyz/anchor \
  @raydium-io/raydium-sdk-v2 \
  bn.js \
  decimal.js
```

Versi yang diketahui bekerja bersama per April 2026:

| Package                      | Versi         |
| ---------------------------- | ------------- |
| `@solana/web3.js`            | ≥1.95         |
| `@solana/spl-token`          | ≥0.4          |
| `@coral-xyz/anchor`          | ≥0.30         |
| `@raydium-io/raydium-sdk-v2` | ≥0.2.42-alpha |

### Script minimal

```ts theme={null}
import { Connection, Keypair } from "@solana/web3.js";
import { Raydium } from "@raydium-io/raydium-sdk-v2";

const connection = new Connection("https://api.mainnet-beta.solana.com", "confirmed");
const owner      = Keypair.fromSecretKey(/* your key */);

const raydium = await Raydium.load({
  connection,
  owner,
  cluster:      "mainnet",
  disableFeatureCheck: true,
});

const poolInfo = await raydium.api.fetchPoolById({ id: "..." });
console.log(poolInfo);
```

Lihat [`sdk-api/typescript-sdk`](/id/sdk-api/typescript-sdk) untuk referensi SDK lengkap.

## Setup Rust

Untuk integrasi CPI dan program on-chain.

### Toolchain

```bash theme={null}
rustup install 1.76.0           # atau apa pun yang Anchor saat ini memerlukan
rustup component add rustfmt clippy
solana-install init 1.18.22     # toolchain BPF termasuk
```

### Program Cargo.toml untuk integrasi Raydium CPI

```toml theme={null}
[dependencies]
anchor-lang        = "0.30.1"
anchor-spl         = "0.30.1"
raydium-cp-swap    = { version = "0.2", features = ["cpi"] }
raydium-clmm       = { version = "0.1", features = ["cpi"] }
```

Fitur `"cpi"` mengimpor modul `cpi` dengan helper CPI (sehingga Anda dapat `raydium_cp_swap::cpi::swap_base_input(...)`). Lihat [`sdk-api/rust-cpi`](/id/sdk-api/rust-cpi).

## Setup Python

Path integrasi sekunder — umum untuk pengembang bot.

### Package

```bash theme={null}
pip install solders solana-py anchorpy
pip install raydium-py    # community Raydium SDK (bukan official)
```

Versi:

| Package      | Versi  |
| ------------ | ------ |
| `solders`    | ≥0.21  |
| `solana-py`  | ≥0.34  |
| `anchorpy`   | ≥0.21  |
| `raydium-py` | ≥0.2.1 |

### Script minimal

```python theme={null}
from solana.rpc.async_api import AsyncClient
from solders.keypair import Keypair
from anchorpy import Provider, Wallet, Program

async def main():
    conn = AsyncClient("https://api.mainnet-beta.solana.com")
    owner = Keypair()
    wallet = Wallet(owner)
    provider = Provider(conn, wallet)

    # Load IDL and program
    with open("cpmm.idl.json") as f:
        idl = json.load(f)
    program = Program(idl, CPMM_PROGRAM_ID, provider)

    pool = await program.account["PoolState"].fetch(pool_id)
    print(pool)
```

Lihat [`sdk-api/python-integration`](/id/sdk-api/python-integration).

## RPC endpoint

Public mainnet RPC (`api.mainnet-beta.solana.com`) dibatasi rate dengan berat dan akan throttle di bawah beban apa pun. Untuk penggunaan non-trivial, dapatkan endpoint private:

| Provider              | Catatan                                      |
| --------------------- | -------------------------------------------- |
| Helius                | Paling populer; free tier generous.          |
| Triton                | Enterprise; harga premium, stabil.           |
| QuickNode             | Solid; latency sub-per-second.               |
| RPC node Anda sendiri | Biaya \~\$500/bulan hardware; kontrol penuh. |

Konfigurasi:

```ts theme={null}
const connection = new Connection("https://mainnet.helius-rpc.com/?api-key=...");
```

Beberapa operasi RPC memerlukan capability extended:

* `getProgramAccounts` — scan tanpa batasan mahal; beberapa provider membatasi atau mencharge per scan.
* `getPriorityFeeEstimate` — endpoint spesifik Helius; yang lain punya equivalent.
* `geyser` / WebSocket streaming — diperlukan untuk bot low-latency; bukan semua provider expose-nya.

## Devnet dan localnet

### Devnet

Public test cluster Solana. Raydium memiliki partial devnet deployment:

* Beberapa pool CPMM ada untuk testing.
* AMM v4 memiliki pool devnet historis.
* CLMM memiliki beberapa demo pool.
* Farm v6 di-deploy.

```bash theme={null}
solana config set --url https://api.devnet.solana.com
solana airdrop 2
```

SDK mendukung devnet via `cluster: "devnet"`:

```ts theme={null}
const raydium = await Raydium.load({ connection, owner, cluster: "devnet" });
```

**Caveat**: pool devnet memiliki likuiditas tipis dan mungkin memiliki state yang stale. Jangan andalkan devnet untuk price discovery; gunakan hanya untuk building-and-testing-instruction flows.

### Localnet dengan forked mainnet state

Untuk testing realistis, fork mainnet state ke local validator:

```bash theme={null}
solana-test-validator \
  --url https://api.mainnet-beta.solana.com \
  --clone CPMMoo8L3F4NbTegBCKVNunggL7H1Zpdmwpwh8KMoZ0F \
  --clone CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK \
  --clone <SOME_POOL_ID> \
  --clone <SOME_MINT_ID>
```

Ini clone program/account state spesifik ke localhost, di mana Anda dapat bertransaksi secara bebas. Ideal untuk:

* Unit-testing integrasi CPI Anda melawan program Raydium real.
* Replay transaksi dengan parameter modified untuk debug.
* Stress-testing dengan volume synthetic besar.

Tim Raydium menggunakan forked localnet extensively untuk regression testing sebelum mainnet deployment.

## Project template

### TypeScript integration starter

```
my-raydium-app/
├── package.json
├── tsconfig.json
├── src/
│   ├── swap.ts           # swap example
│   ├── add-liquidity.ts
│   └── read-pool.ts
└── .env                  # RPC URL, wallet path
```

Minimal `package.json`:

```json theme={null}
{
  "name": "my-raydium-app",
  "type": "module",
  "scripts": { "swap": "tsx src/swap.ts" },
  "dependencies": {
    "@raydium-io/raydium-sdk-v2": "^0.2.42-alpha",
    "@solana/web3.js": "^1.95",
    "@solana/spl-token": "^0.4"
  },
  "devDependencies": {
    "@types/node": "^20",
    "tsx": "^4",
    "typescript": "^5"
  }
}
```

### Anchor CPI program starter

```
my-raydium-cpi/
├── Anchor.toml
├── Cargo.toml
├── programs/
│   └── my-cpi/
│       ├── Cargo.toml
│       └── src/lib.rs
└── tests/
    └── my-cpi.ts
```

Dengan Anchor 0.30:

```bash theme={null}
anchor init my-raydium-cpi
cd my-raydium-cpi
# add raydium-cp-swap ke Cargo.toml dengan features = ["cpi"]
anchor build
anchor test
```

## Utility CLI berguna

### `solana-keygen`

```bash theme={null}
solana-keygen new --outfile ./wallet.json          # generate key
solana-keygen pubkey ./wallet.json                 # show public key
```

### Membaca account apa pun

```bash theme={null}
solana account <ADDRESS> --output json-compact
```

Berguna untuk melihat pool state tanpa decoder.

### Program logs

```bash theme={null}
solana logs | grep CPMMoo8                         # tail CPMM-related tx logs
```

### Transaction inspection

```bash theme={null}
solana confirm <TX_SIGNATURE> -v                   # pretty-prints logs
```

Atau via [explorer](https://explorer.solana.com) — paste signature dan lihat tab "Program Logs".

## Environment hygiene

### Separate wallet per tujuan

* **Development wallet**: memegang testnet SOL, digunakan untuk building.
* **Production wallet**: memegang real SOL, hanya digunakan untuk deploy / multisig submission.
* **Hot wallet untuk bot**: balance kecil, permission narrow.

Key tidak boleh hardcoded. Gunakan environment variable atau secret manager.

### `.env` pattern

```
# .env (not committed)
SOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=...
WALLET_PATH=/Users/you/.config/solana/id.json
```

```ts theme={null}
import { config } from "dotenv";
config();

const connection = new Connection(process.env.SOLANA_RPC_URL!);
```

### Version pinning

Lock semua Solana-ecosystem dependency. Ekosistem bergerak cepat; minor version bump `@solana/web3.js` sebelumnya telah introduce breaking change. Gunakan `package-lock.json` / `Cargo.lock` dengan seksama.

## Pointer

* [`sdk-api/typescript-sdk`](/id/sdk-api/typescript-sdk) — Referensi TypeScript SDK.
* [`sdk-api/rust-cpi`](/id/sdk-api/rust-cpi) — Penggunaan Rust CPI.
* [`sdk-api/python-integration`](/id/sdk-api/python-integration) — Setup Python.
* [`solana-fundamentals/programs-and-anchor`](/id/solana-fundamentals/programs-and-anchor) — Background Anchor.

Sumber:

* [Solana install docs](https://docs.solana.com/cli/install-solana-cli-tools).
* [Anchor book: getting started](https://book.anchor-lang.com/getting_started/installation.html).
* [Raydium SDK v2 repo](https://github.com/raydium-io/raydium-sdk-V2).
