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

Solidity-Verträge bereitstellen

Stelle Solidity-Smart-Contracts auf Solana mit Hardhat oder Foundry bereit — Rome-Netzwerkkonfiguration, aufgeladene Accounts und schrittweise Bereitstellung.

Dieser Leitfaden behandelt die Bereitstellung von Solidity-Smart-Contracts auf Rome EVM mit Hardhat und Foundry.

Voraussetzungen

  • Node.js v22.13+ (Hardhat) oder Foundry installiert

  • Eine mit Mitteln ausgestattete Rome-EVM-Adresse (siehe Schnellstart)

  • Ihr privater Schlüssel als Umgebungsvariable exportiert

export PRIVATE_KEY="0xYOUR_PRIVATE_KEY"

Netzwerkkonfiguration

Netzwerk
RPC-URL
Chain-ID
Explorer

Hadrian (Devnet)

https://hadrian.testnet.romeprotocol.xyz/

200010

via-hadrian.testnet.romeprotocol.xyz

Martius (Testnet)

https://martius.testnet.romeprotocol.xyz/

121214

via-martius.testnet.romeprotocol.xyz

Rubicon (Mainnet)

https://rubicon.mainnet.romeprotocol.xyz/

7531

via-rubicon.mainnet.romeprotocol.xyz

Gas ist auf jedem Netzwerk USDC. Auf den Testnets erhalten Sie es, indem Sie Test-USDC bridgen oder es aus einer Solana-Devnet-Wallet wrappen (Faucets); auf Rubicon, indem Sie USDC mit dem Rome Bridge. Stellen Sie auf Rubicon mit denselben Artefakten bereit, die Sie auf Hadrian getestet haben — nur die Chain-ID und die Wrapper-Adressen unterscheiden sich.

Hardhat

Einrichtung

mkdir my-rome-project && cd my-rome-project
npx hardhat --init

Übernehmen Sie die Standardwerte (Hardhat 3, aktuelles Verzeichnis, TypeScript- + viem-Vorlage); die Abhängigkeiten werden automatisch installiert.

hardhat.config.ts

configVariable("PRIVATE_KEY") wird aus der Umgebung aufgelöst (oder aus dem verschlüsselten Keystore — npx hardhat keystore set PRIVATE_KEY).

Bereitstellen

Im Block-Explorer verifizieren

Benötigt die Sourcify-Verifier-Konfiguration von Contracts verifizieren in Ihrem hardhat.config.ts.

Foundry

Einrichtung

Bereitstellen

Bereitgestellten Contract aufrufen

Mit dem Rome Solidity SDK

Für Contracts, die mit Solana-Programmen interagieren, verwenden Sie die Schnittstellen aus dem öffentlichen rome-solidity Repo. Es wird von GitHub installiert, nicht von npm:

Über interface.sol und die Oracle-Schnittstellen (zum Beispiel die ERC-20-Wrapper und die Factory) importieren OpenZeppelin. Mit npm wird es als Abhängigkeit mitgeliefert. Mit Foundry führen Sie außerdem aus forge install OpenZeppelin/openzeppelin-contracts und fügen Sie das Remapping hinzu @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/.

Mit npm wird das Paket installiert als @rome-protocol/rome-solidity, daher wird der folgende Import aus node_modules. Mit Foundry sorgt das Remapping dafür, dass derselbe Import aus lib/rome-solidity.

Bestehendes Protokoll übernehmen

Jeder Solidity-Contract wird auf Rome unverändert bereitgestellt — ein Compliance-Contract, ein DeFi-Protokoll oder eine bestehende gehärtete Anwendung. Zwei Produktionsbeispiele, die Sie mit demselben oben gezeigten Hardhat-/Foundry-Flow forken und bereitstellen können:

Beide erhalten Solana-Ausführung und CPI-Komposierbarkeit ohne Änderungen am Contract.

Bereitstellungsbeschränkungen

Einschränkung
Limit
Hinweise

Maximale Contract-Größe

24 KB

Wie bei Ethereum (EIP-170, 24.576 Bytes)

Transaktionsgrößenlimit

80 KB pro Holder

Große Deployments werden transparent über Holder-Konten aufgeteilt

Compute-Budget

~1,4 Mio. CU (atomar)

Verwenden Sie den iterativen Modus für große Contracts

Solidity-Version

0.8.28 empfohlen

Ältere Versionen funktionieren, aber 0.8.28 passt zum SDK

Häufige Fehler

Fehler
Ursache
Behebung

nicht genügend Mittel für Gas

EVM-Adresse hat kein Gas-Token

Testnets: Gas über den Rome-App (siehe Schnellstart); Rubicon: USDC mit dem Rome Bridge

Nonce zu niedrig

Veraltete Nonce in der Wallet

MetaMask-Konto zurücksetzen oder Nonce manuell angeben

Ausführung rückgängig gemacht

Contract-Logik fehlgeschlagen

Debuggen mit eth_call oder forge test --fork-url

Transaktion unterbewertet

Gaspreis unter dem Minimum

Erhöhen Sie den Gaspreis in der Transaktion

Was kommt als Nächstes

Zuletzt aktualisiert

War das hilfreich?