Chuyển đến nội dung chính

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.

Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
GlobalConfig là tài khoản cấu hình ở mức giao thức. Có thể có nhiều tài khoản — được khóa bằng (curve_type, index) — và mỗi phiên đều chọn chính xác một tài khoản tại thời điểm Initialize. Các giá trị trên GlobalConfig được chọn sau đó trở thành giới hạn cứng cho các tham số của phiên đó. Để tùy chỉnh ở mức nền tảng (tỷ lệ phí cho mỗi nền tảng, hình dạng đường cong được phép, phân chia NFT tại thời điểm tốt nghiệp), hãy xem products/launchlab/platform-config.

Nó là gì

GlobalConfig là một PDA singleton-per-(curve_type, index) giữ cố định các quy tắc ở mức giao thức mà mọi phiên phải tuân theo:
  • Loại bonding curve được cho phép (curve_type).
  • Tỷ lệ phí giao dịch mà đường cong tính phí trên mỗi lần mua và bán.
  • Phí di chuyển tính phí tại thời điểm tốt nghiệp.
  • Giới hạn dưới cho tỷ lệ cung cấp, tỷ lệ khóa, tỷ lệ bán và tỷ lệ di chuyển.
  • Quote mint (thường là wrapped SOL hoặc USDC) — tài sản mà người dùng mua với.
  • Ba ví ở mức giao thức: chủ sở hữu phí giao thức, chủ sở hữu phí di chuyển, và hai ví kiểm soát di chuyển ủy quyền tốt nghiệp sang AMM v4 / CPMM.
  • Một cờ tùy chọn (requires_platform_auth) giới hạn các nền tảng nào có thể sử dụng cấu hình này.
Các tài khoản GlobalConfig được tạo và cập nhật bởi quản trị viên chương trình LaunchLab (khóa quản trị cứng được chia sẻ trên các chương trình Raydium dựa trên Anchor — xem reference/program-addresses).

Bố cục

// states/config.rs
pub const GLOBAL_CONFIG_SEED: &str = "global_config";

#[account]
pub struct GlobalConfig {
    pub epoch:                   u64,         // recent_epoch tracker
    pub curve_type:              u8,          // 0 = ConstantProduct, 1 = FixedPrice, 2 = LinearPrice
    pub index:                   u16,         // discriminator within a curve_type
    pub migrate_fee:             u64,         // SOL paid on graduation
    pub trade_fee_rate:          u64,         // 1/1_000_000 of volume
    pub max_share_fee_rate:      u64,         // 100 bps cap on platform share fee
    pub min_base_supply:         u64,         // floor on Initialize supply (no decimals)
    pub max_lock_rate:           u64,         // ceiling on vesting locked / supply
    pub min_base_sell_rate:      u64,         // floor on base_supply_graduation / supply
    pub min_base_migrate_rate:   u64,         // floor on tokens that seed the post-graduation pool
    pub min_quote_fund_raising:  u64,         // floor on quote_reserve_target (with decimals)
    pub quote_mint:              Pubkey,
    pub protocol_fee_owner:      Pubkey,      // claims protocol fees via CollectFee
    pub migrate_fee_owner:       Pubkey,      // claims migration fees via CollectMigrateFee
    pub migrate_to_amm_wallet:   Pubkey,      // can sign MigrateToAmm
    pub migrate_to_cpswap_wallet:Pubkey,      // can sign MigrateToCpswap
    pub requires_platform_auth:  u8,          // 0/1 flag
    pub padding_alignment:       [u8; 7],
    pub padding:                 [u64; 15],
}
Dẫn xuất PDA:
const [globalConfig] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    Buffer.from(quoteMint.toBytes()),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);
(Xác minh thứ tự hạt giống chính xác từ tài khoản trên chuỗi trước khi ký — lệnh create_config của chương trình là nguồn sự thật.)

Ngữ nghĩa trường

curve_typeindex

Cùng nhau, những trường này khóa một GlobalConfig một cách duy nhất. Có một GlobalConfig cho mỗi cặp (curve_type, index):
  • curve_type = 0 — Đường cong dự trữ ảo với sản phẩm hằng số. Mặc định và được sử dụng nhiều nhất.
  • curve_type = 1 — Đường cong giá cố định.
  • curve_type = 2 — Đường cong giá tuyến tính.
index là một u16 cho phép quản trị viên công bố nhiều cấu hình cho mỗi loại đường cong (ví dụ: một có phí chặt hơn, một có mức tối thiểu nâng cao hơn). Tại Initialize, phiên cung cấp cặp (curve_type, index) và chương trình tải GlobalConfig phù hợp.

Phí

  • trade_fee_rate — được tính theo 1/1_000_000 của khối lượng giao dịch. Áp dụng cho mỗi lần mua và bán trên đường cong. protocol_fee_owner yêu cầu phần chia của nó thông qua CollectFee.
  • migrate_fee — phí cố định tính bằng lamports (hoặc đơn vị quote, tùy thuộc vào cấu hình) tính một lần tại thời điểm tốt nghiệp. Được yêu cầu bởi migrate_fee_owner thông qua CollectMigrateFee.
  • max_share_fee_rate — được khởi tạo thành 10_000 (100 bps). Giới hạn tỷ lệ phí chia sẻ của nền tảng từ PlatformConfig ràng buộc (xem platform-config). Chương trình thực thi trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Giới hạn dưới của cung cấp và tỷ lệ

Những giới hạn này giới hạn những tham số hình dạng đường cong mà một phiên có thể chọn tại Initialize. Nếu CurveParams của người tạo vi phạm bất kỳ điều nào trong số chúng, Initialize sẽ hoàn nguyên với InvalidInput.
  • min_base_supplysupply tối thiểu (không có số thập phân) mà đường cong có thể khai báo. Mặc định là 10_000_000.
  • max_lock_rate — được tính theo 1/1_000_000; mặc định 300_000 (30%). Giới hạn vesting thông qua total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — được tính theo 1/1_000_000; mặc định 200_000 (20%). Giới hạn base_supply_graduation / supply từ dưới.
  • min_base_migrate_rate — được tính theo 1/1_000_000; mặc định 200_000 (20%). Giới hạn số lượng token còn lại để hạt giống nhân giống sau tốt nghiệp.
  • min_quote_fund_raisingquote_reserve_target tối thiểu mà một phiên có thể khai báo (với số thập phân). Mặc định là 30_000_000_000 đơn vị của quote mint.

Quote mint và ví giao thức

  • quote_mint — tài sản mà người dùng mua với. Hầu hết các phiên sử dụng wrapped SOL (So111…112) hoặc USDC (EPjF…Dt1v). Một GlobalConfig được liên kết với một quote mint; các phiên cần một mục tiêu quote khác nhắm mục tiêu (curve_type, index) khác.
  • protocol_fee_owner — pubkey ký CollectFee và yêu cầu các phí giao thức tích lũy trên mỗi phiên được liên kết với cấu hình này. Được lưu trữ trên chuỗi; quản trị viên có thể xoay nó thông qua UpdateConfig.
  • migrate_fee_owner — pubkey ký CollectMigrateFee.

Ví di chuyển

Hai đường dẫn tốt nghiệp yêu cầu các ký tên khác nhau:
  • migrate_to_amm_wallet — phải ký MigrateToAmm. Được sử dụng cho các phiên có migrate_type = 0 (tốt nghiệp thành AMM v4 + OpenBook).
  • migrate_to_cpswap_wallet — phải ký MigrateToCpswap. Được sử dụng cho migrate_type = 1 (tốt nghiệp thành CPMM). Các phiên Token-2022 luôn lấy đường dẫn này.
Những ví này thường được giữ bởi crank tốt nghiệp do Raydium vận hành, vì vậy tốt nghiệp diễn ra ngay sau khi đường cong chạm ngưỡng chứ không phải chờ người tạo gọi nó.

requires_platform_auth

Cờ u8 (0 = bất cứ ai cũng có thể sử dụng cấu hình này; khác 0 = chỉ các nền tảng có PlatformGlobalAccess PDA hợp lệ mới có thể khởi chạy chống lại nó). Khi được đặt, mỗi Initialize chống lại GlobalConfig này phải bao gồm tài khoản PlatformGlobalAccess phù hợp chứng minh nền tảng đã được ủy quyền trước thông qua CreatePlatformGlobalAccess (lệnh chỉ quản trị viên). Xem platform-config để tìm hiểu cơ chế ở phía nền tảng.

Mặc định tại khởi tạo

Khi CreateConfig được gọi, chương trình hạt giống nhiều trường với mặc định được mã hóa cứng:
self.max_share_fee_rate     = 10_000;                  // 100 bps
self.min_base_supply        = 10_000_000;              // no decimals
self.max_lock_rate          = 300_000;                 // 30%
self.min_base_migrate_rate  = 200_000;                 // 20%
self.min_base_sell_rate     = 200_000;                 // 20%
self.min_quote_fund_raising = 30_000_000_000;
self.requires_platform_auth = 0;
Quản trị viên đặt curve_type, index, migrate_fee, trade_fee_rate, quote_mint, và bốn pubkey ví một cách rõ ràng tại thời điểm tạo; các giá trị tiếp theo có thể được điều chỉnh thông qua UpdateConfig.

Cách một phiên chọn GlobalConfig

Tại Initialize, người tạo truyền:
  • (curve_type, index) để chọn PDA GlobalConfig nào để tải.
  • CurveParams mô tả hình dạng đường cong (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams mô tả cung cấp bị khóa.
  • MintParams cho base mint.
Chương trình thực thi:
  • curve_type khớp với global_config.curve_type.
  • supply >= global_config.min_base_supply.
  • total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • total_base_sell >= supply * min_base_sell_rate / 1_000_000.
  • (supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000 — tức là, đủ token còn lại để hạt giống nhân giống sau tốt nghiệp.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • Nếu requires_platform_auth != 0, một PlatformGlobalAccess PDA hợp lệ được bao gồm.
Sau Initialize, PoolState của phiên lưu trữ pubkey global_config trực tiếp, do đó ràng buộc là vĩnh viễn.

Đường dẫn cập nhật

UpdateConfig là chỉ quản trị viên và lấy cặp (param: u8, value: u64). Mỗi giá trị param chọn trường nào để đột biến:
paramTrường thay đổi
0migrate_fee
1trade_fee_rate
2max_share_fee_rate
3min_base_supply
4max_lock_rate
5min_base_sell_rate
6min_base_migrate_rate
7min_quote_fund_raising
Quay vòng ví (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) mất một hình dạng đối số Pubkey riêng biệt; kiểm tra nguồn update_config để biết bảng gửi chính xác trước khi soạn giao dịch quản trị viên. requires_platform_auth được bật/tắt thông qua set_requires_platform_auth(bool).

Đọc GlobalConfig từ máy khách

import { Raydium } from "@raydium-io/raydium-sdk-v2";

// Fetch by PDA derivation:
const [configPda] = PublicKey.findProgramAddressSync(
  [
    Buffer.from("global_config"),
    quoteMint.toBytes(),
    Buffer.from([curveType]),
    u16ToBytes(index),
  ],
  LAUNCHLAB_PROGRAM_ID,
);

const config = await raydium.launchpad.getGlobalConfig(configPda);
console.log(config.tradeFeeRate, config.minQuoteFundRaising);
Đối với UI liệt kê tất cả các cấu hình có sẵn, hãy dùng trợ giúp getAllGlobalConfigs của SDK hoặc truy vấn điểm cuối API LaunchLab phản ánh chúng; số lượng tài khoản trên chuỗi rất nhỏ (vài chữ số trong thực tế).

Con trỏ

Nguồn:
  • raydium-launch/programs/launchpad/src/states/config.rs — cấu trúc GlobalConfiginitialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config, update_config.