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

Deploy Kontrak Solidity

Deploy smart contract Solidity di Solana dengan Hardhat atau Foundry — konfigurasi jaringan Rome, akun yang didanai, dan deployment langkah demi langkah.

Panduan ini membahas deployment kontrak pintar Solidity di Rome EVM menggunakan Hardhat dan Foundry.

Prasyarat

  • Node.js v22.13+ (Hardhat) atau Foundry terpasang

  • Alamat Rome EVM yang sudah terisi dana (lihat Mulai cepat)

  • Kunci privat Anda diekspor sebagai variabel lingkungan

export PRIVATE_KEY="0xYOUR_PRIVATE_KEY"

Konfigurasi Jaringan

Jaringan
RPC URL
ID rantai
Penjelajah

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 menggunakan USDC di setiap jaringan. Di testnet, Anda mendapatkannya dengan menjembatani test USDC atau melakukan wrapping dari dompet Solana devnet (Faucet); di Rubicon dengan menjembatani USDC dari Ethereum dengan Rome Bridge. Deploy ke Rubicon dengan artefak yang sama yang Anda uji di Hadrian — hanya chain id dan alamat wrapper yang berbeda.

Hardhat

Setup

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

Terima default-nya (Hardhat 3, direktori saat ini, template TypeScript + viem); dependensi diinstal otomatis.

hardhat.config.ts

configVariable("PRIVATE_KEY") diambil dari environment (atau keystore terenkripsi — npx hardhat keystore set PRIVATE_KEY).

Deploy

Verifikasi di Block Explorer

Memerlukan konfigurasi verifier Sourcify dari Verifikasi Kontrak di hardhat.config.ts.

Foundry

Setup

Deploy

Panggil Kontrak yang Dideploy

Menggunakan Rome Solidity SDK

Untuk kontrak yang berinteraksi dengan program Solana, gunakan antarmuka dari publik rome-solidity repo. Paket ini diinstal dari GitHub, bukan dari npm:

Kontrak selain interface.sol dan antarmuka oracle (misalnya wrapper dan factory ERC-20) mengimpor OpenZeppelin. Dengan npm, paket itu ikut sebagai dependensi. Dengan Foundry, jalankan juga forge install OpenZeppelin/openzeppelin-contracts dan tambahkan remapping @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/.

Dengan npm, paket diinstal sebagai @rome-protocol/rome-solidity, sehingga impor di bawah ini diselesaikan dari node_modules. Dengan Foundry, remapping membuat impor yang sama diselesaikan dari lib/rome-solidity.

Bawa protokol yang sudah ada

Setiap kontrak Solidity dapat dideploy di Rome tanpa modifikasi — kontrak kepatuhan, protokol DeFi, atau aplikasi hardened yang sudah ada. Dua contoh produksi yang bisa Anda fork dan deploy dengan alur Hardhat / Foundry yang sama di atas:

Keduanya mendapatkan eksekusi Solana dan komposabilitas CPI tanpa perubahan kontrak.

Batasan Deployment

Kendala
Batas
Catatan

Ukuran kontrak maksimum

24 KB

Sama seperti Ethereum (EIP-170, 24.576 byte)

Batas ukuran transaksi

80 KB per holder

Deploy besar dibagi ke beberapa akun holder secara transparan

Anggaran komputasi

~1,4 juta CU (atomik)

Gunakan mode iteratif untuk kontrak yang berat

Versi Solidity

0.8.28 direkomendasikan

Versi sebelumnya bisa digunakan, tetapi 0.8.28 cocok dengan SDK

Kesalahan Umum

Kesalahan
Penyebab
Perbaikan

dana tidak cukup untuk gas

Alamat EVM tidak memiliki token gas

Testnet: bungkus gas melalui Aplikasi Rome (lihat Mulai cepat); Rubicon: jembatani USDC masuk dengan Rome Bridge

nonce terlalu rendah

Nonce usang di dompet

Setel ulang akun MetaMask atau tentukan nonce secara manual

eksekusi dibatalkan

Logika kontrak gagal

Debug dengan eth_call atau forge test --fork-url

transaksi terlalu murah

Harga gas di bawah minimum

Tingkatkan harga gas dalam transaksi

Langkah Berikutnya

Terakhir diperbarui

Apakah ini membantu?