﻿---
title: "Model state berbasis akun"
description: "Memahami model akun Ethereum melalui field akun, akar state dan penyimpanan, eksekusi transaksi berurutan, gas dan revert, penyimpanan token, delegasi EIP-7702, access list, trace, dan finalitas."
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.

# Model state berbasis akun

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

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

## Jawaban langsung

Model berbasis akun merepresentasikan state eksekusi sebagai data yang diberi kunci berdasarkan alamat. Pada execution layer Ethereum, leaf akun berisi `[nonce, balance, storageRoot, codeHash]`. `balance` native dinyatakan dalam wei; data kontrak berada di balik `storageRoot` akun tersebut; dan `stateRoot` blok mengikat world state hasil eksekusi. Dompet, penyedia RPC, atau explorer membaca dan menafsirkan state ini, tetapi tidak menyimpan saldo kanonis atas nama pengguna.

Saldo ERC-20, allowance, utang pinjaman, dan agunan biasanya merupakan nilai di dalam penyimpanan kontrak, bukan field tambahan pada akun protokol pemegangnya. Demikian pula, “transaksi internal” pada explorer umumnya adalah message call EVM yang direkonstruksi melalui trace, bukan transaksi Ethereum bertanda tangan terpisah dengan hash transaksi dan nonce pengirim sendiri.

Pembedaan tradisional antara externally owned account (EOA) dan akun kontrak masih berguna, tetapi “EOA selalu memiliki code kosong” tidak lagi mutlak pada chain yang mengaktifkan EIP-7702. EOA dapat memuat indikator delegasi `0xef0100 || address` dan mengeksekusi code delegate sembari mempertahankan kewenangan transaksi EOA. Karena itu, klasifikasi harus memakai aturan chain dan code akun aktual, bukan label UI lama.

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

## Audit transisi state dalam tujuh langkah

1. Tetapkan titik observasi: jaringan, `chainId`, aturan fork, nomor dan hash blok, timestamp, serta tag blok seperti `pending`, `latest`, `safe`, atau `finalized`. State dekat head dapat berubah setelah reorganisasi; jangan gabungkan fakta dari blok berbeda tanpa label.
2. Baca field akun protokol: `nonce`, `balance` native, `storageRoot`, dan `codeHash`. Jika code merupakan indikator delegasi EIP-7702, selesaikan alamat delegate menurut aturan fork tersebut. Untuk proxy dan akun terdelegasi, identifikasi secara terpisah code implementasi, kendali upgrade, dan tata letak penyimpanan.
3. Temukan saldo aplikasi. ETH mengubah saldo native; saldo ERC-20 biasanya mengubah mapping di penyimpanan kontrak token; allowance, utang, agunan, dan reward dapat berada di kontrak dan slots lain. Decimals token dan logs membantu interpretasi, bukan field tambahan pada leaf akun.
4. Dekode dan periksa transaksi top-level: jenis, domain chain, tanda tangan, nonce pengirim, penerima atau pembuatan, value, input, batas gas, batas biaya, serta access list opsional atau otorisasi EIP-7702. Pengirim harus mampu menutup value dan komitmen biaya maksimum. Transaksi yang ditolak tidak dimasukkan dan tidak memakai gas on-chain.
5. Eksekusi transaksi sesuai urutan blok dari state sebelumnya. EVM memproses message call bertingkat dan frame pembuatan kontrak, masing-masing dengan caller, callee, value, calldata, gas, dan status pengembalian. Pembacaan serta penulisan bersama membuat hasil bergantung pada urutan. Access list EIP-2930 memanaskan akun dan slots yang disebut serta mengubah akuntansi gas; daftar itu tidak melarang akses yang tidak dideklarasikan dan tidak membuktikan paralelisme aman.
6. Terapkan batas commit dan rollback. Frame sukses mengikat state dan logs kecuali parent kemudian revert. `REVERT` membatalkan penulisan, transfer value, dan logs frame gagal sambil mengembalikan gas yang belum dipakai; kontrak luar dapat menangkap kegagalan child call dan tetap sukses. Kegagalan top-level yang telah dimasukkan memiliki receipt `status = 0`, tetapi nonce transaksi pengirim bertambah dan gas yang terpakai tetap dibayar. Pemrosesan otorisasi EIP-7702 memiliki aturan persistensi sendiri meski eksekusi berikutnya revert.
7. Rekonsiliasi post-state. Cocokkan perubahan saldo native dan token, perubahan penyimpanan, status receipt, gas terpakai, harga gas efektif, logs, dan trace penyedia dengan root yang diikat blok. Perlakukan traces sebagai rekonstruksi penyedia, bukan transaksi konsensus terpisah. Tunggu finalitas yang diperlukan, lalu tangani replacement, reorg, revisi indexer, bridge, rollups, dan pembalikan akuntansi secara eksplisit.

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

## Empat contoh terhitung

- **Transfer ETH EIP-1559.** A mulai dengan `5 ETH` dan nonce `12`; B mulai dengan `1 ETH`. A mengirim `1 ETH` memakai `21,000 gas`, dengan base fee `20 gwei`, priority cap `3 gwei`, dan max fee `40 gwei`. Harga gas efektif ialah `min(40, 20 + 3) = 23 gwei`; total biaya `21,000 × 23 gwei = 0.000483 ETH`, terdiri dari burn base fee `0.000420 ETH` dan priority fee `0.000063 ETH`. Kebutuhan maksimum saat penandatanganan ialah `1 ETH + 21,000 × 40 gwei = 1.000840 ETH`. Saldo akhir A `3.999517 ETH`, B `2 ETH`, dan nonce A `13`.
- **Transaksi masuk blok tetapi revert.** A mulai dengan `2 ETH` dan nonce `7`. A memanggil kontrak dengan `0.50 ETH`; eksekusi top-level revert setelah `80,000 gas` pada harga efektif `25 gwei`, sehingga biayanya `80,000 × 25 gwei = 0.002000 ETH`. Penulisan penyimpanan kontrak, logs, dan transfer `0.50 ETH` dibatalkan, sedangkan A berakhir dengan `1.998000 ETH`, nonce `8`, dan receipt `status = 0`. Kegagalan child call yang ditangkap A dapat sebaliknya berdampingan dengan receipt luar `status = 1`.
- **Saldo token adalah penyimpanan kontrak.** Kontrak token mencatat Alice `1,000 units` dan Bob `200 units`. Transfer sukses `250 units` menghasilkan Alice `750 units` dan Bob `450 units`, mempertahankan `1,200 units`. Jika transaksi top-level Alice memakai `60,000 gas × 20 gwei = 0.001200 ETH`, saldo ETH native miliknya turun terpisah sebesar biaya tersebut. `storageRoot` akun token dan `stateRoot` global berubah; pokok token tidak pernah menjadi saldo native akun Alice.
- **Batas persistensi EIP-7702.** Sponsor mengirim transaksi set-code berisi otorisasi dari akun A pada nonce `5` untuk mendelegasikan ke implementasi D. Protokol menulis indikator `23-byte`, yaitu `0xef0100 || 20-byte address`, dan menaikkan nonce otoritas A menjadi `6`. Jika eksekusi berikutnya di transaksi luar itu revert, indikator delegasi dan nonce otorisasi yang sudah diproses tetap bertahan. Batas rollback ini berbeda dari penyimpanan EVM biasa yang ditulis oleh call gagal.

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

## Risiko dan pengendalian

- Membaca chain, fork, hash blok, atau tag blok yang salah menghasilkan snapshot state yang tidak konsisten.
- RPC yang usang atau tidak tepercaya dapat menghilangkan, tertinggal, atau salah melaporkan state head.
- Perlombaan, gap, dan replacement pending nonce dapat menggagalkan asumsi antrean.
- “Cancel” pada dompet biasanya transaksi replacement, bukan penghapusan tingkat protokol.
- Saldo yang tidak cukup untuk value ditambah biaya maksimum mencegah transaksi masuk blok.
- Pergerakan base fee atau kesalahan fee cap dapat menunda inclusion atau mengubah biaya.
- Code EIP-7702 dapat membuat EOA salah diklasifikasikan oleh heuristik akun lama.
- Delegate berbahaya, cacat inisialisasi, atau replay otorisasi dapat membahayakan akun EIP-7702.
- Upgrade proxy dan delegate calls dapat mengubah interpretasi code dan penyimpanan seiring waktu.
- Kesalahan kunci, domain tanda tangan, atau chain ID dapat mengizinkan pencurian atau replay.
- Reentrancy dan urutan shared state dapat mengubah saldo dalam satu eksekusi.
- Child call dapat gagal dan ditangkap sementara transaksi luar tetap melaporkan sukses.
- Revert top-level atau out-of-gas tetap memakai gas dan menaikkan nonce pengirim.
- Decimals token, fee-on-transfer, rebasing, dan hooks dapat membatalkan aritmetika saldo sederhana.
- Allowance, utang, agunan, dan reward dapat terlewat jika hanya saldo dompet yang direkonsiliasi.
- Logs dapat tidak ada, dibatalkan, menyesatkan, atau tidak cukup membuktikan state akhir.
- “Transaksi internal” explorer dan traces penyedia dapat berbeda karena merupakan tampilan rekonstruksi.
- Access list dapat tidak lengkap, terduplikasi, atau tidak ekonomis dan tidak mengunci read/write set.
- Urutan shared state, priority fees, dan MEV dapat mengubah hasil eksekusi.
- Reorg, pruning, proofs yang tidak tersedia, transisi sistem L2, dan finalitas bridge dapat membalik atau mengaburkan akuntansi.

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

## Kesalahpahaman umum

- “Dompet menyimpan saldo on-chain.” Dompet menyimpan kredensial dan menyajikan state yang diperoleh dari jaringan.
- “Setiap alamat selamanya merupakan EOA tanpa code atau kontrak biasa.” Delegasi EIP-7702 mengubah heuristik code tersebut.
- “Setiap transfer yang ditampilkan adalah transaksi Ethereum terpisah.” Event token dan trace message call internal bukan transaksi top-level bertanda tangan.
- “Transaksi gagal tidak mengubah apa pun dan tidak memerlukan biaya.” Kegagalan yang masuk blok dapat memakai gas dan menaikkan nonce pengirim.
- “Model akun atau access list menjamin eksekusi paralel yang lebih cepat daripada UTXO.” Kinerja dan konflik bergantung pada keseluruhan protokol dan beban kerja.

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

## Topik terkait

- [State root](/id/crypto/state-root/)
- [Model UTXO](/id/crypto/utxo-model/)
- [Abstraksi akun](/id/crypto/account-abstraction/)

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

## Sumber

- [Ethereum accounts](https://ethereum.org/developers/docs/accounts/)
- [Ethereum Yellow Paper: a formal specification of Ethereum, a programmable blockchain](https://ethereum.github.io/yellowpaper/paper.pdf)
- [Transactions](https://ethereum.org/developers/docs/transactions/)
- [Blocks](https://ethereum.org/developers/docs/blocks/)
- [Merkle Patricia Trie](https://ethereum.org/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)
- [EIP-7702: Set Code for EOAs](https://eips.ethereum.org/EIPS/eip-7702)
- [EIP-2930: Optional access lists](https://eips.ethereum.org/EIPS/eip-2930)
- [Proof-of-stake (PoS)](https://ethereum.org/developers/docs/consensus-mechanisms/pos/)

Source: https://wiki.fcontext.com/id/crypto/account-based-model/index.mdx
