Skip to main content
Đây là phương thức gửi giao dịch cơ bản — tính phí theo mỗi lần gửi và phù hợp nhất khi độ tin cậy quan trọng hơn tốc độ thuần túy (thanh toán, ví, ứng dụng). Nếu bạn đang giao dịch và cần độ trễ thấp nhất, hãy sử dụng Helius Sender.
Tự xây dựng logic gửi giao dịch là cách tốt nhất để đảm bảo hiệu suất, khả năng kiểm soát và độ tin cậy tối đa cho ứng dụng. Mặc dù Helius SDK cung cấp một lớp bao tiện lợi để bắt đầu, bạn vẫn nên tìm hiểu và triển khai quy trình thủ công này cho các hệ thống production. Hướng dẫn này sẽ trình bày các bước cần thiết để bạn tự xây dựng giải pháp.

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ượng Transaction 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 RPC simulateTransaction. 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ế.
Giờ đây, bạn đã có một chỉ thị đặt giới hạn tính toán chính xác. Bạn sẽ thêm chỉ thị này vào giao dịch cuối cùng.

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 RPC getPriorityFeeEstimate. Để 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.
Không dựa vào logic thử lại mặc định của nhà cung cấp RPC (maxRetries trong sendTransaction). Mặc dù các kết nối có stake của Helius chuyển tiếp giao dịch trực tiếp đến leader, giao dịch vẫn có thể bị loại bỏ. Bạn phải triển khai logic phát lại riêng để đảm bảo xác nhận đáng tin cậy.
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.
Ví dụ này cung cấp một vòng lặp thăm dò cơ bản. Một ứng dụng đạt chuẩn production sẽ cần logic phức tạp hơn, bao gồm xử lý các trạng thái xác nhận khác nhau và những trường hợp hết thời gian chờ có thể xảy ra.

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ấn mev-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