Quy trình thủ công
Gửi giao dịch theo cách thủ công bao gồm các bước sau:1
Build the Initial Transaction
Tập hợp các chỉ thị và ký giao dịch để có thể mô phỏng giao dịch đó.
2
Optimize Compute Units
Mô phỏng giao dịch để xác định chính xác số CU cần thiết và thêm một khoảng dự phòng nhỏ.
3
Add Priority Fees
Lấy mức phí ước tính từ Helius Priority Fee API và thêm phí đó vào giao dịch.
4
Send and Re-broadcast
Gửi giao dịch cuối cùng và triển khai chiến lược thăm dò mạnh mẽ để xử lý việc xác nhận.
Các Helius SDK đều có mã nguồn mở. Bạn có thể xem mã nguồn của phương thức
sendSmartTransaction trong TypeScript SDK và Rust SDK để tham khảo cách triển khai quy trình này đạt chuẩn production.1. Xây dựng giao dịch ban đầu
Trước tiên, hãy tập hợp tất cả chỉ thị bạn muốn đưa vào giao dịch. Sau đó, tạo một đối tượngTransaction hoặc VersionedTransaction. Bạn cũng cần truy xuất một blockhash gần đây.
Ví dụ này chuẩn bị một giao dịch có phiên bản. Ở giai đoạn này, bạn cũng phải ký giao dịch để có thể mô phỏng giao dịch đó trong bước tiếp theo.
2. Tối ưu hóa mức sử dụng đơn vị tính toán (CU)
Để tránh lãng phí phí hoặc khiến giao dịch thất bại, bạn nên đặt giới hạn đơn vị tính toán (CU) chính xác nhất có thể. Bạn có thể thực hiện việc này bằng cách mô phỏng giao dịch qua phương thức RPCsimulateTransaction.
Phương pháp tốt nhất là mô phỏng trước với giới hạn CU cao để đảm bảo chính quá trình mô phỏng thành công, sau đó dùng unitsConsumed từ phản hồi để đặt giới hạn thực tế.
3. Đặt mức phí ưu tiên phù hợp
Tiếp theo, hãy xác định mức phí ưu tiên tối ưu để thêm vào giao dịch. Sử dụng Priority Fee API của Helius là cách tốt nhất để nhận mức ước tính theo thời gian thực dựa trên điều kiện mạng hiện tại. Bạn cần gọi phương thức RPCgetPriorityFeeEstimate. Để có khả năng được đưa vào cao nhất thông qua các kết nối có stake của Helius, hãy sử dụng tùy chọn recommended: true.
4. Xây dựng, gửi và xác nhận
Bây giờ, hãy tập hợp giao dịch cuối cùng với các chỉ thị ngân sách tính toán mới, gửi giao dịch và triển khai cơ chế thăm dò mạnh mẽ để xác nhận giao dịch đã được ghi nhận. Một mô hình phổ biến là định kỳ gửi lại cùng một giao dịch cho đến khi blockhash hết hạn. Chỉ ký lại giao dịch nếu bạn cũng truy xuất một blockhash mới. Việc ký lại bằng cùng một blockhash có thể khiến các giao dịch trùng lặp được xác nhận.Bảo vệ khỏi các cuộc tấn công sandwich
Để định tuyến giao dịch tránh xa các validator có liên hệ về mặt thống kê với các cuộc tấn công sandwich, hãy thêm tham số truy vấnmev-protect=true vào URL RPC — không cần thay đổi logic giao dịch:
MEV Protect
Tìm hiểu cách MEV Protect hoạt động, các phương thức được hỗ trợ và những đánh đổi liên quan.
Nhận hoàn tiền từ giao dịch
Bạn có thể chọn tham gia để nhận một phần MEV do các giao dịch của mình tạo ra, được tự động thanh toán bằng SOL — không cần thay đổi logic giao dịch.Transaction Rebates
Thêm một tham số vào các lệnh gọi
sendTransaction để bắt đầu nhận khoản hoàn tiền bằng SOL.Các phương thức liên quan
sendTransaction
Gửi một giao dịch đã ký đến mạng
simulateTransaction
Mô phỏng giao dịch để ước tính số đơn vị tính toán
getSignatureStatuses
Kiểm tra trạng thái xác nhận của các giao dịch
getLatestBlockhash
Lấy một blockhash gần đây để ký giao dịch
getBlockHeight
Lấy chiều cao khối hiện tại để kiểm tra thời điểm hết hạn