Your First 90 DaysAcademy
The Grammar · Contracts Talking to Contracts · Week 7 · Checkpoint 16

The Wall

The file that makes people give up on reading Solidity is sixty nine lines long, and most of it is comment. Read every line of it, assembly included, and the block explorer stops being able to surprise you.

14 steps~30 min3 nodes for your map
01 · The file that stops people reading

You open a verified contract on a block explorer, expecting the token you came for. What loads is short, full of words you have never read, and contains no function you recognise. A lot of people close the tab here and decide Solidity is beyond them.

They are wrong, and this file is why. Sixty nine lines, most of them comment, and by the end of this checkpoint you will have read every one. The shape has a name and a job, and the job is to keep a contract's code at a different address.

02 · An opening you can read at a glance

A licence comment, a release stamp naming the folder this lives in, and a pragma with a ceiling above it. You have skimmed this opening a dozen times by now. Line 16 opens an `abstract contract`, which you read in checkpoint twelve: something is missing, so this never deploys by itself.

Underneath it there are exactly four declarations and nothing else. No state variable, no constructor, no event, no modifier. A contract holding this little cannot do much on its own, which is the first real clue about what it is for.

03 · The sentence the whole file rests on

Lines 7 and 8 say what this contract does before any code does it: a fallback function that delegates all calls to another contract, using the machine instruction `delegatecall`. That other contract gets a name here, the implementation, and line 9 says who has to supply it.

You met a delegate call in passing last checkpoint, one word swapped in the middle of a library function. It is the swap that changes the most, and the comment has already told you enough to work out what it changes. Commit before you read the body.

Lines 7 and 8 say every call is handed to another contract with `delegatecall`. When that happens, whose code runs, and whose storage does it run against?
your balance2,400
BANK_DBowner: the bank
you2,400
what the app is actually showing you
BANK_DBowner: the bank
you2,400their pen
you hold a claim. they hold the pen.
your digital life
BANK · you2,400the bank ✍
INSTAGRAM · you2.1M followersMeta ✍
STEAM · you134 gamesValve ✍
AIRLINE · you58,200 milesthe airline ✍
four tables. zero pens that are yours.
BANK_DBowner: the bank
you2,400
DENIED
try both pens
PLATFORM_DBowner: the platform
her · 8 years2,000,000 followers
one automated decision away
BANK_DB · you · 2,400intentcompetencecontinuity
your row stands on all three
FTX_DBowner: FTX
you5 BTC
the backing vault●●●●●
the row stayed. the backing did not.
CARD_DBowner: your bank ✍
TV you never bought−1,100
fraud reversal+1,100
someone holds the pen, so someone can fix it
?_DBowner: nobody
youstill yours?
?
can a table exist that nobody owns?
?
?_DBowner: ̶n̶o̶b̶o̶d̶y̶
you100
no owner, no pen, no trust?
keeper 1
you100
keeper 2
you100
keeper 3
you100
keeper 4
you100
keeper 5
you100
no THE copy, only copies.
keeper 2
you100
keeper 3
you100
keeper 4
you100
keeper 5
you100
your copy
you100
five copies. one of them is yours.
one attacker
one attacker, ten thousand faces.
real machinesburned wattsnext page, sealed
writing costs watts. faking voters buys nothing.
cost paid OUTSIDE: hardware and power
proof of work, burn energy to vote.
page 1you · 100page 2you · 100page 3you · 100page 4you · 100
rewrite one line, break every lock after it.
office lunchtrusted keeperconsensusfive keepers, real cost
the price buys trustlessness. the office already has trust.
?
ownerless ledger
you?
a key, not a login?
nobody owns the table. so who owns your row?
delegatecallassemblyproxy

Three new nodes on your map

delegatecall · assembly · proxy · +10 Lynx