Skip to content
Back to skills

Money Ethereum

ASecurity

Use when working with Ethereum — the account and world-state model, the EVM, proof of stake and the two-process node, the upgrade timeline, gas and transaction types, Solidity and Foundry, contract security and the access-control losses that dominate 2026 incident data, DeFi primitives, L2s and MEV. Companion to the other money-on-the-internet skills.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsrustgonodetestingdebuggingapifrontendsecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add the-vibey-project/vibey --skill money-ethereum --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Money Ethereum?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Money Ethereum
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/the-vibey-project-money-ethereum/badge)](https://www.skillsdirectory.com/skills/the-vibey-project-money-ethereum)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: money-ethereum
description: "Use when working with Ethereum — the account and world-state model, the EVM, proof of stake and the two-process node, the upgrade timeline, gas and transaction types, Solidity and Foundry, contract security and the access-control losses that dominate 2026 incident data, DeFi primitives, L2s and MEV. Companion to the other money-on-the-internet skills."
---

# Ethereum

> **Part 3 of 7** of the *Money on the Internet* reference (plugin
> `money-on-the-internet`), covering §1–§5. Sibling skills:
> `money-start-here-and-the-five-systems` (how to read the pack, the five systems positioned side by side, learning paths),
> `money-bitcoin` (§1–§7 — UTXOs, policy vs consensus, wallets, Lightning, mining economics, Core development, the v30 fight),
> `money-monero` (§1–§7 — the privacy stack, FCMP++, the Qubic affair, access and delistings, daemon/wallet development),
> `money-paypal` (§1–§6 — what it is, using it, the Sept 2026 US fee schedule, PYUSD, the APIs, PayPal vs Stripe),
> `money-stripe` (§1–§7 — the PaymentIntent model, integration patterns, compliance, pricing, the Bridge/Privy/Tempo stack),
> `money-choosing-a-rail-and-shared-patterns` (§1–§5 — the side-by-side, decision heuristics, the four transferable patterns, a study roadmap, the docs shelf),
> Section numbers are **per skill** here, not shared across the set: each chapter is a
> self-contained system. A reference written as §N → `skill` points at that skill's own §N.
>
> **Currency:** compiled 16 September 2026. The EVM model, storage layout, gas semantics and the security canon are **[DURABLE]**. §3 (upgrades) is heavily dated and should be re-verified before it is relied on.
>
> **Not investment, legal, tax, or compliance advice.** The regulatory sections tell you what
> to ask your counsel, not what your obligations are.

> **⚠️ Bitcoin's ledger idea generalized into a replicated state machine whose state includes executable code.**
>
> **⚠️ GOTCHA** boxes and the pack's **[DURABLE]** / **[as of …]** / **[CONTESTED]** tags mark
> what is safe to learn once and what must be re-verified.
>
> **The three ideas that organize this document:**
> 1. **⚠️ EVERY FULL NODE RE-EXECUTES EVERY TRANSACTION**
>    **That single constraint explains gas, the storage layout, why computation is expensive and data is worse, and why L2s exist at all.**
> 2. **⚠️ ACCESS CONTROL IS WHERE THE MONEY IS ACTUALLY LOST**
>    **Not reentrancy, not exotic math — the 2026 loss data says privileged functions with wrong or missing guards. Audit the modifiers before the arithmetic.**
> 3. **⚠️ A CONTRACT IS PUBLIC, IMMUTABLE, AND ADVERSARIALLY EXERCISED FROM BLOCK ONE**
>    **Upgradeability is a design decision with its own attack surface, not a safety net, and checks-effects-interactions is a habit rather than a rule you remember under pressure.**

---

## 1. The mental model

Ethereum is Bitcoin's ledger idea generalized into a **world computer**: a replicated state machine where the state includes **accounts with executable code**. Where Bitcoin stores UTXOs, Ethereum stores an **account tree** — externally owned accounts (EOAs, controlled by keys) and **contract accounts** (controlled by their own code). A transaction is either a value transfer or a function call into a contract; every full node re-executes every transaction and must reach the same resulting state.

Three consequences:
- **Composability**: contracts call contracts within a single atomic transaction. This powers DeFi — and means your protocol's safety depends on code you don't control.
- **Everything is public and adversarial**: every function is callable by anyone, in any order, by attackers who read your source. There is no "hidden" on-chain.
- **Bugs are irreversible money losses**; there is no support line. (For reversibility, see PayPal/Stripe — that's the trade.)

**As of 16 Sep 2026**, ETH trades near **$2,400–2,500**, vs an ATH of **$4,953 (24 Aug 2025)**; the Sept 15–16 drawdown tracked Bitcoin's on the failed CLARITY cloture vote ([Economic Times](https://economictimes.indiatimes.com/markets/cryptocurrency/crypto-news/bitcoin-trades-near-75000-as-clarity-act-setback-weighs-fed-decision-in-focus/articleshow/134285423.cms)). Spot ETH ETFs exist (they saw ~$141M outflows on Sept 15).

---

## 2. Proof of stake and the two-process node — [DURABLE]

Since **The Merge (Sept 2022)**, Ethereum runs **Gasper**: the **LMD-GHOST** fork choice + **Casper FFG** finality. Blocks arrive every 12 seconds (slots); 32 slots make an epoch; a checkpoint finalizes after two epochs (~13 min) once 2/3 of staked ETH attests. **Slashing** destroys stake for provable equivocation; **inactivity leaks** bleed offline validators during non-finality. Validators stake 32 ETH; **EIP-7251 (Pectra, May 2025)** raised the effective max to 2,048 ETH to allow consolidation.

**Running a node = running two processes**: a **consensus client** (Lighthouse, Prysm, Teku, Nimbus, Lodestar, Grandine) and an **execution client** (Geth, Nethermind, Reth, Besu, Erigon, ethrex), joined by the Engine API. ⚠️ **Client diversity is a systemic risk**: >1/3 of stake on one client can halt finality; >2/3 could finalize an *invalid* chain. This is not theoretical — **Reth suffered a network-wide outage on 2 Sept 2025** processing a specific block; multi-client operators stayed up. As of Aug 2026 verification, EL diversity had genuinely improved (Geth ~36–41% by various measures, Nethermind ~23–32%, Reth ~14–15%) — ⚠️ sources disagree substantially because they measure different populations; one 2026 staking survey put Nethermind ~45% among stakers. **If you stake, run a minority client.**

---

## 3. Upgrades: what's shipped, what's next — heavily dated

| Fork | Date | Headline |
|---|---|---|
| Merge | Sep 2022 | PoW→PoS; ~99.95% energy cut |
| Shapella | Apr 2023 | staking withdrawals |
| Dencun | Mar 2024 | **EIP-4844 blobs** — L2 data costs fell ~90% |
| Pectra | May 2025 | **EIP-7702** (EOAs can execute as smart accounts), EIP-7251 |
| **Fusaka** | **3 Dec 2025** | **PeerDAS** — validators *sample* blob data instead of downloading it all; gas limit ~60M |
| **Glamsterdam** | **targeted Q4 2026 — not confirmed** | ePBS (EIP-7732), **Block-Level Access Lists (EIP-7928)** for parallel execution, state gas repricing (EIP-8037/8038), faster validator exits (EIP-8061), cheaper basic transfers (EIP-2780) |
| Hegotá | 2027 | FOCIL headlining; Verkle discussed |

**Glamsterdam status as of 16 Sep 2026** ([ethereum.org roadmap](https://ethereum.org/roadmap/glamsterdam/), [crypto.news](https://crypto.news/ethereum-targets-oct-6-for-glamsterdam-on-sepolia/)):
- **Sepolia testnet tentatively 6 Oct 2026 (epoch 351232)** — set at ACDC #186 *before* any stable devnet run; Lido and Optimism have asked for a full day of devnet stability plus cross-client fixes first.
- Devnet-8 exposed a consensus bug; devnet-9 had a finality failure; **devnet-11 ran 14 Sept** as the gating test; persistent public devnet "Platåberget" live since Aug.
- **No mainnet date exists.** December 2026 is discussed, aspirational, and entirely test-dependent. Anything claiming a firm date is guessing.
- ⚠️ Numbering churn is real: Aug 2026 materials referenced the state-gas repricing as EIP-7904; current roadmap material uses EIP-8037/8038. When EIPs get renumbered or split pre-fork, that itself is normal process — check [Forkcast](https://forkcast.org) / ethereum.org before writing code against a number.

**Why Glamsterdam matters to builders** ([DURABLE-ish]): BALs declare a block's state reads *before* execution → parallel transaction execution; ePBS brings proposer-builder separation **in-protocol** (today it runs through out-of-protocol MEV-Boost relays — a live centralization dependency) and propagating payloads get ~9s instead of ~2s.

### The fee environment changed — update your priors

If "ETH mainnet is too expensive" was formed in 2021–2023, it's stale. **Mid-September 2026: daily average gas 0.68–0.97 gwei, utilization ~45–56%, average tx fee ~0.0001 ETH (~$0.25); simple transfers at snapshot time cost $0.003–0.006** ([YCharts gas series](https://ycharts.com/indicators/ethereum_average_gas_price), [Etherscan gas tracker](https://etherscan.io/gasTracker)). Do the math for your workload — but do it against current numbers, not folklore.

---

## 4. Using Ethereum

- **Wallets**: EOAs (MetaMask, Rabby, hardware) and **smart accounts** (Safe, ERC-4337 accounts). Since Pectra's **EIP-7702**, an ordinary EOA can temporarily execute as smart-contract code — giving *existing* wallets batching, session keys, sponsored gas, and social recovery without address migration. ⚠️ **7702 is also a drainer vector**: an EOA delegating to malicious code is now a standard phishing payload; never sign a delegation you don't understand, and note that "no code at `msg.sender` ⇒ plain EOA" is no longer a safe assumption in contract logic.
- **L2s are where the activity is**: optimistic rollups (OP Stack, Arbitrum — ~7-day withdrawal windows unless fast-exit) vs. ZK/validity rollups (proof-verified exits in minutes) vs. validiums (cheaper, weaker data availability). **[DURABLE] The only three security questions about any L2**: who can censor you, who can steal from you, and can you exit without permission? **L2Beat's stage classification** answers them honestly; the escape hatch to verify is **forced inclusion via L1**. Most rollups still run a **centralized sequencer** (censorship/liveness SPOF) — decentralized sequencing remains largely unshipped.
- **Bridges are the most-exploited category in crypto history** — lock-and-mint honey pots, and verification of foreign-chain state. Ask of any bridge: *who attests the source-chain event?* A 5-of-9 multisig bridge has the security of a 5-of-9 multisig. A 2026 example: forged Axelar messages passed a receiver contract missing access control → ~$3M drained. Prefer canonical/L1-verified or light-client bridges for size.
- **DeFi essentials**: AMMs (`x·y=k` constant product; concentrated liquidity; LPs bear impermanent loss), over-collateralized lending with liquidation incentives, fiat-backed vs crypto-backed vs algorithmic stablecoins (the last has a long failure history), liquid staking. Oracles: **never read a DEX spot price on-chain as "the price"** — a flash loan moves it in one transaction; use Chainlink/Pyth/RedStone feeds or meaningful TWAPs, and check feed staleness and L2 sequencer uptime.

---

## 5. Developing on Ethereum

### 5.1 The EVM in one screen — [DURABLE]

Stack machine, 256-bit words, 1024-deep stack. Four data locations: **stack** (transient), **memory** (per-call, quadratically-priced expansion), **storage** (permanent, the expensive one: cold `SLOAD` ≈ 2,100 gas; zero→nonzero `SSTORE` ≈ 20,000), **calldata** (read-only input), plus **transient storage** (EIP-1153: `TSTORE`/`TLOAD`, cleared at tx end — modern reentrancy guards). **Almost all gas optimization is storage-access optimization.**

Calls: `CALL` (fresh context), **`DELEGATECALL` (executes target code in *your* storage context — the basis of proxies and of some of the worst bugs in history)**, `STATICCALL`, `CREATE`/`CREATE2` (deterministic addresses/counterfactual deployment). **Reverts unwind everything in the frame** — transaction atomicity is your strongest safety tool; design around it.

Fees: `gas_used × (base_fee + priority_fee)`, EIP‑1559 — base fee is **burned**. ⚠️ Gas is a security parameter: **unbounded loops over user-controlled arrays are permanent DoS** (function becomes uncallable past the block gas limit; funds can be stuck forever). The 63/64 rule (EIP-150) enables gas griefing by callees.

"EVM-compatible" ≠ "EVM-equivalent": opcode semantics, gas schedules, precompiles and `block.timestamp` behavior differ per chain. **Never assume a contract safe on mainnet is safe on another EVM chain.**

### 5.2 Solidity, pinned and current

- **Latest stable: 0.8.37, released 10 Sept 2026** — a bugfix release: `delete` on a memory byte array cleared 32 bytes instead of one (all ≤0.8.36, evmasm pipeline); spill-slot collision in mutual recursion under `--via-ir` (0.7.2–0.8.36); Amsterdam EVM support (`block.slotnum`, EIP-7843) ([release announcement](https://www.soliditylang.org/blog/2026/09/10/solidity-0.8.37-release-announcement/)).
- **[DURABLE]** Since 0.8.0, arithmetic overflow **reverts by default** — eliminating a whole bug class (and meaning anything still on 0.6/0.7 is a live risk; a 2026 exploit hit a five-year-old 0.6.10 contract for exactly this).
- **Pin the compiler exactly** (`pragma solidity 0.8.37;`), never floating; record optimizer settings; prefer custom `error`s over revert strings; know `receive()` vs `fallback()`; **never authorize on `tx.origin`**; use `viaIR` deliberately and re-test (it changes codegen).

```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.37;

contract Vault {
    error Unauthorized();
    event Deposit(address indexed from, uint256 amount);
    mapping(address => uint256) public balanceOf;

    function withdraw(uint256 amount) external {
        uint256 bal = balanceOf[msg.sender];
        if (bal < amount) revert Unauthorized();
        balanceOf[msg.sender] = bal - amount;      // effects BEFORE interaction (CEI)
        (bool ok, ) = msg.sender.call{value: amount}("");
        if (!ok) revert Unauthorized();
    }
}
```

### 5.3 Toolchain (2026 position)

**Foundry** (Rust; tests in Solidity; fuzzing, invariant testing, mainnet forking, cheatcodes) is the default for protocol/security work. **Hardhat 3** (rewrite: EDR engine, native Solidity tests, multichain sim) closed the old 10–20× speed gap to ~2×. **They coexist**: many teams run Foundry for unit/fuzz/invariant and Hardhat for TS integration/deployment (Hardhat even parses `foundry.toml`). Choosing one because a 2022 tutorial said so is the failure mode.

**The testing ladder, in escalating value**:
1. Unit tests — the floor, not the goal.
2. **Fuzzing** every numeric input (`forge test` native).
3. **Invariant/stateful fuzzing** — define properties ("vault never insolvent") and let **Echidna/Medusa** attack call sequences. Highest-value technique available to most teams.
4. **Fork testing** against real mainnet state — mocks hide integration assumptions.
5. **Formal verification** — Certora, Halmos, Kontrol, SMTChecker; now a standard offering for high-value protocols.
6. **Static analysis** — Slither (run it; fast; catches real things), Mythril, Aderyn.
Coverage is necessary and wildly insufficient: 100% line coverage says nothing about adversarial paths.

```solidity
// Foundry invariant example: the fuzzer tries to break solvency with any call sequence
function invariant_vaultSolvent() public view {
    assertGe(address(vault).balance, vault.totalOwed());
}
```

### 5.4 Architecture decisions that cost money when wrong

- **Upgradeability [CONTESTED]**: the strongest argument *for* is unfixable bugs; *against*, you've reintroduced trust behind an **upgrade key that is now your #1 target**. Patterns: transparent proxy, **UUPS** (upgrade logic in the implementation — brickable if you deploy one without it), beacon, diamond (EIP-2535, contested), or **immutable (safest, least forgiving)**. The recurring proxy failures: **storage layout collisions** (append-only across upgrades; use ERC-7201 namespaced storage), **uninitialized implementations** (`_disableInitializers()`), constructors not running in proxy context, and `immutable` state living in code, not proxy storage. **Minimum standard for anything holding value: multisig (Safe) + timelock on the upgrade path.**
- **Access control is the top loss category — by far.** From the OWASP Smart Contract Top 10 for 2026 (149 incidents, ~$1.42B in 2025): **access control ≈ $953M** vs logic errors $64M, reentrancy $36M, flash-loan exploits $34M. Use `Ownable2Step` or `AccessControl`; audit *every* privileged path including initializers and upgrades.
- **Checks-Effects-Interactions** (validate → update state → external calls) prevents most reentrancy; add `nonReentrant` or transient-storage guards; watch *cross-function* and *read-only* reentrancy (view functions returning stale mid-tx state to an oracle consumer). **Pull over push** for payouts.
- **ERC-20 integration gotchas [DURABLE]**: non-standard returns (USDT) → use `SafeERC20`; fee-on-transfer → measure balance delta, never trust the argument; rebasing tokens; **non-18 decimals** (USDC=6); blocklists can freeze transfers; approval race (set 0 first); **letting users list arbitrary tokens = letting them run code in your callstack**. ERC-4626 vaults: the first-depositor share-inflation attack — mitigate with virtual shares/dead shares. EIP-712 signed messages: always include domain separator with `chainId` + verifying contract, else your signature replays elsewhere.
- **ERC-4337 / EIP-7702 account abstraction**: bundlers + EntryPoint + paymasters (sponsored gas, fees in ERC‑20) — the UX baseline for serious consumer apps in 2026.

### 5.5 What actually loses money now — read this twice

Hardened contracts pushed exploit losses down ~89% YoY in Q1 2026 (DefiLlama) — **and total losses didn't drop, because attackers moved to the humans**: ~$306M of ~$450M lost in Q1 2026 across 145 incidents was phishing/social engineering; one January attack drained **$282M without touching code**; six audited protocols were breached, **one after 18 prior audits**. Chainalysis attributes ~76% of 2026 hack value to state-backed actors (Lazarus-style): months-long social engineering, operatives embedded as IT staff. **Operational consequence**: audits are necessary and radically insufficient; key management, opsec, insider risk, and signing hygiene (no blind signing; human-readable prompts) now deserve first-class budget. **Verify contract source on the explorer** — Chainalysis documented ~$36.7M lost across five protocols via their own *unverified* contracts in six months.

### 5.6 Ops checklist (before mainnet)

Audited + findings resolved · testnet-exercised · exact compiler+optimizer pinned · reproducible build · **source verified on explorer** · ownership to multisig/timelock (never an EOA) · initializers locked · pause mechanism tested · monitoring live (Forta/Defender) · incident runbook written. For indexers: events are your API (emit generously), handle **reorgs** (indexed data can un-happen), prefer The Graph/Ponder/Subsquid or a careful `eth_getLogs` pipeline. Frontend: **viem + wagmi** standard, RainbowKit/ConnectKit, WalletConnect; JSON-RPC essentials: `eth_call`, `eth_estimateGas`, `eth_sendRawTransaction`, `eth_getLogs` (rate-limited — the usual indexer bottleneck), `debug_traceTransaction` (archive/debug nodes; your best debugging tool). **Own node vs provider (Alchemy/Infura/QuickNode) is a real architectural decision**: providers trade away censorship-resistance and rate-limit freedom for operational simplicity. NVMe is non-negotiable for self-hosting; archive nodes are very large.

---

## Sources (as of 16 Sep 2026)

[ethereum.org Glamsterdam roadmap](https://ethereum.org/roadmap/glamsterdam/) · [crypto.news: Sepolia target](https://crypto.news/ethereum-targets-oct-6-for-glamsterdam-on-sepolia/) · [Solidity 0.8.37 announcement](https://www.soliditylang.org/blog/2026/09/10/solidity-0.8.37-release-announcement/) · [YCharts avg gas price](https://ycharts.com/indicators/ethereum_average_gas_price) · [Etherscan gas tracker](https://etherscan.io/gasTracker) · ETH price: [Economic Times, 16 Sep 2026](https://economictimes.indiatimes.com/markets/cryptocurrency/crypto-news/bitcoin-trades-near-75000-as-clarity-act-setback-weighs-fed-decision-in-focus/articleshow/134285423.cms). Durable mechanics, client-diversity figures, fork history through Fusaka, and the 2026 security-loss data per the `cryptocurrency-development` reference set, verified Aug 2026.

Canonical study docs: the Ethereum execution/consensus specs, EIPs (eips.ethereum.org), the Foundry book, the Solidity docs + security considerations page, OpenZeppelin Contracts docs, the Smart Contract Weakness Classification registry (SWC), L2Beat, and the RareSkills blog for deep mechanics.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…