# Инициализируйте свой L2

**Примечание: термины «Proxy» и «Light Client» используются взаимозаменяемо.**

## Перейдите в каталог rome-setup/docker

```
cd rome-setup/docker
```

## Установите переменные окружения

```bash
export ROME_APPS_TAG=v1.0.1
export DEPOSIT_UI_TAG=v1.0.1
export GETH_TAG=v1.0.1

solana config set -u https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz
```

## Сгенерировать ключи Solana

Сгенерируйте два новых ключа Solana в rome-apps/docker/keys, с именами **Ключ Rhea** и **Ключ Proxy**. Эти ключи будут использоваться службами Rhea и Light Client (описано на следующей странице) для подписи и оплаты транзакций Solana.

```bash
solana-keygen new -o keys/rhea-sender.json --no-bip39-passphrase --force
solana-keygen new -o keys/proxy-sender.json --no-bip39-passphrase --force
```

## Выдача SOL (airdrop)

Выдайте SOL на ваши **Rhea** и **ключи Proxy** с помощью следующих команд:

```bash
solana -ud airdrop 1 $(solana address -k keys/rhea-sender.json)
solana -ud airdrop 1 $(solana address -k keys/proxy-sender.json)
```

Если у вас возникают проблемы с airdrop'ами, [связаться с нами в нашем Discord](https://discord.com/invite/romeprotocol).

## Сгенерировать секрет JWT

Сгенерируйте [секрет JWT](https://jwt.io/introduction) который будет использоваться Geth. Храните этот секрет в надежном месте.

```
openssl rand -hex 32
```

Пример значения ниже.

```
7ff586310476ffc476995fa0cd3a80be82e2aba650dddc885ac26c82af29c40d
```

## Проверить слот Solana

Проверьте слот Solana и обновите start\_slot в proxy-config.yml и rhea-config.yml (расположены в rome-setup/docker/cfg) текущим значением слота.

```bash
solana slot
```

Этот слот будет использоваться Rhea и Light Client (т.е. Proxy) для определения текущего состояния роллапа на основе истории транзакций Solana начиная с начального слота.

## Копирование сертификата Nginx

Если вы настраиваете на удалённом сервере, скопируйте сертификаты nginx в локальный каталог. При локальной настройке этот шаг можно пропустить.

**Примечание: замените путь к файлу ниже на расположение вашего сертификата.**

<pre class="language-bash"><code class="lang-bash">mkdir -p ./nginx/ssl
<strong>sudo cp /etc/letsencrypt/live/caesar.internal.romeprotocol.xyz/fullchain.pem ./nginx/ssl/
</strong><strong>sudo cp /etc/letsencrypt/live/caesar.internal.romeprotocol.xyz/privkey.pem ./nginx/ssl/
</strong></code></pre>

## Обновить файлы конфигурации

### Docker Compose

1. Обновить `docker-compose.yml` чтобы заменить значения CHAIN\_ID и JWT\_SECRET.

<pre class="language-yaml"><code class="lang-yaml">geth:
  image: romelabs/rollup-op-geth:${GETH_TAG:-main}
  logging: *logging-config
  hostname: geth
  container_name: geth
  environment:
<strong>    CHAIN_ID: '98989897'
</strong><strong>    JWT_SECRET: '7ff586310476ffc476995fa0cd3a80be82e2aba650dddc885ac26c82af29c40d'
</strong>...
</code></pre>

2. Если вы настраиваете ваш L2 на удаленном сервере, раскомментируйте контейнер romenginx в `docker-compose.yml`. В противном случае, если настройка выполняется на локальной машине, пропустите этот шаг.

### Конфигурация Rhea

Обновите rhea-config.yml, чтобы задать chain\_id, solana rpc\_urls и плательщиков (payers).

<pre class="language-yaml"><code class="lang-yaml"><strong>chain_id: 98989897 # Замените это вашим зарегистрированным идентификатором цепочки
</strong><strong>rpc_urls: ["https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz"] # Замените это на Rome Solana RPC
</strong>program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
commitment: "confirmed"
payers:
  - payer_keypair: "/opt/keys/rhea-sender.json"
    fee_recipients:
      - 0x5f5d351dB427d1131D8Dcd4F151185E6E6111907
geth_indexer:
  geth_http_addr: "http://geth:8545"
  geth_poll_interval_ms: 100
mempool_ttl: 15 # (секунды) Значение, большее или сопоставимое с реальным TTL op-geth, предотвратит повторную отправку со стороны rhea
</code></pre>

### Конфигурация Hercules

Обновите hercules-config.yml, чтобы задать chain\_id, start\_slot, solana rpc, geth\_engine\_secret и плательщиков.

<pre class="language-yaml"><code class="lang-yaml"><strong>start_slot: 385523275 # Замените это на ваш последний слот Solana
</strong>admin_rpc: "0.0.0.0:8000"
mode: Indexer
block_loader:
  program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
  batch_size: 64
  block_retries: 100
  tx_retries: 100
  retry_int_sec: 1
  commitment: "confirmed"
  client:
    providers:
<strong>      - "https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz" # Замените это на Rome Solana RPC
</strong>storage:
  connection:
    database_url: "postgres://hercules:qwerty123@postgres_rome/test_rollup"
    max_connections: 16
    connection_timeout_sec: 30
rollup_indexer:
  max_slot_history: 4096
  block_parser:
    program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
<strong>    chain_id: 98989897 # Замените это вашим зарегистрированным идентификатором цепочки
</strong>    parse_mode: engine_api
  block_producer:
    type: engine_api
    geth_engine:
      geth_engine_addr: "http://geth:8551"
<strong>      geth_engine_secret: "7ff586310476ffc476995fa0cd3a80be82e2aba650dddc885ac26c82af29c40d" # Замените это сгенерированным вами секретом JWT
</strong>    geth_api: "http://geth:8545"
</code></pre>

### Конфигурация Proxy

Обновите proxy-config.yml, чтобы задать chain\_id, start\_slot, solana rpc\_url и плательщиков.

<pre class="language-yaml"><code class="lang-yaml"><strong>chain_id: 98989897 # Замените это вашим зарегистрированным идентификатором цепочки
</strong><strong>start_slot: 385523275 # Замените это на ваш последний слот Solana
</strong>program_id: "RPDwFyw4ekzzgyJfSrVmJgmfi51ovyqzLckYGchLpKX"
solana:
<strong>  rpc_url: "https://node3.devnet-us-sol-api.devnet.romeprotocol.xyz" # Замените это на Rome Solana RPC
</strong>  commitment: "confirmed"
payers:
  - payer_keypair: "/opt/keys/proxy-sender.json"
    fee_recipients:
      - 0x5f5d351dB427d1131D8Dcd4F151185E6E6111907
ethereum_storage:
  type: "pg_storage"
  connection:
    database_url: "postgres://hercules:qwerty123@postgres_rome/test_rollup"
    max_connections: 16
proxy_host: "0.0.0.0:9090"
max_slot_history: 4096
gas_price: 1000000000
</code></pre>

### Конфигурация Deposit UI

Измените два файла ниже.

* `rome-setup/docker/depositui/chains.yml` чтобы указать `chainId` .
* `rome-setup/docker/depositui/env.depositui` чтобы указать `NEXT_PUBLIC_SOLANA_RPC_URL` .

### Указание плательщиков

Укажите несколько плательщиков, чтобы увеличить пропускную способность, поскольку больше транзакций может выполняться параллельно при наличии большего числа плательщиков.

### Указание получателей комиссий (fee\_recipients)

Укажите fee\_recipients как Ethereum-адреса, которые будут получать нативные токены L2 в качестве компенсации за выполнение транзакций Solana.

Если fee\_recipient не указан, то нативные токены L2 не передаются в качестве компенсации.

Укажите несколько fee\_recipients, чтобы увеличить пропускную способность, так как больше транзакций может выполняться параллельно при наличии большего числа получателей комиссий.


---

# 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/ru/legacy/rome-l2-setup/setup-your-l2/initialize-your-l2.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.
