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 →
Đường cong bảng tra cứu
Stable AMM thay thế công thức x·y=k bằng một bảng tra cứu thưa gồm các bộ (x, y, price). Khi định giá một swap, chương trình thực hiện:- Tính tỷ lệ hiện tại của pool từ các reserve.
- Tìm kiếm nhị phân bảng để tìm hai mục nằm trong tỷ lệ đó.
- Nội suy tuyến tính giữa chúng để lấy giá trung gian.
- Áp dụng phí và trả lại báo giá.
Bố cục bảng và tìm kiếm nhị phân
ModelDataInfo chứa tối đa 50.000 mục DataElement, được lập chỉ mục bởi admin. Chỉ những mục đầu tiên trong valid_data_count hoạt động. Mỗi mục:
- Tính tỷ lệ:
target_ratio = (x_real * multiplier) / y_real. - Tìm kiếm nhị phân các mục nơi
(element.x * multiplier) / element.ynằm trong tỷ lệtarget_ratio. - Khi tìm thấy dấu ngoặc
[min_idx, max_idx], thực hiện nội suy.
state.rs::ModelDataInfo::get_mininum_range_by_xy_real. Bất biến chính: các mục phải được sắp xếp (x tăng, y giảm, price tăng) để tìm kiếm hoạt động.
Nội suy tuyến tính
Sau khi hai điểm bảng nằm trong tỷ lệ, nội suy tính toán giá trung gian và cặp reserve:Tỷ lệ: multiplier
Reserve của pool và giá được lưu trữ ở các tỷ lệ khác nhau. Trườngmultiplier trên ModelDataInfo giải thích điều này. Một mẫu phổ biến:
- Coin có 6 chữ số thập phân, PC có 18 chữ số thập phân.
- Multiplier = 10^6 (hoặc tương tự).
- Các mục bảng được lưu trữ ở tỷ lệ giảm để phù hợp với giới hạn u64.
Định giá swap: SwapBaseIn và SwapBaseOut
SwapBaseIn (input chính xác)
Cho số lượng đầu vàoamount_in:
- Lấy tỷ lệ hiện tại từ
(coin_vault, pc_vault). - Tìm các mục bảng nằm trong tỷ lệ và nội suy để lấy tỷ lệ không gian bảng.
- Chuyển đổi đầu vào sang không gian bảng:
dx_table = amount_in * multiplier / ratio. - Truy vấn bảng ở tọa độ X mới để tìm Y mới.
dy_table = y_old - y_new.- Chuyển đổi ngược lại:
dy_real = dy_table * ratio / multiplier. - Áp dụng phí giao dịch:
dy_output = dy_real - (dy_real * trade_fee_numerator / trade_fee_denominator). - Trả lại
dy_output.
SwapBaseOut (output chính xác)
Đối xứng: choamount_out mong muốn, giải để tìm amount_in cần thiết.
Cả hai đường dẫn đều giải quyết các đơn hàng OpenBook đã điền trước (thông qua logic tương tự MonitorStep nội bộ), vì vậy reserve hiệu quả phản ánh bất kỳ điền nào từ khối trước.
Áp dụng phí
Giống với AMM v4: xemproducts/amm-v4/math để xem phiên bản đầy đủ.
pnl_portion đi đến need_take_pnl_* và được quét bởi admin thông qua WithdrawPnl. lp_portion ở lại trong vault, làm tăng k và có lợi cho những người giữ token LP.
MonitorStep và OpenBook
Giống như AMM v4,MonitorStep là một lệnh crank thực hiện:
- Giải quyết các điền đơn hàng OpenBook đang chờ (di chuyển token từ vault sang pool).
- Cập nhật
AmmInfo.target_ordersvới lưới mới của các khe lệnh giới hạn. - Đăng lưới mới lên OpenBook.
MonitorStep: ~150k–180k CU (tương tự AMM v4).
Tóm tắt: tại sao cách này hoạt động
Thiết kế bảng tra cứu + nội suy hiệu quả và linh hoạt:- Hiệu quả: Tìm kiếm nhị phân là O(log 50.000) ≈ 16 lần lặp, mỗi lần ~ 300–500 CU. Nội suy là một vài phép nhân/chia. Tổng chi phí định giá là ~5k–15k CU, rẻ hơn nhiều so với tính lại công thức trên mỗi swap.
- Linh hoạt: Admin có thể mã hóa bất kỳ đường cong tuyến tính từng phần nào. Các cặp stablecoin nhận mật độ cao xung quanh 1:1; các cặp thế chấp nhận đường cong tùy chỉnh.
- Khả năng tương tác OpenBook: Logic
MonitorStep/TargetOrdersgiống nhau từ AMM v4 áp dụng. Khám phá giá thông qua bảng đưa vào tạo lưới đơn hàng.
raydium-stable/program/src/state.rs, các phương thức get_data_by_x, get_data_by_y, get_dy_by_dx_base_in, v.v.
Bước tiếp theo
- Tài khoản — tham khảo trường
ModelDataInfovàDataElement. - Lệnh —
InitModelData,UpdateModelDatađể điền vào bảng. - Phí — áp dụng phí và
WithdrawPnl. products/amm-v4/math— để xem logic định giá đơn hàng bao gồm phí OpenBook.
raydium-stable/program/src/state.rs(cài đặt nội suy và tìm kiếm nhị phân)raydium-stable/program/src/math.rs(tiện ích tính toán)


