Computational cryptography › Live on mainnet today › Hashes and symmetric crypto
Hardness assumption

SHA-256 is secure

In plain words

The fingerprint function used by Ethereum's consensus layer.

The idea: The consensus layer's fingerprint function. Hashing data in a tree produces one root that pins down the whole beacon-chain state, so anyone can be convinced of any single value with a short chain of hashes, and nobody can change a value without changing the root, short of finding a SHA-256 collision.

Why it matters: Seals the beacon chain's state and the record of validator deposits.

Change one letter, change everything
SHA-256("table") = 0d4fc4a78d3706edccaf…SHA-256("cable") = 7d6e18d0ff4bed3b1d1f…126 of 256 output bits changed
Two inputs that differ in a single letter give completely different fingerprints: each square is one of the 256 output bits, red where the two outputs differ. About half the bits flip, with no pattern linking input to output, which is what makes running a hash backwards hopeless.

The details

On the map: collision resistance

SHA-256 is the consensus layer's hash[1]. It Merkleizes beacon-chain state (SSZ)[2], builds the deposit contract's tree[3], mixes RANDAO reveals and checks validator keystores.

The assumption is collision resistance. SHA-256 has resisted serious attack since 2001 and also secures Bitcoin.

Rests on

If any of these breaks, this breaks too.

If it falls

If this breaks, these break with it.

Everything that falls with it (7 boxes)

References

  1. NIST. Secure hash standard. NIST FIPS 180-4, 2015. doi:10.6028/NIST.FIPS.180-4
  2. Ethereum consensus-specs authors. SimpleSerialize (SSZ) (consensus-specs v1.5.0). ethereum/consensus-specs, 2020. github.com/ethereum/consensus-specs/blob/v1.5.0/ssz/simple-serialize.md
  3. Ethereum consensus-specs authors. Phase 0: The Beacon Chain (consensus-specs). ethereum/consensus-specs, 2020. github.com/ethereum/consensus-specs/blob/master/specs/phase0/beacon-chain.md