> 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/referans/precompiles.md).

# Precompile Referansı

Rome'un Solana-interop precompile'larındaki her yöntem — adres, Solidity imzası, selector ve bir CPI'yi okuyup okumadığı, çağırıp çağırmadığı ya da hazırlayıp hazırlamadığı.

Rome'un zincir üstü programının ön-derleme yoluyla yönlendirdiği seçiciler. Seçici = `keccak256(signature)[:4]`; aşağıdaki her satır bununla doğrulanır. Solidity arayüzleri şurada bulunur: [`rome-solidity/contracts/interface.sol`](https://github.com/rome-protocol/rome-solidity/blob/master/contracts/interface.sol).

**Önce Dağıtım sütununu okuyun.** Bir yöntemin Solana durumuna ne yaptığını söyler:

| Dağıtım             | Ne olur                                                                                                                                                                                                                                                | Gerçek Solana CPI | Yinelemeli yürütmede izinli       |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- | --------------------------------- |
| `Çağır` / `Bileşik` | Bir veya daha fazla CPI, tohumların geçerli olduğu yerde çağıranın external-authority PDA'sı olarak imzalanır.  **eski** hatta anında çalışırlar;  **önbelleğe alınmış** önbellekli hatta ise aşamalı olarak hazırlanır ve işlemin sonunda kaydedilir. | Evet              | Eski: **hayır**. Önbellekli: evet |
| `EthCall`           | Saf hesaplama ya da Rome'un kendi durumunun bir okunması                                                                                                                                                                                               | Hayır             | Evet                              |
| `CrossStateEthCall` | Emülasyon tarafından önceden yüklenmiş başka bir Solana hesabının baytlarının okunması. CPI yok, yan etki yok.                                                                                                                                         | Hayır             | Evet                              |
| `Önceden derlenmiş` | Deterministik kriptografi (Ethereum-standardı ön-derlemeler)                                                                                                                                                                                           | Hayır             | Evet                              |

Bir sözleşme kullanır **tek bir hat**: ya eski ön-derlemeler (`0xff…07`, `0xff…08`, `0xff…09`, `0x42…16`) ya da önbellekli olanlar (`0xff…04`, `0xff…05`, `0xff…06`, `0xff…0b`). İki hattan gelen değiştirici çağrıları tek bir işlemde karıştırmak çalışma zamanında reddedilir. Okumalara izin verilmeye devam edilir; bir istisna dışında: bir önbellekli-hat invoke'u çalıştıktan sonra, işlemin geri kalanı için eski-hat okumaları reddedilir. Bkz. [Bir Solana programını entegre edin](/tr/gelistirici-kilavuzlari/integrate-solana-program.md).

**Kim öder.** Solana ücret ödeyicisi, eski-hattaki bir CPI'nin harcadığı her lamportu peşin karşılar (kira, transferler, `swap_gas_to_lamports`); program, her CPI etrafında ödeyicinin bakiyesini ölçer ve net harcamayı kullanıcıya gaz olarak gaz fiyatından faturalandırır, bir CPI'nin iade ettiği lamportları geri öder.

**Kim imzalar.** Bir ön-derlemeyi çağıran bir sözleşme kendi adına hareket eder: imzalayan, sözleşmenin external-authority PDA'sıdır (`["EXTERNAL_AUTHORITY", contract]`). Kullanıcının kendi PDA'sı yalnızca kullanıcının doğrudan ön-derleme adresine gönderdiği bir işlemde imzalar.  `DELEGATECALL` / `CALLCODE`altında, değiştirici seçiciler reddedilir; istisna olarak `create_ata*`, `create_pda*`, `swap_gas_to_lamports`, `init_spl_mint` ve `create_and_init_mint` HelperProgram üzerinde, `create_ata*` ASplCached üzerinde ve `invoke` / `invoke_signed` CpiProgram üzerinde. Hedefleri çağırana bağlı ya da operatör tarafından finanse edildiği için muaftırlar; hiç imzalamadıkları için değil: `create_and_init_mint` yine de mint'in kirasını ödemek için dış çağıranın PDA'sı ile imzalar ve yalnızca yetkileri o PDA olan bir mint oluşturabilir, ayrıca `invoke` / `invoke_signed` çıplak yetkiyi (`DelegatecallOwnerAuthority`) reddeder ve saltlı PDA'ları çalışan sözleşmenin adresiyle ad alanına ayırır.

Her yöntem non-payable'dır (`msg.value > 0` şu hata ile geri döner: `TransferProhibited`) şu yöntem hariç: `withdrawal(bytes32)`. Şu şekilde işaretlenen yöntemler *yalnızca tek durumlu* op-geth-stack zincirlerinde reddedilir. Bir CPI, Solana ücret ödeyicisini (düz bir System transfer instruction'ının içi hariç) ya da Rome programını adlandıramaz ve Rome programını çağıramaz.

## SystemCached (`0xff00000000000000000000000000000000000004`)

PDA oluşturma + sistem-programı işlemleri (allocate, assign, lamport transfer), örtüye aşamalı olarak alınır. Eski `System @ 0xff..07`'nin değiştirici seçicilerinin önbellekli karşılığı (eski System saf okuma seçicilerini korur).

| Solidity imzası                      | Seçici       | Dağıtım | Açıklama                                                            |
| ------------------------------------ | ------------ | ------- | ------------------------------------------------------------------- |
| `create_pda()`                       | `0xe0402a8d` | `Çağır` | Çağıranın `external_auth` PDA'sını oluştur, kira muaf, sıfır verili |
| `create_pda(uint64)`                 | `0x4ceab657` | `Çağır` | Aynısı, fon sağlayıcının belirttiği kira üstü lamportlarla          |
| `create_pda(uint64,bytes32)`         | `0x48e2bb86` | `Çağır` | Lamport'lu salt-türevi PDA                                          |
| `create_pda(bytes32,uint64,bytes32)` | `0xcc258bbf` | `Çağır` | Sahibi belirtilen, boyut-N, salt-türevi                             |
| `allocate(uint64,bytes32)`           | `0x93225c9f` | `Çağır` | Salt-türevi bir PDA üzerinde N bayt ayır                            |
| `assign(bytes32,bytes32)`            | `0x8ac00bdc` | `Çağır` | Salt-türevi bir PDA'yı yeni bir sahibine ata                        |
| `transfer(address,uint64)`           | `0x5d359fbd` | `Çağır` | EVM adresinden türetilmiş PDA'ya lamport transferi                  |
| `transfer(bytes32,uint64)`           | `0xfd54d1ea` | `Çağır` | Ham Solana genel anahtarına lamport transferi                       |
| `transfer(bytes32,uint64,bytes32)`   | `0x875abfc0` | `Çağır` | Ham genel anahtara lamport transferi, salt-türevi kaynak            |

## SplCached (`0xff00000000000000000000000000000000000005`)

SPL Token / Token-2022 transferleri + ATA başlatma + çapraz-durum hesap okumaları, örtüye aşamalı olarak alınır.

| Solidity imzası                                 | Seçici       | Dağıtım             | Açıklama                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------------------------------------- | ------------ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `transfer(address,uint256)`                     | `0xa9059cbb` | `Çağır`             | Çağıranın sahibi olduğu SPL transferi EVM adresinden türetilmiş PDA'nın ATA'sına, mevcut rollup mint'i                                                                                                                                                                                                                                                                       |
| `transfer(bytes32,uint256)`                     | `0x6a467394` | `Çağır`             | Aynısı, alıcı ham Solana genel anahtarı olarak verilmiş                                                                                                                                                                                                                                                                                                                      |
| `transfer(address,uint256,bytes32)`             | `0x57cfeeee` | `Çağır`             | Açık-mint varyantı, EVM adresi hedefli                                                                                                                                                                                                                                                                                                                                       |
| `transfer(bytes32,uint256,bytes32)`             | `0x7db527f9` | `Çağır`             | Açık-mint varyantı, ham genel anahtar hedefli                                                                                                                                                                                                                                                                                                                                |
| `transferFrom(address,address,uint256,bytes32)` | `0x401e3367` | `Çağır`             | Delege-kaynak varyantı — yetki = `external_auth(caller)`, ATA sahibi YA DA yeterli miktarda delege olarak kabul edilir. Şunun tarafından kullanılır `SPL_ERC20_cached.transferFrom` ve yönlendirici güdümlü akışlar                                                                                                                                                          |
| `approve(address,uint256,bytes32)`              | `0x8180f2fc` | `Çağır`             | EVM harcayıcı onayı — sahibi = `external_auth(caller)`, delege = `external_auth(spender_addr)`. Şunun tarafından kullanılır `SPL_ERC20_cached.approve`                                                                                                                                                                                                                       |
| `mint(address,uint256,bytes32)`                 | `0x1e458bee` | `Çağır`             | Çağıran-PDA, mint yetkilisi olarak imzalar. SPL çalışma zamanı, çağıran-PDA == zincir üstü mint yetkilisi olmasını zorunlu kılar. Şunun tarafından kullanılır `SPL_ERC20_cached.mint_to` ve gelen köprü uzlaştırması                                                                                                                                                         |
| `init(bytes32,bytes32,bytes32)`                 | `0x0b0ad508` | `Çağır`             | `InitializeAccount3` ix (ata, mint, owner)                                                                                                                                                                                                                                                                                                                                   |
| `account(address)`                              | `0x73b9aa91` | `CrossStateEthCall` | EVM adresinin PDA-türevi ATA'sı için SPL hesap durumunu oku (mevcut rollup mint'i)                                                                                                                                                                                                                                                                                           |
| `account(bytes32)`                              | `0x882358ae` | `CrossStateEthCall` | Ham bir ATA genel anahtarı için SPL hesap durumunu oku                                                                                                                                                                                                                                                                                                                       |
| `account(address,bytes32)`                      | `0xf9827227` | `CrossStateEthCall` | İle aynı, `account(address)` ama açık bir mint ile.                                                                                                                                                                                                                                                                                                                          |
| `mint_info(bytes32)`                            | `0xe24bf5d4` | `CrossStateEthCall` | Mint gerçekleri, örtüye duyarlı: token programı, ondalıklar, **silahlandırılmış** hook programı (yoksa 0 *veya* etkisiz), mevcut-epoch fee bps ve bir uzantı-varlık bit haritası. Aynı seçici `HelperProgram.mint_info` ile aynıdır — tek bir yetenek, iki dağıtım yuvası; çünkü önbellekli-hat sözleşmesi, bir önbellekli invoke çalıştıktan sonra eski okumayı kullanamaz. |

## ASplCached (`0xff00000000000000000000000000000000000006`)

Associated Token Account oluşturma, idempotent.

| Solidity imzası               | Seçici       | Dağıtım | Açıklama                                                                  |
| ----------------------------- | ------------ | ------- | ------------------------------------------------------------------------- |
| `create_ata()`                | `0xb6d336ed` | `Çağır` | Çağıran-PDA × mevcut rollup mint'i için idempotent ATA oluşturma          |
| `create_ata(bytes32)`         | `0x81972e35` | `Çağır` | Çağıran-PDA × açık mint için idempotent ATA oluşturma                     |
| `create_ata(address)`         | `0x5a7c3259` | `Çağır` | EVM adresinden türetilmiş PDA × mevcut mint için idempotent ATA oluşturma |
| `create_ata(address,bytes32)` | `0x3de2251a` | `Çağır` | Açık mint için EVM adresi × idempotent ATA oluşturma                      |

## WithdrawCached (`0xff0000000000000000000000000000000000000b`)

Gaz-token çekim kolları (yerel gaz → SPL sarmalayıcı, yerel gaz → SOL, yerel gaz → çağıran PDA), aşamalı. Eski `Withdraw @ 0x42..16`.

| Solidity imzası               | Seçici       | Dağıtım   | Açıklama                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ----------------------------- | ------------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `withdrawal(bytes32) payable` | `0x4d8b0ea4` | `Bileşik` | Yakım `msg.value` Rome gazı, Solana sistem hesabı alıcısına aktar                                                                                                                                                                                                                                                                                                                                                                   |
| `withdraw_to_pda(uint256)`    | `0x7f3124a0` | `Bileşik` | wei yak, lamport'ları çağıranın `EXTERNAL_AUTHORITY` PDA'sına yatır. Yalnızca tek durumlu.                                                                                                                                                                                                                                                                                                                                          |
| `withdraw_to_ata(uint256)`    | `0x8059abc0` | `Bileşik` | wei yak, SPL sarmalayıcıyı çağıranın PDA'ya ait ATA'sına yatır. Yalnızca tek durumlu. Gaz-sarmalayıcı köprüsünün sarma kolu.                                                                                                                                                                                                                                                                                                        |
| `deposit(uint256)`            | `0xb6b55f25` | `Bileşik` | Şunun tersi `withdrawal` — Solana tarafında çağıranın PDA'ya ait ATA'sından zincirin sol\_wallet ATA'sına SPL transferi; **mint** `wei` EVM tarafında çağırana yerel gaz. Saf mint (karşı dengeleyici bir borç olmadan `Withdraw::ADDRESS` — zincirin SPL cüzdanı ekonomik teminattır, ön-derleme adresi değil). Yalnızca tek durumlu. Gaz-sarmalayıcı köprüsünün açma kolu. Şuna uyar: `HelperProgram.deposit_from_ata` semantiği. |

## System (`0xff00000000000000000000000000000000000007`)

PDA türetimi + base58 dönüştürme + kimlik tarzı yardımcılar. Saf okuma ön-derlemesi — her yöntem `EthCall` (Solana yan etkisi yok).

| Solidity imzası                                   | Seçici       | Dağıtım   | Açıklama                                                                          |
| ------------------------------------------------- | ------------ | --------- | --------------------------------------------------------------------------------- |
| `find_program_address(bytes32,(bytes)[])`         | `0x27e3edda` | `EthCall` | Solana `find_program_address` syscall yoluyla — döndürür `(pda, bump)`            |
| `create_program_address(bytes32,(bytes)[],uint8)` | `0xb99f29e1` | `EthCall` | Bilinen bir bump ile sabit sürede PDA türetimi                                    |
| `rome_evm_program_id()`                           | `0xb76fd45b` | `EthCall` | Bu Rome EVM programının Solana program kimliğini döndürür                         |
| `program_id()`                                    | `0x77764881` | `EthCall` | Rome'un Sistem Programı kimliğini döndürür (bu ön-derlemenin kimliği)             |
| `mint_id()`                                       | `0xe132a122` | `EthCall` | Zincirin gaz-token SPL mint genel anahtarını döndürür (`OwnerInfo.chain_mint_id`) |
| `operator()`                                      | `0x570ca735` | `EthCall` | Dış Rome işleminin Solana imzacısını döndürür                                     |
| `bytes32_to_base58(bytes32)`                      | `0xfa2b1a5f` | `EthCall` | Genel anahtar baytları → base58 dizesi                                            |
| `base58_to_bytes32(bytes)`                        | `0x5df01b72` | `EthCall` | base58 dizesi → genel anahtar baytları                                            |

## CpiProgram (`0xff00000000000000000000000000000000000008`)

**Çift amaçlı ön-derleme.** Aşağıdaki 7 seçiciden, **2'si gerçek Solana CPI gerçekleştirir** (`invoke`, `invoke_signed` — şu şekilde yönlendirilir: `Çağır`) ve **5'i saf çapraz-durum okumalarıdır** (`account_info`, `account_data_at`, `account_u64_at`, `account_lamports`, `pdas_batch_derive` — şu şekilde yönlendirilir: `CrossStateEthCall`syscall yok, yok `found_cpi` bayrağı ayarlı değil). Tarihsel "CPI shortcut selectors" ifadesi, okuma seçicilerini daha önceki CPI tabanlı okumaların CU tasarruflu yerine geçenleri olarak ifade ediyordu — kendileri **CPI değildir**. Tam davranış matrisi için bu bölümün üst kısmındaki belirsizliği giderme tablosuna bakın.

| Solidity imzası                                                | Seçici       | Dağıtım             | Açıklama                                                                                                                                                                                                                                                          |
| -------------------------------------------------------------- | ------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `invoke(bytes32,(bytes32,bool,bool)[],bytes)`                  | `0x7480cb86` | `Çağır`             | şu olarak imzalanmış CPI `EXTERNAL_AUTHORITY(caller)` ilgili hesap imzalayan olarak listelendiğinde (DELEGATECALL altında reddedilir); saltlı alt-PDA yok. Çağıran hedef program + hesap metaları + ix verisini geçirir                                           |
| `invoke_signed(bytes32,(bytes32,bool,bool)[],bytes,bytes32[])` | `0xb94f3733` | `Çağır`             | şu olarak imzalanmış CPI `EXTERNAL_AUTHORITY(caller)` doğrudan bir CALL üzerinde; saltlar her PDA tohumuna eklenir. DELEGATECALL altında çıplak çağıran yetkisi reddedilir ve saltlı tohumlar çalışan sözleşmenin adresini taşır — aşağıdaki türetim notuna bakın |
| `account_info(bytes32)`                                        | `0xc13465d9` | `CrossStateEthCall` | Bir Solana hesabının tam durumunu oku (lamport/sahip/bayraklar/veri)                                                                                                                                                                                              |
| `account_data_at(bytes32,uint16,uint16)`                       | `0x593762e8` | `CrossStateEthCall` | Herhangi bir Solana hesabının veri arabelleğinin bir dilimini oku                                                                                                                                                                                                 |
| `account_u64_at(bytes32,uint16)`                               | `0xb317d4c1` | `CrossStateEthCall` | Bilinen bir ofsette tiplenmiş u64 LE okuma — ABI gidiş-dönüşünü azaltır                                                                                                                                                                                           |
| `account_lamports(bytes32)`                                    | `0xde79ed54` | `CrossStateEthCall` | Yalnızca lamport probu — veri getirmeyi atlar                                                                                                                                                                                                                     |
| `pdas_batch_derive(bytes[][],bytes32)`                         | `0x944336f8` | `CrossStateEthCall` | Tek bir dağıtımda tek bir programa karşı N bağımsız PDA                                                                                                                                                                                                           |

## HelperProgram (`0xff00000000000000000000000000000000000009`)

ATA/PDA oluşturma, SPL transferleri/onaylama/mint ve çağıranın `EXTERNAL_AUTHORITY` PDA'sı tarafından imzalanan, gaz↔lamport dönüşümü, ATA-deposit ve SPL\_ERC20 yüzlü okumalar için Rome kullanıcıya dönük yardımcıları (`user_balance` / `allowance_of`). Her yöntem `not_payable`'dır; değişiklik yolları `Çağır` (tek CPI) üzerinden geçer, şu istisna hariç `deposit_from_ata` (`Bileşik`(yalnızca tek durumlu), üç salt-okuma `pda`/`ata` sorgusu (`EthCall`), ve iki çapraz-durum SPL\_ERC20 okuması (`CrossStateEthCall` — tek bir Solana hesap getirimi).

| Solidity imzası                                                  | Seçici       | Dağıtım             | Açıklama                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------------------------------------------------- | ------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `create_ata(address)`                                            | `0x5a7c3259` | `Çağır`             | EVM kullanıcısı için zincirin gaz mint'i altında ATA oluştur                                                                                                                                                                                                                                                                                                                                                                    |
| `create_ata(address,bytes32)`                                    | `0x3de2251a` | `Çağır`             | EVM kullanıcısı için keyfi bir mint altında ATA oluştur                                                                                                                                                                                                                                                                                                                                                                         |
| `create_ata_for_key(bytes32,bytes32)`                            | `0xd258a69d` | `Çağır`             | Sahip olarak keyfi bir ham Solana genel anahtarı için idempotent ATA oluşturma (türetilmiş olarak değil `external_auth`). Operatör kirayı öder. Şunun tarafından kullanılır `SPL_ERC20.bridgeOutToSolana` / `ensureRecipientAta` / `create_token_account` ham genel anahtar-alıcı akışları                                                                                                                                      |
| `create_pda(address)`                                            | `0xff3556ca` | `Çağır`             | Kullanıcının `EXTERNAL_AUTHORITY` PDA (kira muafiyeti)                                                                                                                                                                                                                                                                                                                                                                          |
| `create_pda(address,uint64)`                                     | `0x58e88298` | `Çağır`             | Aynısı, ancak şu miktarla fonlanmış `lamport` kira tabanının üzerinde                                                                                                                                                                                                                                                                                                                                                           |
| `swap_gas_to_lamports(uint64)`                                   | `0x6e3f24e0` | `Çağır`             | Çağıranın PDA'sını şu miktarla kredilendir: `n` işlemin Solana ücret ödeyicisinden gelen lamportlar; çağıran bunların bedelini Rome gazı ile öder (ödeyicinin herhangi bir legacy CPI içindeki lamport harcaması işlem ücretine eklenir)                                                                                                                                                                                        |
| `transfer_lamports(address,uint64)`                              | `0x5fe71665` | `Çağır`             | Çağıran PDA'sının ATA'sından başka bir EVM kullanıcısının PDA'sına lamportları taşı                                                                                                                                                                                                                                                                                                                                             |
| `transfer_spl(address,uint64)`                                   | `0xb12be5ba` | `Çağır`             | Çağıran PDA'sının ATA'sından hedef kullanıcının ATA'sına zincir-gaz SPL gönder                                                                                                                                                                                                                                                                                                                                                  |
| `transfer_spl(bytes32,uint64)`                                   | `0xba3a5eac` | `Çağır`             | Çağıran PDA'sının ATA'sından açıkça belirtilmiş bir ATA'ya zincir-gaz SPL gönder                                                                                                                                                                                                                                                                                                                                                |
| `transfer_spl(address,uint64,bytes32)`                           | `0x53b505e0` | `Çağır`             | Çağıran PDA'sının ATA'sından hedef kullanıcının ATA'sına rastgele mint'li SPL gönder                                                                                                                                                                                                                                                                                                                                            |
| `transfer_spl(bytes32,uint64,bytes32)`                           | `0xb6977879` | `Çağır`             | Çağıran PDA'sının ATA'sından açıkça belirtilmiş bir ATA'ya rastgele mint'li SPL gönder                                                                                                                                                                                                                                                                                                                                          |
| `transfer_spl(bytes32,bytes32,uint64,bytes32)`                   | `0x766b362a` | `Çağır`             | Delege varyantı — çağıran sağlar `src_ata` (PDA'ya ait olmalı VEYA PDA yeterli `delegated_amount`)                                                                                                                                                                                                                                                                                                                              |
| `transfer_spl(address,address,uint64,bytes32)`                   | `0xe479df56` | `Çağır`             | Adres anahtarlı delege varyantı — her iki ATA'yı da EVM adreslerinden dahili olarak türetir. Şu şekilde imzalar `external_auth(caller)`; SPL Token, PDA'yı sahip YA DA delege olarak kabul eder. Şurada kullanılır: `SPL_ERC20.transferFrom`                                                                                                                                                                                    |
| `transfer_spl_to_signer(uint64,bytes32)`                         | `0x46efa679` | `Çağır`             | Solana'ya özgü çıkış ayağı. Şunu gönderir: `miktar` ile `mint` çağıran PDA'sının ATA'sından **dış Solana imzacısının** bu mint için ATA'sına (kullanıcının kendi cüzdanı — EVM adresi dönüşümü yok). Onay gerekmez — kaynak ATA çağıran-PDA'ya aittir. Şununla eşleştirilir: `ActivateAta` (slot 18) + `DoTxUnsigned` (slot 17) — uçtan uca yalnızca Solana anahtarıyla EVM kullanımı için                                      |
| `approve_spl(address,uint64,bytes32)`                            | `0xabf6f675` | `Çağır`             | Çağıran-PDA-sahibi olarak şunu ayarlar `delegate_pda(spender)` SPL üzerinden sahip olunan ATA üzerinde `approve_checked`. Şunun tarafından kullanılır `SPL_ERC20.approve`                                                                                                                                                                                                                                                       |
| `approve_spl_raw_delegate(bytes32,bytes32,uint64,bytes32,uint8)` | `0x7881d453` | `Çağır`             | SPL `approve_checked` çağıranın sağladığı ham genel anahtar delege ile (örn. Wormhole `authority_signer` PDA, bunun EVM adresi karşılığı yok). Çağıran şunu geçirir: `ondalıklar` zincir üzerindeki mint okumayı atlamak için (\~30-50K CU tasarrufu). Sabit kodlu `spl_program = SPL Token`. Şunun tarafından kullanılır `RomeBridgeWithdraw.approveBurnETH`                                                                   |
| `mint_spl(address,uint64,bytes32)`                               | `0xd795522b` | `Çağır`             | Çağıran-PDA-sahibi mint yetkilisi olarak SPL üzerinden hedef kullanıcının ATA'sına mint eder `mint_to_checked`. SPL çalışma zamanı yetki eşleşmesini zorunlu kılar. Şurada kullanılır: `SPL_ERC20.mint_to`                                                                                                                                                                                                                      |
| `create_mint_account(bytes32)`                                   | `0xe97d3291` | `Çağır`             | Salt'tan türetilmiş bir PDA ayıran System CreateAccount (`external_auth_with_salt(caller, salt)`) 82 baytlık alanla, SPL Token'a ait. Fonlayıcı = çağıranın external\_auth PDA'sı. İki PDA imzacısı. Şurada kullanılır: `ERC20SPLFactory.create_token_mint`                                                                                                                                                                     |
| `init_spl_mint(bytes32,uint8,bytes32,bool,bytes32)`              | `0x4f75e987` | `Çağır`             | SPL Token `InitializeMint2` önceden ayrılmış mint'e karşı. PDA imzacısı yok (mint\_authority/freeze\_authority veri olarak saklanır, çalışma zamanı imzacısı olarak değil). Şurada kullanılır: `ERC20SPLFactory.init_token_mint`                                                                                                                                                                                                |
| `create_and_init_mint(uint8,bytes32,bool,bytes32,bytes32)`       | `0x20972d0f` | `Bileşik`           | Birleşik: System CreateAccount + SPL InitializeMint2 tek bir dispatch'te. Ayrı ayrı çağrılara kıyasla 1 Rome DoTx zarfı tasarruf eder `create_mint_account` + `init_spl_mint` çağrılar                                                                                                                                                                                                                                          |
| `deposit_from_ata(uint256)`                                      | `0x4479b709` | `Bileşik`           | Çağıranın ATA'sından Rome yerel gazına SPL çek. **Yalnızca tek durumlu** — op-geth zincirlerinde reddedilir                                                                                                                                                                                                                                                                                                                     |
| `pda(address)`                                                   | `0x8854a299` | `EthCall`           | Kullanıcının `EXTERNAL_AUTHORITY` PDA — salt okunur                                                                                                                                                                                                                                                                                                                                                                             |
| `pda_with_salt(address,bytes32)`                                 | `0x5c6d04b3` | `EthCall`           | Salt'tan türetilmiş `EXTERNAL_AUTHORITY` PDA'yı tek bir dispatch içinde. Solidity tarafındaki 2 çağrılı `rome_evm_program_id() + find_program_address()` bileşimini ortadan kaldırır. Şurada kullanılır: `RomeEVMAccount.pda_with_salt`, `RomeBridgeWithdraw.{burnUSDC,burnETH}`                                                                                                                                                |
| `ata(address)`                                                   | `0x31db4f82` | `EthCall`           | Türet `getATA(user_pda, chain_mint_id)` — EXT\_AUTH + ATA'yı birleştirir — salt okunur                                                                                                                                                                                                                                                                                                                                          |
| `ata(address,bytes32)`                                           | `0xfeb1c647` | `EthCall`           | Aynısı, açık bir mint ile — salt okunur                                                                                                                                                                                                                                                                                                                                                                                         |
| `user_balance(address,bytes32)`                                  | `0xdd0119c8` | `CrossStateEthCall` | Kullanıcı ATA'sını oku `miktar` (SPL TokenAccount ofseti 64). ATA yoksa 0 döndürür (yeni zincir sorgusu). 3 v1 dispatch'ini birleştirir. Şurada kullanılır: `SPL_ERC20.balanceOf`                                                                                                                                                                                                                                               |
| `mint_info(bytes32)`                                             | `0xe24bf5d4` | `CrossStateEthCall` | Legacy yolundaki bir çağıran için mint bilgileri: token programı, ondalıklar, **silahlandırılmış** hook programı (yoksa 0 *veya* (etkisiz), geçerli epoch ücret bps'si, uzantı-varlığı bit haritası. Şurada yansıtılır: `SplCached` aynı seçicide. `feeBps` bir **yüklem** — bir ücretin etkin olduğunu söyler, bir operand değildir; çünkü gerçek ücret şununla sınırlandırılır: `maximum_fee` ki bunu kasıtlı olarak taşımaz. |
| `allowance_of(address,address,bytes32)`                          | `0xed72dbc8` | `CrossStateEthCall` | Sahip ATA'sının delegated\_amount değerini şununla oku: **delege eşitlik kontrolü** — zincir üzerindeki delege şuna eşit olmadıkça 0 döndürür: `external_auth(spender)`. ERC-20 anlamsal olarak doğru (KESİN GEREK). Şurada kullanılır: `SPL_ERC20.allowance`                                                                                                                                                                   |

## Çekim (`0x4200000000000000000000000000000000000016`)

Rome → Solana yerel gaz çekimi.

| Solidity imzası            | Seçici       | Dağıtım                  | Açıklama                                                                                                                |
| -------------------------- | ------------ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `withdrawal(bytes32)`      | `0x4d8b0ea4` | `Bileşik` (`ödenebilir`) | Yakım `msg.value` Rome gazı; bir Solana sistem hesabına mint et + transfer et `buna`. Tek ödenebilir precompile yöntemi |
| `withdraw_to_pda(uint256)` | `0x7f3124a0` | `Bileşik`                | Gazı yak; çağıranın `EXTERNAL_AUTHORITY` PDA'sına. **Yalnızca tek durumlu**                                             |
| `withdraw_to_ata(uint256)` | `0x8059abc0` | `Bileşik`                | Gazı yak; şuraya yatır: `getATA(caller_pda, chain_mint_id)`. **Yalnızca tek durumlu**                                   |


---

# 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/referans/precompiles.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.
