For the complete documentation index, see llms.txt. This page is also available as Markdown.

Compute Budget

Jede Solana-Transaktion hat ein Compute-Budget, gemessen in Compute Units (CU). Das Verständnis der CU-Kosten hilft dir, effiziente Rome-Contracts zu entwerfen.

Budgetübersicht

Modus
Max. CU
Hinweise

Atomar (VmAt)

~1.400.000 CU

Einzelne Solana-Transaktion

Iterativ (VmIt)

Unbegrenzt (Multi-Tx)

~500 Opcodes pro Iterationsschritt

Jede Solana-Transaktion hat standardmäßig ein Budget von 200.000 CU, erweiterbar auf ~1,4 Mio. CU über Compute-Budget-Anweisungen (von der Rome SDK automatisch hinzugefügt).

CU-Kostenschätzungen

EVM-Operationen

Operation
Ungefähre CU
Hinweise

Signaturprüfung (ecrecover)

~5.000 CU

secp256k1 über Solana-Systemaufruf

Einfache Überweisung

~50.000-100.000 CU

Nur Kontostandsaktualisierungen

ERC-20-Übertragung

~100.000-150.000 CU

Enthält SPL-Precompile-Aufruf

Vertragsbereitstellung (klein)

~200.000-400.000 CU

Hängt von der Bytecode-Größe ab

Speicherschreiben (SSTORE)

~5.000-20.000 CU

Kalter vs. warmer Zugriff

CPI-Operationen

Operation
Ungefähre CU
Hinweise

Grund-Overhead des Transfer-Hooks

100.000 CU

Pro Übertragung

Nativer Unter-Hook

50.000 CU

Pro nativem Solana-Hook

EVM-Unter-Hook

200.000 CU

Pro EVM-Hook

Empfohlene EVM-Übertragung mit Hooks

800.000 CU

Sicheres Budget für Übertragungen mit Hooks

Precompile-Operationen

Precompile
Ungefähre CU

ecrecover

~3.000-5.000 CU

SHA-256

~1.000 CU

BN254 ecAdd

~10.000 CU

BN254 ecMul

~40.000 CU

BN254 ecPairing

~200.000+ CU

Optimierungstechniken

1. Yul für Hot Paths verwenden

Soliditys Optimierer erzeugt vernünftigen Code, aber Yul (Inline-Assembly) kann die CU für kritische Operationen deutlich reduzieren:

2. PDA-Ableitungen cachen

PDA-Ableitung über find_program_address ist teuer. Speichere abgeleitete PDAs im Vertragsstorage, statt sie bei jedem Aufruf neu zu berechnen:

3. Bekannte Programm-IDs hart codieren

Lade Programm-IDs nicht aus dem Storage — verwende Konstanten:

4. Anzahl der Konten minimieren

Jedes Konto in einer Solana-Transaktion verursacht CU-Overhead. Reduziere die Anzahl der Konten durch:

  • Zusammenfassen von Operationen, die Konten gemeinsam nutzen

  • Verwendung weniger Zwischenkonten

  • Vermeidung redundanter ATA-Erstellungsprüfungen

5. Optimierer-Einstellungen verwenden

CU-Verbrauch messen

Verwenden Sie eth_estimateGas um CU vor dem Absenden zu messen:

Oder mit ethers.js:

Was kommt als Nächstes

Zuletzt aktualisiert

War das hilfreich?