# Panduan Cepat

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

## Prasyarat

* [Node.js](https://nodejs.org/) v18+
* [MetaMask](https://metamask.io/) ekstensi browser
* Dompet Solana dengan devnet SOL (untuk gas)

## 1. Tambahkan Jaringan Rome ke MetaMask

Buka MetaMask → Settings → Networks → Add Network:

| Field            | Nilai                                      |
| ---------------- | ------------------------------------------ |
| Nama Jaringan    | Rome Devnet                                |
| RPC URL          | `https://montispl.devnet.romeprotocol.xyz` |
| Chain ID         | `200002`                                   |
| Simbol Mata Uang | `RSOL`                                     |
| Block Explorer   | —                                          |

## 2. Isi Dompet Anda

Setorkan devnet SOL ke alamat Rome EVM Anda melalui [UI deposit](https://deposit.devnet.romeprotocol.xyz). Hubungkan dompet Solana Anda (dengan devnet SOL) dan MetaMask Anda, lalu masukkan jumlah yang ingin disetorkan. UI mengonversi SOL ke RSOL dengan rasio 1:1 dan mengkredit alamat EVM Anda.

## 3. Buat Proyek Hardhat

```bash
mkdir rome-hello && cd rome-hello
npm init -y
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
npx hardhat init
```

Pilih "Create a JavaScript project" saat diminta.

## 4. Konfigurasikan Hardhat untuk Rome

Edit `hardhat.config.js`:

```javascript
require("@nomicfoundation/hardhat-toolbox");

module.exports = {
  solidity: "0.8.28",
  networks: {
    rome_devnet: {
      url: "https://montispl.devnet.romeprotocol.xyz",
      chainId: 200002,
      accounts: [process.env.PRIVATE_KEY],
    },
    rome_local: {
      url: "http://localhost:9090",
      chainId: 1001,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
};
```

Ekspor private key MetaMask Anda:

```bash
export PRIVATE_KEY="0xPRIVATE_KEY_ANDA"
```

## 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.js`:

```javascript
const hre = require("hardhat");

async function main() {
  const HelloRome = await hre.ethers.getContractFactory("HelloRome");
  const hello = await HelloRome.deploy();
  await hello.waitForDeployment();

  const address = await hello.getAddress();
  console.log("HelloRome deployed to:", address);

  // Panggil kontraknya
  const tx = await hello.greet();
  await tx.wait();

  const count = await hello.counter();
  console.log("Penghitung:", count.toString());

  const greeting = await hello.greeting();
  console.log("Sapaan:", greeting);
}

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

Deploy ke Rome devnet:

```bash
npx hardhat run scripts/deploy.js --network rome_devnet
```

Output yang diharapkan:

```
HelloRome deployed to: 0x5FbDB2315678afecb367f032d93F642f64180aa3
Penghitung: 1
Sapaan: Halo dari Solana!
```

Kontrak Solidity Anda sekarang berjalan di Solana.

## Berikutnya

* [Deploy Solidity](/id/panduan-pengembang/deploy-solidity.md) — panduan deployment detail dengan Foundry dan Hardhat
* [Panggil Solana dari EVM](/id/panduan-pengembang/call-solana-from-evm.md) — gunakan CPI untuk memanggil Jupiter, Kamino, dan program Solana lainnya dari Solidity
* [Arsitektur](/id/memulai/architecture.md) — pahami cara kerja Rome EVM di balik layar

## Kesalahan Umum

| Kesalahan              | Penyebab                           | Perbaikan                                                       |
| ---------------------- | ---------------------------------- | --------------------------------------------------------------- |
| `dana tidak mencukupi` | Alamat EVM tidak memiliki saldo    | Setorkan SOL melalui UI deposit                                 |
| `nonce terlalu rendah` | Ketidaksesuaian nonce transaksi    | Atur ulang akun MetaMask (Settings → Advanced → Clear Activity) |
| `execution reverted`   | Eksekusi kontrak gagal             | Periksa logika kontrak; gunakan `eth_call` untuk men-debug      |
| Connection timeout     | Endpoint RPC tidak dapat dijangkau | Verifikasi URL jaringan; periksa apakah devnet beroperasi       |


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

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

The question should be specific, self-contained, and written in natural language.
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.
