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
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 --initTerima 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:
compound-on-rome-comet — Compound v3 kanonik (Comet), Foundry standar.
rome-aave-v3 — Aave v3 kanonik.
Keduanya mendapatkan eksekusi Solana dan komposabilitas CPI tanpa perubahan kontrak.
Batasan Deployment
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
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
Buka kontrak Anda untuk pengguna Solana — biarkan pengguna dompet Solana memanggil apa yang baru saja Anda deploy
Memanggil Solana dari EVM — gunakan precompile CPI untuk berinteraksi dengan program Solana
Verifikasi Kontrak — publikasikan source Anda ke block explorer
Terakhir diperbarui
Apakah ini membantu?