Dissecting Ethereum
Internals of a public blockchain
24 July 2017
EIT Digital, Budapest
Péter Szilágyi
Ethereum Team Lead
Péter Szilágyi
Ethereum Team Lead
Download and run your own node
Phases of connecting to Ethereum
E.g. 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359 😱
Accounts useful only to create transactions
E.g. 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359... again?! 😕
Who the heck thought this is a good idea?!
Nodes run a custom virtual machine
Resource consumption and the halting problem
.code PUSH 60 PUSH 40 MSTORE PUSH FFFFFFFF PUSH 10..0 PUSH 0 CALLDATALOAD DIV AND PUSH A5F3C23B DUP2 EQ PUSH [tag] 2 JUMPI tag 1 JUMPDEST PUSH 0 DUP1 REVERT tag 2 JUMPDEST CALLVALUE ISZERO PUSH [tag] 3 JUMPI PUSH 0 DUP1 REVERT tag 3 JUMPDEST PUSH [tag] 4 PUSH 4 CALLDATALOAD PUSH 24 CALLDATALOAD PUSH [tag] 5 JUMP tag 4 JUMPDEST PUSH 40 MLOAD SWAP1 DUP2 MSTORE PUSH 20 ADD PUSH 40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN tag 5 JUMPDEST DUP2 DUP2 ADD tag 6 JUMPDEST SWAP3 SWAP2 POP POP JUMP [out] .data
Only through programs running locally
Ethereum Team Lead