﻿---
title: "Chain ID"
description: "Panduan yang mengutamakan verifikasi tentang chain ID EVM, domain anti-replay transaksi legacy EIP-155, transaksi bertipe, CHAINID, pemeriksaan dompet dan RPC, domain EIP-712, serta pengenal jaringan non-EVM."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chain ID

> Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

<a id="answer"></a>

## Jawaban langsung

Dalam ekosistem EVM, chain ID adalah bilangan bulat yang dikonfigurasi sebagai parameter domain anti-replay. EIP-155 mengikatnya ke tanda tangan transaksi legacy yang terlindungi; format transaksi bertipe seperti tipe 2 menyertakannya dalam payload bertanda tangan sendiri; `CHAINID` mengeksposnya selama eksekusi EVM; dan `eth_chainId` melaporkannya melalui JSON-RPC. Semua ini adalah antarmuka yang saling berkaitan, bukan sertifikat identitas universal.

Nilainya tidak dijamin unik secara global maupun permanen. Jaringan privat dan fork yang dipersengketakan dapat menggunakannya kembali, RPC dapat berbohong, dan alamat yang sama dapat memiliki kode serta state berbeda pada chain berbeda. EIP-712 memiliki field chain ID opsional dalam domain, sedangkan pesan mentah dan sistem non-EVM memiliki aturan replay dan identitas jaringan yang berbeda. Penggunaan yang benar karena itu memerlukan skema penandatanganan, endpoint, genesis atau checkpoint, dan domain aplikasi yang tepat.

<a id="mechanism"></a>

## Cara kerja

1. Identifikasi dahulu ekosistem dan makna pengenalnya: bilangan bulat EIP-155 untuk EVM, domain EIP-712, referensi dengan namespace CAIP-2, chain ID string Cosmos, genesis hash Solana, atau skema lain. Jangan pernah membandingkan angka tanpa kualifikasi lintas ekosistem.
2. Tetapkan snapshot jaringan tepercaya: URL RPC, chain ID yang diharapkan dalam desimal dan heksadesimal, genesis atau checkpoint final, blok head, konfigurasi client, `codeHash` kontrak utama, serta waktu sumber. Nama dan ikon jaringan pada dompet merupakan metadata yang tidak tepercaya.
3. Minta `eth_chainId` untuk penandatanganan EVM dan parse kuantitas heksadesimal JSON-RPC tanpa kehilangan presisi. Bandingkan bilangan bulat yang telah dinormalisasi dengan konfigurasi yang diharapkan dan state provider dompet; jangan menggantinya dengan `net_version`, dan tolak ketidakcocokan sebelum membuat tanda tangan.
4. Rekonstruksi domain penandatanganan secara tepat. Bedakan transaksi legacy tanpa perlindungan, encoding legacy terlindungi EIP-155, dan envelope bertipe; untuk EIP-712, verifikasi field domain, `verifyingContract`, nonce, dan tenggat; untuk intent yang direlay atau smart account, periksa hash protokol internal.
5. Verifikasi target eksekusi pada chain aktif: penerima, nilai, calldata, alamat token, kode kontrak atau implementasi proxy, nonce akun, biaya, dan state simulasi. Chain ID memisahkan domain, tetapi tidak membuktikan bahwa objek-objek tersebut asli.
6. Perlakukan EIP-1193 `chainChanged`, perubahan akun, dan diskoneksi sebagai batas state yang tegas. Buang quote, allowance, nonce, simulasi, dan permintaan tanda tangan yang tersimpan; baca ulang chain dan target; lalu broadcast hanya transaksi mentah yang telah ditinjau ke endpoint yang ditetapkan.
7. Rekonsiliasi transaksi pada chain yang dimaksud: byte mentah bertanda tangan dan hash, penerimaan RPC, status receipt, nomor dan hash blok, penggunaan nonce, perubahan state, serta finalitas yang diperlukan. Pantau pemisahan chain, perubahan ID, kekeliruan domain L1/L2, dan pergeseran provider; hentikan jika ada perbedaan yang tidak dapat dijelaskan.

<a id="example"></a>

## Contoh perhitungan

- **Gerbang RPC heksadesimal dan desimal.** Base memiliki chain ID desimal `8453`, yang dilaporkan `eth_chainId` sebagai `0x2105`: `2 * 4096 + 1 * 256 + 0 * 16 + 5 = 8453`. Ethereum mainnet adalah `1 = 0x1`, dan Arbitrum One adalah `42161 = 0xa4b1`. Jika dompet mengharapkan `8453` tetapi menerima `0x1`, dompet harus membatalkan sebelum menandatangani, bukan memercayai nama jaringan yang ditampilkan.
- **Nilai v transaksi legacy terlindungi.** Untuk transaksi legacy EIP-155, `v = 35 + 2 * chainId + yParity`. Dengan chain ID `1`, nilainya `37` atau `38`; dengan chain ID `61`, nilainya `157` atau `158`. Sebaliknya, `floor((37 - 35) / 2) = 1`. Aritmetika ini tidak berlaku untuk field y-parity transaksi bertipe atau tanda tangan legacy tanpa perlindungan yang memakai `27` atau `28`.
- **Transaksi bertipe dan penolakan oleh chain yang salah.** Payload tipe 2 mengikat `chain_id=8453`. Dengan `21,000 gas`, base fee `20 gwei`, maximum priority fee `2 gwei`, dan maximum fee `30 gwei`, harga gas efektif adalah `min(30, 20 + 2) = 22 gwei` dan biayanya `21,000 * 22 gwei = 0.000462 ETH`. Chain yang menerapkan aturan dengan benar dan dikonfigurasi sebagai ID `1` menolak payload bertanda tangan tersebut karena domain tidak cocok, sehingga penolakan itu sendiri tidak memakai gas on-chain di sana; transaksi masih dapat gagal karena alasan lain pada ID 8453.
- **Non-EVM dan dua pengenal.** Deployment Cosmos EVM dapat memakai ID string Cosmos SDK `local-1` dan ID integer EVM independen `262144 = 0x40000`. Penandatanganan native Cosmos memakai string tersebut bersama nomor akun dan sequence, sedangkan penandatanganan transaksi EVM memakai domain bilangan bulat. Solana sebaliknya mengekspos genesis hash dan memakai recent blockhash atau durable nonce dalam pesan transaksi, bukan bilangan bulat EIP-155.

<a id="risks"></a>

## Risiko

- Terhubung ke endpoint RPC yang salah atau chain dompet aktif yang tidak dimaksud.
- Memercayai RPC berbahaya yang berbohong tentang chain ID, state, atau hasil broadcast.
- Tertukar antara representasi chain ID heksadesimal dan desimal.
- Kehilangan presisi saat mem-parse chain ID besar dengan tipe angka yang tidak aman.
- Memakai `net_version` seolah selalu sama dengan `eth_chainId`.
- Melewatkan event EIP-1193 `chainChanged` atau race saat pergantian jaringan.
- Menggunakan ulang nonce, quote, approval, atau simulasi tersimpan setelah pergantian.
- Menganggap chain ID terdaftar global dan bebas benturan.
- Menandatangani lintas jaringan privat atau fork yang memakai ulang satu chain ID.
- Tidak menentukan tindakan ketika fork mengubah atau mempertahankan ID.
- Menerima transaksi legacy tanpa perlindungan dan tanpa domain EIP-155.
- Menerapkan rumus legacy `v` pada transaksi bertipe atau tanda tangan lain.
- Menganggap pesan mentah atau permintaan `personal_sign` menyertakan domain chain.
- Menghilangkan atau salah meng-encode chain ID dalam domain EIP-712.
- Menghilangkan `verifyingContract`, nonce aplikasi, tenggat, atau tujuan.
- Memercayai alamat kontrak identik tanpa membandingkan kode dan state.
- Tertukar antara domain penandatanganan L1, L2, asal bridge, dan tujuan.
- Mengabaikan domain internal intent yang direlay, permit, atau operasi smart account.
- Menganggap metadata penambahan jaringan, label explorer, atau ikon sebagai autentikasi jaringan.
- Menerapkan semantik EVM pada Cosmos, Solana, Bitcoin, atau protokol lain.

<a id="misconceptions"></a>

## Kesalahpahaman umum

- Chain ID adalah nomor registrasi resmi yang unik secara global dan permanen.
- Chain ID yang benar membuktikan keaslian endpoint RPC, jaringan, dan kontrak.
- Setiap tanda tangan Ethereum otomatis mengikat chain ID.
- Chain ID berbeda mencegah replay setiap pesan bertanda tangan dan intent aplikasi.
- Setiap blockchain memakai chain ID bilangan bulat bergaya EIP-155.

<a id="related"></a>

## Topik terkait

- [Tanda tangan bertipe EIP-712](/id/crypto/eip712-typed-signature/)
- [Tanda tangan dompet](/id/crypto/wallet-signature/)
- [Node RPC](/id/crypto/rpc-node/)

<a id="sources"></a>

## Sumber

- [EIP-155: Simple replay attack protection](https://eips.ethereum.org/EIPS/eip-155) - Ethereum Improvement Proposals (diakses: 2026-08-12)
- [EIP-1559: Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) - Ethereum Improvement Proposals (diakses: 2026-08-12)
- [EIP-1344: ChainID opcode](https://eips.ethereum.org/EIPS/eip-1344) - Ethereum Improvement Proposals (diakses: 2026-08-12)
- [EIP-1193: Ethereum Provider JavaScript API](https://eips.ethereum.org/EIPS/eip-1193) - Ethereum Improvement Proposals (diakses: 2026-08-12)
- [EIP-3085: wallet_addEthereumChain RPC Method](https://eips.ethereum.org/EIPS/eip-3085) - Ethereum Improvement Proposals (diakses: 2026-08-12)
- [EIP-712: Typed structured data hashing and signing](https://eips.ethereum.org/EIPS/eip-712) - Ethereum Improvement Proposals (diakses: 2026-08-12)
- [CAIP-2: Blockchain ID Specification](https://standards.chainagnostic.org/CAIPs/caip-2) - Chain Agnostic Improvement Proposals (diakses: 2026-08-12)
- [getGenesisHash RPC Method](https://solana.com/docs/rpc/http/getgenesishash) - Solana Documentation (diakses: 2026-08-12)

Source: https://wiki.fcontext.com/id/crypto/chain-id/index.mdx
