eth-concepts
Installation
SKILL.md
Ethereum Concepts
Foundational reference for Ethereum and EVM-compatible chain development. Covers the mental models that every other skill assumes you know — gas, transactions, storage, ABI encoding, and the execution environment. This is not a tool skill; it is the conceptual substrate beneath all EVM tooling.
What You Probably Got Wrong
LLMs confidently generate Ethereum code with fundamental misconceptions. These are the ones that cause real bugs.
- Gas is not ETH — Gas is a unit of computation. You pay
gasUsed * effectiveGasPricein wei. Confusing gas units with ether amounts is the most common mental model failure. - Transaction types are not interchangeable — There are four types (0, 1, 2, 3). Type 2 (EIP-1559) is the default since London. Each has different fields and fee semantics. Sending a legacy (type 0) transaction still works but uses the old fee model.
- Nonce is per-account and sequential — Skipping a nonce blocks all subsequent transactions. There is no way to "fill" a nonce gap except by sending a transaction with the missing nonce. Nonces start at 0 for EOAs and at 1 for contracts (post-EIP-161).
msg.valueis in wei, not ETH —1 etherin Solidity is1e18wei. Passing1as msg.value sends 1 wei (0.000000000000000001 ETH), not 1 ETH.- Storage slots are 32 bytes — Every slot holds exactly 32 bytes. Smaller types are packed within a single slot when declared adjacently. Understanding this is critical for gas optimization and direct storage reads.
- Contract addresses are deterministic —
CREATEuseskeccak256(rlp(sender, nonce)).CREATE2useskeccak256(0xff ++ sender ++ salt ++ keccak256(initCode)). Same inputs always produce the same address, even before deployment. address(0)is not a burn address by design — It is the zero address. Tokens sent there are irrecoverable, but it has no special EVM semantics. Some protocols use it as a mint/burn signal by convention.block.timestampis set by the block proposer — It must be greater than the parent timestamp and within ~15 seconds of real time. Do not use it for tight time comparisons or as entropy.