> For the complete documentation index, see [llms.txt](https://docs.rome.builders/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rome.builders/id/memulai/quickstart.md).

# Quickstart

Deploy kontrak Solidity pertama Anda di Rome dalam waktu kurang dari 5 menit.

Deploy kontrak Solidity pertama Anda di Rome dalam waktu kurang dari 5 menit. Panduan ini ditujukan untuk [**Hadrian**](/id/jaringan/hadrian.md), chain testnet publik. [Rubicon](/id/jaringan/rubicon.md) adalah chain mainnet, tempat gas adalah USDC asli; coba semuanya di chain uji terlebih dahulu.

## Prasyarat

* [Node.js](https://nodejs.org/) v22.13+
* [MetaMask](https://metamask.io/) ekstensi browser
* Dompet Solana yang disetel ke **Devnet**, hanya jika Anda mendanai dari Solana (langkah 2). Memanggil kontrak dari dompet Solana memerlukan yang menandatangani transaksi Solana v1, yang dibahas di [Buka kontrak Anda untuk pengguna Solana](/id/panduan-pengembang/open-to-solana-users.md).

## 1. Tambahkan Hadrian ke MetaMask

Tambahkan secara manual (Pengaturan → Jaringan → Tambahkan jaringan):

| Bidang           | Nilai                                           |
| ---------------- | ----------------------------------------------- |
| Nama Jaringan    | Rome Hadrian                                    |
| URL RPC          | `https://hadrian.testnet.romeprotocol.xyz/`     |
| ID rantai        | `200010`                                        |
| Simbol Mata Uang | `USDC`                                          |
| Penjelajah Blok  | `https://via-hadrian.testnet.romeprotocol.xyz/` |

## 2. Danai dompet Anda

Gas dibayar dalam token gas chain, yaitu USDC di Hadrian. Di Hadrian, itu didukung oleh USDC Solana Devnet milik Circle (mint `4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU`), jadi SOL devnet bukan gas. Tidak ada faucet Rome. Ada dua cara untuk mendapatkan USDC ke Hadrian:

**Dari Solana** — dapatkan USDC Solana Devnet dari [faucet Circle](https://faucet.circle.com/) (pilih Solana Devnet) dan sedikit SOL devnet untuk biaya Solana dari [faucet Solana](https://faucet.solana.com/), dengan dompet Solana Anda disetel ke Devnet. Lalu gunakan [Rome Bridge](/id/aplikasi-di-rome/bridge-api.md) dengan Hadrian sebagai tujuan dan rute Solana-nya, dengan alamat dompet EVM Anda sebagai penerima; jembatan meminta dompet EVM itu untuk menandatangani transaksi klaim di Hadrian, yang mengubah USDC menjadi gas.

**Dengan menjembatani dari chain EVM** — cetak USDC uji di Ethereum Sepolia dari [faucet Circle](https://faucet.circle.com/), lalu bawa ke Rome dengan [Rome Bridge](/id/aplikasi-di-rome/bridge-api.md) (CCTP). Anda memerlukan sedikit ETH Sepolia untuk transaksi sisi sumber — lihat [Faucet](/id/sumber-daya/faucets.md) untuk setiap faucet.

**Berapa banyak?** Menulis ke Rome biayanya lebih besar daripada yang diperkirakan intuisi Ethereum, karena sebagian besar gasnya dibayar untuk membuat akun Solana: penerima yang belum pernah digunakan, akun token baru, kontrak yang telah di-deploy. Gunakan `eth_estimateGas`, yang dilakukan oleh tooling standar, dan jangan pernah hardcode 21.000. Estimasi mencakup pembuatan akun, Rome mengenakan gas yang benar-benar digunakan transaksi (dalam pengukuran di Hadrian, itu tidak pernah melebihi estimasi), dan `submitRomeTx` menambahkan margin 1,3x pada estimasi, yang tidak memakan biaya karena hanya gas yang digunakan yang ditagih. Danai setidaknya **0,5 USDC gas**; 1 USDC memberi ruang nyaman. Angka dalam [Dukungan JSON-RPC](/id/referensi/json-rpc.md) menunjukkan biaya masing-masing penulisan.

Jika deposit sisi Solana gagal dengan peringatan "insufficient SOL" meskipun dompet terisi, setel dompet Solana Anda ke Mode Testnet / Devnet (lihat [FAQ](/id/sumber-daya/faq.md)).

## 3. Buat proyek Hardhat

```bash
mkdir rome-hello && cd rome-hello
npx hardhat --init
```

Terima default saat diminta — Hardhat 3, direktori saat ini, dan template TypeScript + Node Test Runner + viem — lalu biarkan menginstal dependensi. Template ini menyertakan contoh `Counter` kontrak dengan pengujian; itu tidak mengganggu panduan ini.

## 4. Konfigurasikan Hardhat untuk Rome

Edit `hardhat.config.ts` dan tambahkan jaringan Rome di dalam `defineConfig({ ... })`:

```typescript
  networks: {
    hadrian: {
      type: "http",
      chainType: "l1",
      chainId: 200010,
      url: "https://hadrian.testnet.romeprotocol.xyz/",
      accounts: [configVariable("PRIVATE_KEY")],
    },
  },
```

`configVariable("PRIVATE_KEY")` diambil dari lingkungan, jadi ekspor kunci privat MetaMask Anda:

```bash
export PRIVATE_KEY="0xYOUR_PRIVATE_KEY"
```

(Untuk apa pun selain kunci sementara, lebih baik gunakan keystore terenkripsi yang disertakan dengan toolbox: `npx hardhat keystore set PRIVATE_KEY`.)

## 5. Tulis kontrak

Buat `contracts/HelloRome.sol`:

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

contract HelloRome {
    string public greeting = "Halo dari Solana!";
    uint256 public counter;

    event Greeted(address indexed sender, uint256 count);

    function greet() external returns (string memory) {
        counter++;
        emit Greeted(msg.sender, counter);
        return greeting;
    }

    function setGreeting(string calldata _greeting) external {
        greeting = _greeting;
    }
}
```

## 6. Deploy

Buat `scripts/deploy.ts`:

```typescript
import hardhat from "hardhat";

async function main() {
  const { viem } = await hardhat.network.connect();
  const publicClient = await viem.getPublicClient();

  const hello = await viem.deployContract("HelloRome");
  console.log("HelloRome di-deploy ke:", hello.address);

  const hash = await hello.write.greet();
  await publicClient.waitForTransactionReceipt({ hash });

  console.log("Penghitung:", (await hello.read.counter()).toString());
  console.log("Sapaan:", await hello.read.greeting());
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
```

Deploy ke Hadrian:

```bash
npx hardhat run scripts/deploy.ts --network hadrian
```

Output yang diharapkan (alamat Anda akan berbeda):

```
HelloRome di-deploy ke: 0x09c437e305eeb698e1776cff23ca16c1bb25aabd
Penghitung: 1
Sapaan: Halo dari Solana!
```

Buka alamat yang di-deploy di [penjelajah](https://via-hadrian.testnet.romeprotocol.xyz/) untuk melihat instruksi Solana di balik transaksi Anda. Kontrak Solidity Anda sekarang berjalan di Solana.

## Apa Selanjutnya

* [Deploy Solidity](/id/panduan-pengembang/deploy-solidity.md) — deployment Hardhat dan Foundry secara mendalam
* [Call Solana from EVM](/id/panduan-pengembang/call-solana-from-evm.md) — panggil program Solana dari Solidity melalui CPI
* [Arsitektur](/id/memulai/architecture.md) — bagaimana Rome mengeksekusi EVM di dalam Solana

## Kesalahan Umum

| Error                  | Penyebab                                               | Perbaikan                                                                                                |
| ---------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
| `dana tidak cukup`     | Token gas tidak cukup untuk batas gas dikali harga gas | Danai setidaknya 0,5 USDC gas (lihat langkah 2) dengan [Rome Bridge](/id/aplikasi-di-rome/bridge-api.md) |
| `nonce terlalu rendah` | Ketidaksesuaian nonce transaksi                        | Setel ulang akun (MetaMask → Pengaturan → Lanjutan → Hapus aktivitas)                                    |
| `eksekusi dibatalkan`  | Eksekusi kontrak gagal                                 | Periksa logika kontrak; gunakan `eth_call` untuk men-debug                                               |
| Koneksi habis waktu    | RPC tidak dapat dijangkau                              | Verifikasi URL RPC                                                                                       |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.rome.builders/id/memulai/quickstart.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
