For the complete documentation index, see llms.txt. This page is also available as Markdown.

Interop Token

Bagaimana token ERC-20 dan SPL adalah akun dasar yang sama di Rome.

Rome merepresentasikan token ERC-20 dan token SPL dasarnya sebagai satu akun bersama. Halaman ini menjelaskan bagaimana token bekerja di seluruh EVM dan Solana.

Model state bersama

Rome tidak mengunci token di satu sisi dan mencetak salinan terbungkus di sisi lain. Sebuah token ERC-20 di Rome adalah sebuah pembungkus transparan di atas akun token SPL di Solana — saldo ERC-20 adalah saldo SPL.

An ERC-20 wrapper over the same SPL token account on Solana
  • Tidak ada penundaan bridging — saldo ERC-20 adalah saldo SPL

  • Tidak ada fragmentasi likuiditas — DeFi di kedua sisi melihat token yang sama

  • Tidak ada risiko bridge — tidak ada escrow terpisah yang bisa dieksploitasi

Path impor di bawah menggunakan @rome-protocol/rome-solidity. Publikasi npm masih tertunda; hari ini Anda menggunakan ini dari publik rome-solidity repo (dependensi git atau antarmuka yang disalin). Antarmuka precompile berada di contracts/interface.sol.

Kontrak pembungkus

SPL_ERC20 (dan varian track cached-nya SPL_ERC20_cached, yang saat ini di-deploy oleh factory) menyediakan antarmuka ERC-20 lengkap di atas mint SPL:

  • balanceOf() — membaca saldo ATA pengguna dari Solana

  • transfer() — memindahkan token di Solana

  • approve() / allowance() — menggunakan penyimpanan EVM (SPL tidak memiliki allowance bergaya EVM)

  • totalSupply() — membaca pasokan mint SPL

Pabrik

ERC20SPLFactory mendeploy pembungkus untuk setiap mint SPL:

Alamat factory aktif: Hadrian 0x86149124d74ebb3aa41a19641b700e88202b6285, Martius 0xd7aeeedca26cdd4d34eb7c21110af2e590a8c58a. Selalu verifikasi terhadap registry — ini adalah sumber kebenaran untuk alamat yang di-deploy.

Mint kanonik

Tidak ada kontrak registry token on-chain. Wrapper kanonik dan token gas/bridge dikurasi di rome-protocol/registry; wrapper tanpa izin yang dibuat melalui add_spl_token_no_metadata ditemukan dari event on-chain TokenCreated event. Ini menjaga setiap aset dipetakan ke satu mint SPL kanonik tanpa memfragmentasi likuiditas.

Operasi SPL dari Solidity

Untuk primitive SPL yang ditandatangani user-PDA, gunakan HelperProgram precompile (0xFF…09) — pembuatan ATA, transfer SPL, dan konversi gas↔lamports:

transfer_spl memiliki beberapa overload (termasuk varian delegate untuk transferFrom aliran); lihat interface.sol untuk tanda tangan yang tepat. Pada track cached, operasi yang setara berada di ISplCached (0xFF…05) dan IAssociatedSplCached (0xFF…06). Sebuah kontrak menggunakan satu track secara konsisten.

Deposit dan penarikan

  • Ke EVM — sisi SPL mengkredit ATA milik PDA pengguna; pembungkus ERC-20 segera merefleksikan saldo. Transfer masuk lintas-chain diselesaikan tanpa perlu percaya melalui otorisasi yang ditandatangani pengguna pada bridge.

  • Ke Solana — panggil Withdraw precompile (0x42…16): withdraw_to_pda / withdraw_to_ata memindahkan token dari PDA pengguna kembali ke Solana. Jalur wrap-gas-ke-SPL adalah withdraw_to_ata.

Token gas

Setiap chain memiliki token gas-nya sendiri — sembarang token SPL, diberi harga melalui pool Meteora DAMM (v1 atau v2, dapat dikonfigurasi). Chain publik (Martius, Hadrian) menggunakan USDC. Tidak ada token gas default universal.

Batasan

  • Jumlah token SPL adalah uint64 (maksimal 18,446,744,073,709,551,615)

  • Allowances menggunakan penyimpanan EVM, bukan delegate Solana

  • Simbol pembungkus ERC-20 harus unik per factory

Apa Selanjutnya

Terakhir diperbarui

Apakah ini membantu?