> 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/tr/baslarken/architecture.md).

# Mimari

Rome'un bileşenlerinin nasıl bir araya geldiği — bir Solana programı içinde EVM yürütmesi.

Rome, bir Solana zincir-üstü programının içine bir EVM bytecode yorumlayıcısı yerleştirir. Kullanıcılar standart Ethereum JSON-RPC üzerinden Rome Proxy ile iletişim kurar ve proxy işlemlerini doğrudan Solana üzerindeki Rome EVM programına gönderir. Senkronize tutulacak ayrı bir yürütme katmanı yoktur — EVM durumu *olduğu* Solana durumu.

## Sistem genel bakışı

<figure><img src="https://4222476421-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F671PKS8ZQSNqtoC8PGvz%2Fuploads%2Fgit-blob-12ba59ef1fa43d6d8b5565a98efca4375a4d79c0%2Farchitecture.svg?alt=media" alt="User to Rome Proxy to the Rome EVM program on Solana, with Hercules indexing back"><figcaption></figcaption></figure>

## Bileşenler

### Rome EVM Programı (zincir üstü)

Rome'un çekirdeği — tam bir EVM bytecode yorumlayıcısı (SputnikVM'in bir çatallanması) içeren bir Solana BPF programı. Şunları yapar:

* Serileştirilmiş EVM işlemlerini Solana talimatları olarak alır
* Solana çalışma zamanında Solidity bytecode'unu çalıştırır
* Her Ethereum adresini (H160) bir Solana PDA'sına eşler
* Standart Ethereum precompile'larının yanı sıra Solana'ya çağrı yapmak için precompile'lar (CPI, System, Helper, Withdraw) sunar
* EVM durumunu (bakiyeler, nonce, kod, depolama) Solana hesap verisi olarak saklar

### Rome Proxy (JSON-RPC sunucusu)

9090 portunda standart bir Ethereum JSON-RPC sunucusu — genel zincirler için giriş noktası. Ethereum API çağrılarını Solana etkinliğine çevirir:

* `eth_sendRawTransaction` → EVM işlemini serileştir → bir Solana talimatı gönder
* `eth_call` → yürütmeyi Mollusk SVM emülatörü aracılığıyla zincir dışı olarak taklit et
* `eth_estimateGas` → gas tahmini için simüle et
* `eth_getBalance`, `eth_getCode`, `eth_getBlockByNumber`işlem makbuzları, günlükler → indekslenmiş durumdan sunulur

Ayrıca Rome uzantılarını da sunar: `rome_emulateTx`, `rome_emulateRegRollup`, `rome_mintId`, `rome_buildInfo`, `rome_getResources`ve daha fazlası.

### Hercules (indeksleyici)

Solana üzerindeki Rome EVM programını izler ve PostgreSQL tarafından desteklenen Ethereum ile uyumlu blokları — işlemler, makbuzlar, günlükler ve durum değişiklikleri — yeniden oluşturur. Genel zincirlerde slot hizalı modda çalışır; böylece bir blok numarası bir Solana slotuna eşlenir ve aynı slot, herhangi bir indeksleyicide aynı bloğu üretir. Proxy bu blokları cüzdanlara ve gezginlere sunar.

### Ön derlemeler

Rome, ana ağ ile eşdeğer semantiklerle standart Ethereum precompile'larını (ecrecover, SHA-256, RIPEMD-160, identity, modexp, BN254 eğri işlemleri, blake2f) uygular; ayrıca Solana'ya erişen EVM dışı precompile'lar da içerir: **CpiProgram** (`0xFF…08`, keyfi CPI), **Sistem** (`0xFF…07`, PDA türetimi ve base58 yardımcıları), **HelperProgram** (`0xFF…09`, ATA/PDA oluşturma, SPL transferleri, gas↔lamports), ve **Çekim** (`0x42…16`). Bakınız [Sözleşme Adresleri](/tr/referans/contract-addresses.md) tam tablo için referans.

## Yürütme modları

Rome, bir EVM işlemini iki yoldan biriyle yürütür:

### Atomik (VmAt)

Tek bir Solana işlemi. Tüm EVM işlemi, tek bir Solana işleminin hesaplama bütçesi içinde (\~1,4 milyon hesaplama birimi) yürütülür. Çoğu işlem için kullanılır — transferler, sıradan sözleşme çağrıları, takaslar.

### Yinelemeli (VmIt)

Tek bir işlemin bütçesini aşan işler için. Yürütme birden fazla Solana işlemine bölünür:

1. Her adım (bir Solana işlemi), hesaplama bütçesine sığan kadar EVM opcodes çalıştırır — adım boyutu sabit değil, uyarlanabilirdir
2. VM durumu, Borsh ile serileştirilir ve bir `StateHolder` adımlar arasında bir hesapta
3. Hesaplar yürütme sırasında birkaç saniye boyunca TTL ile kilitlenir
4. BN254 eşleşmesi gibi ağır işlemler için kullanılır

## Hesap eşlemesi

Her Ethereum adresi, Rome EVM programı altında zincir kimliği ve adresten türetilen bir Solana PDA'sına deterministik olarak eşlenir. Bu PDA, hesabın bakiyesine (SPL token hesapları olarak), sözleşme koduna, depolama slotlarına ve nonce'una sahip olur — hepsi Solana hesap verisi olarak.

## Tutucu hesaplar

Solana (v1) işlemleri 4 KB ile sınırlıdır, ancak EVM işlemleri (özellikle sözleşme dağıtımları) çok daha büyük olabilir. Rome, büyük işlemleri şuraya aşamalı olarak yerleştirir **tutucu hesaplar**: işlem, bir tutucuya sıralı olarak yazılan parçalara bölünür (80 KB'a kadar), ardından birleştirilir ve zincir üstünde yürütülür. Rome SDK bunu şeffaf biçimde yönetir.

## Gas ve fiyatlandırma

Her zincirin kendi gas token'ı vardır — herhangi bir SPL token. Gas fiyatlandırması, alttaki Solana işlem ücretleri için gas token'ı ile SOL arasında dönüşüm yapmak üzere bir Meteora DAMM havuzunu (v1 veya v2, yapılandırılabilir) okur.

## Sırada ne var

* [Ağlar](/tr/aglar/networks.md) — Hadrian'a bağlan
* [Hızlı başlangıç](/tr/baslarken/quickstart.md) — ilk sözleşmenizi dağıtın
* [Yürütme Modeli](/tr/temel-kavramlar/execution-model.md) — atomik ve yinelemeli yürütme detayları


---

# 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/tr/baslarken/architecture.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.
