getFeeForMessage cho phép bạn ước tính phí mà mạng sẽ tính để xử lý một thông điệp giao dịch nhất định. Phương thức này hữu ích để xác định chi phí giao dịch trước khi giao dịch được gửi lên mạng.
Lưu ý về phiên bản: Phương thức này khả dụng trong solana-core v1.9 trở lên. Đối với các phiên bản cũ hơn, hãy cân nhắc sử dụng getFees.
Các trường hợp sử dụng phổ biến
- Ước tính phí: Xác định phí giao dịch dự kiến (tính bằng lamport) cho một thông điệp cụ thể.
- Tối ưu hóa chi phí: Phân tích phí cho các cấu trúc giao dịch khác nhau hoặc tại các thời điểm khác nhau.
- Hiển thị trên giao diện người dùng: Hiển thị cho người dùng chi phí giao dịch ước tính trước khi họ ký và gửi giao dịch.
Tham số yêu cầu
message(chuỗi, bắt buộc): Thông điệp giao dịch được mã hóa base64. Bạn có thể lấy thông điệp này bằng cách biên dịch một giao dịch.config(đối tượng, không bắt buộc): Đối tượng cấu hình có các trường sau:commitment(chuỗi, không bắt buộc): Chỉ định mức cam kết cần sử dụng. Giá trị mặc định làfinalized.minContextSlot(số, không bắt buộc): Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá.
Cấu trúc phản hồi
Trườngresult của phản hồi JSON-RPC là một đối tượng có cấu trúc sau:
context(đối tượng):slot(u64): Slot mà tại đó phí được đánh giá.
value(u64 | null): Phí ước tính tính bằng lamport. Giá trị này có thể lànullnếu không thể xác định phí (ví dụ: nếu blockhash được sử dụng trong thông điệp quá cũ hoặc không hợp lệ).
Ví dụ
1. Ước tính phí cho một thông điệp chuyển khoản đơn giản
Ví dụ này minh họa cách tạo một giao dịch chuyển khoản đơn giản, biên dịch thông điệp của giao dịch rồi truy xuất phí ước tính.Mẹo dành cho nhà phát triển
- Tạo thông điệp: Để sử dụng
getFeeForMessage, điều quan trọng là phải tạo và tuần tự hóa chính xácMessagecủa giao dịch. Quá trình này bao gồm việc thiết lập bên trả phí, các chỉ thị và một blockhash gần đây. - Blockhash gần đây: Thông điệp phải được tạo bằng một blockhash gần đây. Nếu blockhash quá cũ,
valuetrong phản hồi có thể lànull. - Phí so với phí ưu tiên: Phương thức này trả về phí mạng cơ bản. Phí này không bao gồm bất kỳ khoản phí ưu tiên bổ sung nào mà bạn có thể thêm vào giao dịch để tăng khả năng giao dịch được xử lý nhanh trong thời gian mạng bị tắc nghẽn. Sử dụng
getRecentPrioritizationFeesđể ước tính phí ưu tiên. - Lamport: Phí được trả về bằng lamport (1 SOL = 1.000.000.000 lamport).
- Giá trị null: Giá trị
nullcho phí có thể cho biết thông điệp có vấn đề (ví dụ: blockhash không hợp lệ, thông điệp sai định dạng) hoặc node không thể tính phí cho thông điệp đó tại mức cam kết hoặc slot đã cho.
getFeeForMessage nhằm ước tính phí giao dịch trên mạng Solana.
Các phương thức liên quan
getLatestBlockhash
Lấy một blockhash gần đây để tạo thông điệp
getRecentPrioritizationFees
Ước tính phí ưu tiên để xử lý nhanh hơn