> ## 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.

# 2026-08-31 — LaunchLab: quy tắc đường cong nền tảng thay thế danh sách trắng tham số đường cong

> Các hạn chế tham số khởi chạy chuyển từ PlatformConfig.curve_params sang các tài khoản PlatformCurveRule riêng cho mỗi cấu hình với các ràng buộc (field, op, value), dải giá trị, nhóm kiểm tra ORed, và ví quản lý được ủy quyền. PlatformConfig giữ kích thước 944 byte; trường cũ và hai hướng dẫn của nó bị xóa, và bảy mã lỗi được thêm vào.

<Info>
  **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 →](/reference/changelog/2026-08-31-launchlab-platform-curve-rules)
</Info>

<Info>
  Mục này bao gồm một bản cập nhật chương trình LaunchLab sắp tới. Nó đã được xác minh so với nhánh phát hành cục bộ trước khi triển khai. Hãy xác nhận chương trình được triển khai trước khi dựa vào các tài khoản hoặc hướng dẫn mới.
</Info>

Một nền tảng đã có thể hạn chế những hình dạng khởi chạy nào mà những người tạo của nó có thể chọn, thông qua `PlatformConfig.curve_params`. Cơ chế đó chỉ kiểm tra **bằng nhau chính xác**: một mục nhập hoặc ghim một trường thành một giá trị hoặc ký hiệu đại diện cho nó bằng một giá trị cảnh báo. Nó cũng chỉ chứa tối đa 10 mục nhập trên mọi `GlobalConfig` mà một nền tảng hỗ trợ, và nó nằm trên chính tài khoản `PlatformConfig`, làm tăng kích thước của nó thêm 491 byte cho mỗi mục nhập.

Ba thuộc tính này xung đột khi giao thức thêm các cấu hình. Biểu thị "mục tiêu gây quỹ từ 50 đến 200 SOL" cần một mục nhập cho mỗi giá trị được phép và do đó là không thể. Các sàn của `GlobalConfig` đã được mở rộng — tỷ lệ 1 bps, giới hạn cung cấp 99999 — chính xác để mọi nền tảng phù hợp dưới chúng, điều này khiến các nền tảng không có cách nào để thu hẹp chúng.

Bản phát hành này thay thế danh sách trắng bằng **quy tắc đường cong**: một tài khoản `PlatformCurveRule` cho mỗi cặp (platform, config), chứa tối đa 10 nhóm kiểm tra, mỗi nhóm chứa tối đa 25 ràng buộc `(field, op, value)` trên 19 tham số khởi chạy, với `Eq`, `Gte`, `Lte`, và `Neq`. Các ràng buộc bên trong một nhóm được ANDed, các nhóm được ORed. Một dải là `Gte` cộng với `Lte` trên cùng một trường.

Mô hình đầy đủ và chín sách hướng dẫn được thực hiện nằm trên trang mới: [`products/launchlab/curve-rules`](/vi/products/launchlab/curve-rules).

## TL;DR cho các nhà tích hợp

* **`PlatformConfig` giữ kích thước và mọi độ lệch trường hiện có.** Nó là 944 byte cố định. `curve_params` đã biến mất; `restrict_curve_param` (`u8`), `curve_rule_manager` (`Pubkey`), và 4 byte mà tiền tố độ dài vec chiếm đều được loại bỏ khỏi phần đệm, giảm từ 107 xuống 78.
* **Bộ giải mã phải bỏ vec theo sau.** Một bộ giải mã vẫn mong đợi `Vec<PlatformCurveParam>` sau phần đệm sẽ đọc hai trường mới dưới dạng byte vec. Mọi thứ trước phần đệm không bị ảnh hưởng, vì vậy một bộ giải mã chỉ đọc ví phí và tỷ lệ tiếp tục hoạt động không thay đổi.
* **Những người xây dựng khởi chạy cần một tài khoản bổ sung khi cờ bật.** Trong khi `restrict_curve_param` là `1`, `InitializeV2` và `InitializeWithToken2022` yêu cầu PDA quy tắc trong `remaining_accounts` — *kể cả khi tài khoản không tồn tại*, để omitting nó không thể bỏ qua kiểm tra. Dẫn xuất: `[b"platform_curve_rule", platform_config, global_config]`.
* **Không có nền tảng nào bị hạn chế theo mặc định.** `restrict_curve_param` là `0` trên mọi tài khoản hiện có, và `0` có nghĩa là chương trình không đọc quy tắc nào cả.
* **Hai hướng dẫn bị xóa:** `UpdatePlatformCurveParam` và `RemovePlatformCurveParam`. Bốn được thêm: `CreatePlatformCurveRule`, `UpdatePlatformCurveRule`, `RemovePlatformCurveRule`, `ClosePlatformCurveRule`.
* **`UpdatePlatformConfig` có hai biến thể:** `RestrictCurveParam(u64)` ở chỉ số phân phối 13 và `CurveRuleManager(Pubkey)` ở 14. Các chỉ số hiện có 0–12 không thay đổi.
* **Bảy mã lỗi được thêm vào,** `6024`–`6030`. `6020` `CurveParamIsNotExist` được giữ lại như một trình giữ chỗ mặc dù người gọi cuối cùng của nó đã biến mất, vì vậy không có gì sau nó thay đổi. Xem [`reference/error-codes`](/vi/reference/error-codes).
* **Cần làm mới IDL.** Loại tài khoản mới, bốn hướng dẫn mới, hai bị xóa, hai biến thể phân phối mới, bảy mã lỗi mới.
* **Kiểm tra quy tắc ngoài chuỗi trước khi gửi bất cứ thứ gì.** SDK hiển thị `checkLaunchAgainstCurveRule` (phản ánh kiểm tra thời gian khởi chạy, hành vi thất bại-đóng bao gồm) và `checkCurveRuleGroupWritable` (phản ánh xác thực thời gian ghi). Cả hai đều là các hàm thuần túy. Xem [Kiểm tra trước khi gửi](/vi/products/launchlab/curve-rules#check-before-you-send).
* **Tập duyệt trên devnet trước khi bật trên mainnet.** Bật `restrict_curve_param` thay đổi những gì những người tạo của bạn có thể làm ngay lập tức. Chuỗi được khuyến nghị — bao gồm khởi chạy một token sẽ bị từ chối, để chứng minh rằng trình xây dựng của bạn thực sự vượt qua tài khoản quy tắc — nằm trong [Kiểm tra trên devnet trước tiên](/vi/products/launchlab/curve-rules#test-on-devnet-first).

## Những gì một quy tắc có thể biểu thị mà danh sách trắng không thể

| Ý định                                                | Danh sách trắng            | Quy tắc đường cong                             |
| ----------------------------------------------------- | -------------------------- | ---------------------------------------------- |
| Một hình dạng khởi chạy chính xác                     | Một mục nhập               | Một nhóm với ràng buộc `Eq`                    |
| Mục tiêu gây quỹ trong một dải                        | Không thể biểu thị         | Hai ràng buộc: `Gte` + `Lte`                   |
| Ba tầng khởi chạy                                     | Ba mục nhập, chỉ chính xác | Ba nhóm                                        |
| Dải giá trị tốt nghiệp độc lập với cung cấp           | Không thể biểu thị         | Hai ràng buộc trên `FundRaisingRateB` dẫn xuất |
| Sàn trên những gì đạt đến nhóm tốt nghiệp             | Không thể biểu thị         | Một ràng buộc trên `MigrateRateA` dẫn xuất     |
| Chỉ SPL Token hoặc chỉ Token-2022                     | Không thể biểu thị         | Một ràng buộc trên `BaseTokenProgram`          |
| "Nếu đặt phí chuyển, hãy giới hạn nó ở 1%"            | Không thể biểu thị         | Hai nhóm, được gated trên `TransferFeeEnabled` |
| Một quy tắc chuyển đổi vào một ngày, không được chú ý | Không thể biểu thị         | Hai nhóm, được gated trên `UnixTimestamp`      |

19 trường bao gồm bốn tỷ lệ dẫn xuất — `SellRateA`, `LockRate`, `MigrateRateA`, `FundRaisingRateB` — đó là những gì làm cho một quy tắc có thể di động trên các cung cấp thay vì được ghim vào một.

## Quản lý được ủy quyền

`PlatformConfig.curve_rule_manager` là một ví nóng có thể tạo, cập nhật, xóa và đóng các tài khoản quy tắc của nền tảng này. Chỉnh sửa quy tắc là thường xuyên và khóa quản trị nền tảng thường là multisig; đây là trường giữ multisig ra khỏi vòng lặp. Đặt nó một lần thông qua `UpdatePlatformConfig::CurveRuleManager`.

Quản trị viên nền tảng giữ lại cùng một quyền lực song song — chương trình chấp nhận nó bằng cách dẫn xuất lại PDA `PlatformConfig` từ người ký — vì vậy khóa quản lý bị mất có thể khôi phục bằng cách xoay trường. `Pubkey::default()` có nghĩa là chỉ quản trị viên.

Khóa quản lý bị xâm phạm có thể nới lỏng hoặc xóa các quy tắc tham số và lấy lại tiền thuê của tài khoản quy tắc. Nó không thể lật `restrict_curve_param`, chạm vào bất kỳ ví phí, trường vesting, hoặc cấu hình CPMM nào, hoặc phá vỡ giới hạn `GlobalConfig`.

## Tiền thuê và kích thước

Một tài khoản quy tắc được tạo không chứa nhóm nào và được thay đổi kích thước trên mỗi thay đổi, vì vậy một nền tảng trả tiền cho các quy tắc nó thực sự viết, và loại bỏ một nhóm hoàn lại sự khác biệt cho người ký.

| Nội dung quy tắc          | Kích thước | Tiền thuê    |
| ------------------------- | ---------- | ------------ |
| Trống                     | 150 byte   | \~0.0019 SOL |
| 1 nhóm, 2 ràng buộc       | 200 byte   | \~0.0023 SOL |
| 3 nhóm, 4 ràng buộc mỗi   | 408 byte   | \~0.0037 SOL |
| 10 nhóm, 25 ràng buộc mỗi | 4 790 byte | \~0.034 SOL  |

Vì kích thước là động, bộ giải mã phải đọc độ dài thực tế của tài khoản thay vì giả định một hằng số.

## Chi phí tính toán khi khởi chạy

Kiểm tra chạy trên mỗi khởi chạy trong khi nó được bật. Đo từ đầu đến cuối — dẫn xuất PDA, quét `remaining_accounts`, giải mã, đánh giá:

| Nội dung quy tắc                | Trường trực tiếp | Trường dẫn xuất |
| ------------------------------- | ---------------- | --------------- |
| Bật, không có tài khoản quy tắc | 1 936            | —               |
| 1 nhóm, 2 ràng buộc             | 2 576            | 2 926           |
| 3 nhóm, 4 ràng buộc mỗi         | 3 624            | 5 724           |
| 10 nhóm, 25 ràng buộc mỗi       | 24 344           | 68 094          |

Một ràng buộc dẫn xuất có chi phí khoảng 223 CU so với khoảng 48 cho một lần đọc trường trực tiếp. Ngay cả một quy tắc được tải đầy đủ cũng nằm trong một phần ba ngân sách mặc định 200 000 CU trên mỗi hướng dẫn. Các nhóm được đánh giá cho đến khi một khớp, vì vậy tầng được sử dụng nhiều nhất thuộc về trước.

## Cuộc di chuyển một lần

Các nền tảng sử dụng danh sách trắng đã được di chuyển bởi giao thức trong một lần duy nhất, trước khi cờ có sẵn để bật. Một cơ quan chuyên dụng chạy một giao dịch cho mỗi nền tảng dịch mỗi mục nhập cũ thành các nhóm kiểm tra của tài khoản quy tắc của cấu hình nó được đặt tên, xóa các mục nhập khỏi `PlatformConfig`, và thu nhỏ tài khoản đó trở lại 944 byte.

Bản dịch bảo tồn ngữ nghĩa cũ chính xác: mỗi mục nhập trở thành một nhóm, mỗi trường không phải cảnh báo trở thành một ràng buộc `Eq`, và một mục nhập tất cả cảnh báo — khớp với mỗi khởi chạy — trở thành một nhóm không có ràng buộc, cũng khớp với mỗi khởi chạy.

Bản di chuyển viết quy tắc nhưng không bật chúng. Một nền tảng được di chuyển vẫn không bị hạn chế cho đến khi nó tự đặt `restrict_curve_param` thành `1`. Hướng dẫn di chuyển đã bị xóa khỏi chương trình bây giờ lần vượt qua hoàn tất, cùng với trường cũ nó đọc.

## Những gì không thay đổi

* **`GlobalConfig`.** Bố cục giống nhau, giới hạn giống nhau, hướng dẫn giống nhau. Quy tắc thu hẹp các giới hạn đó và được kiểm tra cùng với chúng; chúng không bao giờ có thể mở rộng một.
* **Danh sách tài khoản và đối số của các hướng dẫn khởi chạy.** `InitializeV2` và `InitializeWithToken2022` lấy các tài khoản cố định giống nhau và các đối số giống nhau. Chỉ `remaining_accounts` có được một mục nhập, và chỉ trong khi cờ bật.
* **Đường dẫn giao dịch, tốt nghiệp, phí và vesting.** Không thay đổi.
* **`PlatformAllowConfig`.** Không thay đổi và không liên quan: nó quyết định *cấu hình nào* mà các khởi chạy của nền tảng có thể sử dụng, trong khi một quy tắc quyết định *tham số nào* trong một cấu hình. Hai cờ là độc lập.
* **Mã lỗi `6000`–`6023`.** Không thay đổi, `6020` bao gồm.
* **Kích thước `PlatformConfig` và độ lệch trước đệm.** Không thay đổi, vì vậy các tài khoản hiện có không cần di chuyển của riêng chúng.

## Trang được cập nhật

* `products/launchlab/curve-rules` — **trang mới.** Mô hình ba cấp, bảng trường 19 và toán tử 4, chín sách hướng dẫn, hạn chế loại đường cong, hai trợ giúp kiểm tra ngoài chuỗi, chuỗi tập duyệt devnet, quản lý được ủy quyền, tiền thuê, thứ tự triển khai và chi phí tính toán.
* `products/launchlab/platform-config` — "Danh sách trắng tham số đường cong" được thay thế bằng "Quy tắc tham số khởi chạy"; bố cục được cập nhật cho `restrict_curve_param`, `curve_rule_manager`, và phần đệm 78 byte; bảng đường dẫn cập nhật, đoạn đọc, và những cạm bẫy được viết lại.
* `products/launchlab/instructions` — phần "Quy tắc tham số khởi chạy nền tảng" mới bao gồm bốn hướng dẫn, tài khoản, đối số và lỗi của chúng; hàng kho được thay thế.
* `products/launchlab/accounts` — `PlatformCurveRule` được thêm vào kho và được cung cấp phần riêng của nó với bố cục đầy đủ và cảnh báo kích thước biến.
* `reference/error-codes` — `6024`–`6030` được ghi lại; `6018` và `6020` được chú thích.
