Anggaran Komputasi

Setiap transaksi Solana memiliki anggaran komputasi yang diukur dalam Compute Units (CU). Memahami biaya CU membantu Anda merancang kontrak Rome yang efisien.

Ikhtisar Anggaran

Mode
CU Maks
Catatan

Atomik (VmAt)

~1.400.000 CU

Satu transaksi Solana

Iteratif (VmIt)

Tidak terbatas (multi-tx)

~500 opcode per langkah iterasi

Setiap transaksi Solana memiliki anggaran default 200.000 CU, yang dapat diperluas hingga ~1,4 juta CU melalui instruksi compute budget (ditambahkan secara otomatis oleh Rome SDK).

Perkiraan Biaya CU

Operasi EVM

Operasi
Perkiraan CU
Catatan

Verifikasi tanda tangan (ecrecover)

~5.000 CU

secp256k1 melalui syscall Solana

Transfer sederhana

~50.000-100.000 CU

Hanya pembaruan saldo

Transfer ERC-20

~100.000-150.000 CU

Termasuk panggilan precompile SPL

Penyebaran kontrak (kecil)

~200.000-400.000 CU

Tergantung pada ukuran bytecode

Penulisan penyimpanan (SSTORE)

~5.000-20.000 CU

Akses dingin vs hangat

Operasi CPI

Operasi
Perkiraan CU
Catatan

Overhead dasar transfer hook

100.000 CU

Per transfer

Sub-hook native

50.000 CU

Per hook Solana native

Sub-hook EVM

200.000 CU

Per hook EVM

Transfer EVM yang direkomendasikan dengan hook

800.000 CU

Anggaran aman untuk transfer dengan hook

Operasi Precompile

Precompile
Perkiraan CU

ecrecover

~3.000-5.000 CU

SHA-256

~1.000 CU

BN254 ecAdd

~10.000 CU

BN254 ecMul

~40.000 CU

BN254 ecPairing

~200.000+ CU

Teknik Optimisasi

1. Gunakan Yul untuk Jalur Panas

Optimizer Solidity menghasilkan kode yang cukup baik, tetapi Yul (inline assembly) dapat secara signifikan mengurangi CU untuk operasi kritis:

2. Cache Derivasi PDA

Derivasi PDA melalui find_program_address cukup mahal. Simpan PDA yang telah diturunkan di penyimpanan kontrak, bukan menghitungnya pada setiap panggilan:

3. Hardcode ID Program yang Diketahui

Jangan muat ID program dari penyimpanan — gunakan konstanta:

4. Minimalkan Jumlah Akun

Setiap akun dalam transaksi Solana menambah overhead CU. Kurangi jumlah akun dengan:

  • Mengelompokkan operasi yang berbagi akun

  • Menggunakan lebih sedikit akun perantara

  • Menghindari pemeriksaan pembuatan ATA yang redundan

5. Gunakan Pengaturan Optimizer

Mengukur Konsumsi CU

Gunakan eth_estimateGas untuk mengukur CU sebelum mengirim:

Atau melalui ethers.js:

Berikutnya

Terakhir diperbarui

Apakah ini membantu?