Compute-Budget

Jede Solana-Transaktion hat ein Compute-Budget, gemessen in Compute Units (CU). Das Verständnis der CU-Kosten hilft Ihnen, 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 ein Standardbudget von 200.000 CU, erweiterbar auf ~1,4 Mio. CU über Compute-Budget-Instruktionen (vom Rome SDK automatisch hinzugefügt).

CU-Kostenschätzungen

EVM-Operationen

Operation
Ungefähre CU
Hinweise

Signaturüberprüfung (ecrecover)

~5.000 CU

secp256k1 über Solana-Syscall

Einfache Übertragung

~50.000-100.000 CU

Nur Saldoaktualisierungen

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

Basis-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

Der Optimizer von Solidity erzeugt vernünftigen Code, aber Yul (Inline-Assembly) kann CU für kritische Operationen erheblich reduzieren:

2. PDA-Ableitungen zwischenspeichern

PDA-Ableitung über find_program_address ist teuer. Speichern Sie abgeleitete PDAs im Contract-Speicher, statt sie bei jedem Aufruf neu zu berechnen:

3. Bekannte Programm-IDs fest eincodieren

Laden Sie Programm-IDs nicht aus dem Speicher — verwenden Sie Konstanten:

4. Anzahl der Accounts minimieren

Jeder Account in einer Solana-Transaktion erhöht den CU-Overhead. Reduzieren Sie die Anzahl der Accounts durch:

  • Bündeln von Operationen, die Accounts gemeinsam nutzen

  • Verwendung weniger Zwischen-Accounts

  • Vermeidung redundanter ATA-Erstellungsprüfungen

5. Optimizer-Einstellungen verwenden

CU-Verbrauch messen

Verwenden Sie eth_estimateGas um CU vor dem Senden zu messen:

Oder über ethers.js:

Was kommt als Nächstes

Zuletzt aktualisiert

War das hilfreich?