Empfehlungen für Agenten
Verwende get_transactions_for_address statt einer zweistufigen Abfrage
get_transactions_for_address kombiniert die Signatursuche und den Abruf von Transaktionen in einem einzigen Aufruf mit serverseitiger Filterung.
Verwende send_smart_transaction für normale Sendevorgänge
Die Methode simuliert automatisch, schätzt Recheneinheiten, ruft Prioritätsgebühren ab und bestätigt. Erstelle ComputeBudget-Anweisungen nicht manuell — das SDK fügt sie automatisch hinzu.
Verwende Helius Sender für extrem niedrige Latenz
Verwende für zeitkritische Transaktionen wie Arbitrage, Sniping und Liquidationensend_smart_transaction_with_sender. Die Methode leitet sie über die Multi-Region-Infrastruktur von Helius und Jito weiter.
Verwende get_asset_batch für mehrere Assets
Fasse den Abruf mehrerer Assets zu einem Batch zusammen. Rufe get_asset nicht in einer Schleife auf.
Verwende webhooks statt Polling
Frageget_transactions_for_address nicht in einer Schleife ab. Verwende webhooks für Benachrichtigungen zwischen Servern.
Paginierung
Token-/Cursor-basiert (RPC-V2-Methoden)
Seitenbasiert (DAS API)
token_accounts-Filter
Bei einer Abfrage von get_transactions_for_address steuert der Filter token_accounts, ob Aktivitäten von Token-Konten enthalten sind:
changed_since_slot — Inkrementeller Abruf von Konten
changed_since_slot gibt nur Konten zurück, die nach einem bestimmten slot geändert wurden. Das ist für Synchronisierungs- oder Indizierungsabläufe nützlich. Unterstützt von get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accounts und get_token_accounts_by_owner.
Häufige Fehler
-
transaction_details: Some(TransactionDetails::Full)ist nicht der Standardwert — Standardmäßig gibtget_transactions_for_addressnur Signaturen zurück. SetzeTransactionDetails::Full, um vollständige Transaktionsdaten zu erhalten. -
Füge bei
send_smart_transactionkeine ComputeBudget-Anweisungen hinzu — Das SDK fügt sie automatisch hinzu. Wenn du eigene Anweisungen hinzufügst, tritt der FehlerHeliusError::InvalidInputauf. -
Prioritätsgebühren werden in Mikrolamports pro Recheneinheit angegeben — Nicht in Lamports. Werte von
get_priority_fee_estimatehaben bereits die richtige Einheit. -
Die DAS-Paginierung beginnt bei 1 —
page: 1ist die erste Seite, nichtpage: 0. -
async_connection()erfordertnew_asyncoderHeliusBuilder— Wenn duhelius.async_connection()auf einem mitHelius::new()erstellten Client aufrufst, wirdErr(HeliusError::ClientNotInitialized)zurückgegeben. -
get_assetgibtOption<Asset>zurück — Eine erfolgreiche response kann dennochNonesein, wenn das Asset nicht existiert. BehandleOptionausdrücklich. -
Tips für Sender sind obligatorisch —
send_smart_transaction_with_senderermittelt Tips automatisch und hängt sie an. Mindestens 0,0002 SOL im Dual-Modus oder 0,000005 SOL, wenn nur SWQOS verwendet wird. -
TLS-Feature-Flags — Die Crate verwendet standardmäßig
native-tls. Verwendefeatures = ["rustls"]unddefault-features = falsefür TLS in reinem Rust, wenn OpenSSL nicht verfügbar ist. -
Setze beim Abrufen von Transaktionen die maximal unterstützte Transaktionsversion auf 1. Andernfalls schlagen
get_transaction,get_blockundget_transactions_for_addressmitTransactionDetails::Fullbei v1-Transaktionen mit dem Fehler-32015fehl. Bei v1-Transaktionen entspricht die Prioritätsgebühr demtransactionConfig.priorityFeeder Nachricht, also einem Gesamtbetrag in Lamports. Es gibt keine ComputeBudget-Anweisungen, die durchsucht werden können. Siehe Unterstützung für Transaktion v1.
Fehlerbehandlung und Wiederholungsversuche
Das SDK stellt über das EnumHeliusError typisierte Fehlervarianten bereit, sodass du sie direkt abgleichen kannst:
Wiederholungsstrategie
Wiederhole den Versuch beiRateLimitExceeded und InternalError mit exponentiellem Backoff: