Einschränkungen
Wichtige Limits und Begrenzungen beim Aufbau auf Rome EVM. Das Verständnis dieser Einschränkungen hilft Ihnen, Verträge zu entwerfen, die zuverlässig funktionieren.
Solana-Transaktionslimits
Transaktionsgröße
1.232 Bytes
Große EVM-Txs werden über Holder-Konten aufgeteilt (transparent)
Compute-Units pro Tx
~1,4 Mio. CU
Operationen, die diesen Wert überschreiten, verwenden den iterativen Modus
Konten pro Tx (ohne ALT)
28
Verwenden Sie Address Lookup Tables für mehr
Konten pro Tx (mit ALT)
64+
ALT wird automatisch verwendet, wenn > 28 Konten vorhanden sind
Maximale Holder-Größe
80 KB
Maximale RLP-Größe für eine einzelne EVM-Transaktion
EVM-Ausführungsgrenzen
Contract-Speicher-Slots
256 pro Speicher-Konto
Pro Vertrag können mehrere Speicher-Konten erstellt werden
Opcodes pro Iteration
~500
Für den iterativen (VmIt-)Modus
TTL der Account-Sperre
3-4 Sekunden
Während der iterativen Ausführung
Treasury-Wallets
64
Gebührenpool-Wallets
Größenlimit des Vertrags
480 KB
Erhöht gegenüber Ethereums 24 KB (OP-Geth-Modus)
CPI-Einschränkungen
CPI-Tiefe
Maximal 4 Ebenen
Solanas CPI-Tiefenlimit
Konten pro CPI-Aufruf
Begrenzt durch die Solana-Tx-Größe
Praktisch ~20 Konten pro CPI
Tiefe von CPI + Transfer Hook
Verwendet CPI-Ebenen
Transfer Hooks von innerhalb eines CPI können die Tiefe überschreiten
Die CPI-Tiefe ist die kritischste Einschränkung. Rome EVM verbraucht eine CPI-Ebene, wenn Solana das Rome-Programm aufruft. Wenn Ihr Solidity-Vertrag dann über CPI ein anderes Solana-Programm aufruft, ist das Ebene 2. Wenn dieses Programm ein weiteres aufruft, ist das Ebene 3. Insgesamt haben Sie höchstens 4 Ebenen.
Token-2022 Transfer-Hook-Einschränkungen
Ein Hook pro Mint
Der Meta-Hook-Router löst dies (bis zu 8 Sub-Hooks)
transfer_checked nur
Hooks werden bei einem einfachen Transfernicht ausgelöst. Die Rome-Bridge MUSS transfer_checked
Mint/Burn nicht gehookt
Gesteuert über die Mint-Authority, nicht über Hooks
Nur Single-State-Modus
OP-Geth ist von innerhalb einer Solana-Tx aus nicht erreichbar
Escape über Token-Wrapping
Benutzer können Tokens wrappen, um Hooks zu umgehen. Abgemildert durch Wrapper-Blacklist + PermanentDelegate
Gas- und Preis-Einschränkungen
Quelle der Gaspreisbildung
Meteora DAMM V1-Pool (SPL-Gas-Token)
Gaspreis-Multiplikator
Pro Proxy konfigurierbar (gas_price_mul)
Mindest-Gaspreis
Wird durch die Proxy-Konfiguration festgelegt
Gas-Schätzung
Wird vor dem Senden offline über den Mollusk-Emulator durchgeführt
Netzwerkspezifische Einschränkungen
Lokal
1001
Festgelegt in rome-setup Konfiguration
Devnet (montispl)
200002
RD2Gg7Lcnv62XmRHAzxh6fQQfMRzHtN5LeKPVBhYU5S
Testnet (Martius)
121214
Deployment-Konfiguration prüfen
Testnet (Caelian)
121215
Deployment-Konfiguration prüfen
Precompile-Einschränkungen
Modexp (0x05)
Deaktiviert — kann per Feature-Flag aktiviert werden
BN254 ecPairing (0x08)
Hohe CU-Kosten — erfordert typischerweise den iterativen Modus (~200K CU)
CPI-Precompile (0xFF...08)
Konten müssen in der Solana-Transaktion im Voraus deklariert werden
Oracle-Einschränkungen
Standard-Maximalveralterung
60 Sekunden
Historische Rundendaten
Nicht unterstützt — getRoundData(roundId) führt zu einem Revert
Switchboard EMA
Nicht unterstützt — latestEMAData() führt bei SwitchboardV3 zu einem Revert
Parser-Offsets
Empirisch validiert — vor einer erneuten Bereitstellung erneut validieren
Design-Empfehlungen
Halten Sie die CPI-Tiefe gering. Entwerfen Sie Verträge so, dass die Verschachtelung minimiert wird. Wenn Sie Jupiter aufrufen, das Raydium aufruft, das wiederum SPL Token aufruft, sind Sie bei 3 Ebenen — gefährlich nah am Limit.
Bevorzugen Sie den atomaren Modus. Entwerfen Sie Operationen so, dass sie in ~1,4 Mio. CU passen. Der iterative Modus erhöht die Latenz (3-4 Sekunden Sperren) und die Komplexität.
Konten im Voraus deklarieren. Alle Solana-Konten, die durch CPI berührt werden, müssen zum Zeitpunkt der Transaktionserstellung bekannt sein. Eine dynamische Kontoerkennung innerhalb eines CPI-Aufrufs ist nicht möglich.
Verwenden Sie
transfer_checked. Wenn Sie etwas bauen, das Token-2022-Tokens berührt, verwenden Sie immertransfer_checkedum sicherzustellen, dass Hooks ausgelöst werden.Testen Sie den CU-Verbrauch. Verwenden Sie
eth_estimateGaswährend der Entwicklung. Optimieren Sie Hot Paths mit Yul. Siehe CU-Optimierung.
Was kommt als Nächstes
Compute Budget — detaillierte CU-Kosten pro Operation
Token-Interoperabilität — ERC-20 ↔ SPL-Bridging-Modell
Leitfaden zur CU-Optimierung — praktische Optimierungstechniken
Zuletzt aktualisiert
War das hilfreich?