Skip to content

Instantly share code, notes, and snippets.

@eseidel
Created May 30, 2021 22:24
Show Gist options
  • Save eseidel/4c6211ca2d6b81a3b4dfaa480727f58f to your computer and use it in GitHub Desktop.
Save eseidel/4c6211ca2d6b81a3b4dfaa480727f58f to your computer and use it in GitHub Desktop.
rusty_ethereum inc() Failure with stacks
macbook-pro [75280:rusty_ethereum]% cargo run [~/Documents/GitHub/rusty_ethereum]
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
Running `target/debug/rusty_ethereum`
inc(): [37, 13, 03, C0, 51, BF, F7, 26, 10, 0A, D1, 38, 71, CA, BA, BF, 50, C2, 0D, D9, 20, FC, A1, 37, E5, 19, F9, 8F, 08, 9A, 74, B4]
60: PUSH1 (0x80)
0x80
60: PUSH1 (0x40)
0x40,0x80
52: MSTORE
34: CALLVALUE
CALLVALUE: -> 0x00
0x00
80: DUP1
DUP1: -> 0x00
0x00,0x00
15: ISZERO
ISZERO -> true
0x01,0x00,0x00
61: PUSH2 (0x10)
0x10,0x01,0x00,0x00
57: JUMPI
JUMPI (condition: 0x01 is_truthy: true)
Jumped from 0C to 10
0x00,0x00
5B: JUMPDEST
0x00,0x00
50: POP
0x00
61: PUSH2 (0x116)
0x116,0x00
80: DUP1
DUP1: -> 0x116
0x116,0x116,0x00
61: PUSH2 (0x20)
0x20,0x116,0x116,0x00
60: PUSH1 (0x00)
0x00,0x20,0x116,0x116,0x00
39: CODECOPY
CODECOPY from 32..310 to 0..278
0x116,0x00
60: PUSH1 (0x00)
0x00,0x116,0x00
F3: RETURN
RETURN 0x00..0x116
Got contract, executing!
60: PUSH1 (0x80)
0x80
60: PUSH1 (0x40)
0x40,0x80
52: MSTORE
34: CALLVALUE
CALLVALUE: -> 0x00
0x00
80: DUP1
DUP1: -> 0x00
0x00,0x00
15: ISZERO
ISZERO -> true
0x01,0x00,0x00
60: PUSH1 (0x0F)
0x0F,0x01,0x00,0x00
57: JUMPI
JUMPI (condition: 0x01 is_truthy: true)
Jumped from 0B to 0F
0x00,0x00
5B: JUMPDEST
0x00,0x00
50: POP
0x00
60: PUSH1 (0x04)
0x04,0x00
36: CALLDATASIZE
CALLDATASIZE: -> 32
0x20,0x04,0x00
10: LT
LT: 0x20 < 0x04 -> false
0x00,0x00
60: PUSH1 (0x46)
0x46,0x00,0x00
57: JUMPI
JUMPI (condition: 0x00 is_truthy: false)
0x00
60: PUSH1 (0x00)
0x00,0x00
35: CALLDATALOAD
CALLDATALOAD: 0x00 -> 0x371303C000000000000000000000000000000000000000000000000000000000
0x371303C000000000000000000000000000000000000000000000000000000000,0x00
60: PUSH1 (0xE0)
0xE0,0x371303C000000000000000000000000000000000000000000000000000000000,0x00
1C: SHR
73206269467518548428415557547866456064 >> 96
SHR: 0x371303C000000000000000000000000000000000000000000000000000000000 >> 0xE0 -> 0x371303C0
0x371303C0,0x00
80: DUP1
DUP1: -> 0x371303C0
0x371303C0,0x371303C0,0x00
63: PUSH4 (0x6661ABD)
0x6661ABD,0x371303C0,0x371303C0,0x00
14: EQ
EQ: 0x6661ABD == 0x371303C0 -> false
0x00,0x371303C0,0x00
60: PUSH1 (0x4B)
0x4B,0x00,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x00 is_truthy: false)
0x371303C0,0x00
80: DUP1
DUP1: -> 0x371303C0
0x371303C0,0x371303C0,0x00
63: PUSH4 (0x371303C0)
0x371303C0,0x371303C0,0x371303C0,0x00
14: EQ
EQ: 0x371303C0 == 0x371303C0 -> true
0x01,0x371303C0,0x00
60: PUSH1 (0x65)
0x65,0x01,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x01 is_truthy: true)
Jumped from 32 to 65
0x371303C0,0x00
5B: JUMPDEST
0x371303C0,0x00
60: PUSH1 (0x6B)
0x6B,0x371303C0,0x00
60: PUSH1 (0x7A)
0x7A,0x6B,0x371303C0,0x00
56: JUMP
Jumped from 6B to 7A
0x6B,0x371303C0,0x00
5B: JUMPDEST
0x6B,0x371303C0,0x00
60: PUSH1 (0x01)
0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x00)
0x00,0x01,0x6B,0x371303C0,0x00
80: DUP1
DUP1: -> 0x00
0x00,0x00,0x01,0x6B,0x371303C0,0x00
82: DUP3
DUP3: -> 0x01
0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00
82: DUP3
DUP3: -> 0x00
0x00,0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00
54: SLOAD
SLOAD: 0x00 -> 0x00
0x00,0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x8A)
0x8A,0x00,0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00
91: SWAP2
SWAP2 (old: 0x8A new: 0x01)
0x01,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
90: SWAP1
SWAP1 (old: 0x01 new: 0x00)
0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0xA1)
0xA1,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
56: JUMP
Jumped from 8A to A1
0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
5B: JUMPDEST
0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x00)
0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
82: DUP3
DUP3: -> 0x01
0x01,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
19: NOT
NOT: !0x01 -> 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
82: DUP3
DUP3: -> 0x00
0x00,0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
11: GT
GT: 0x00 > 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -> false
0x00,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
15: ISZERO
ISZERO -> true
0x01,0x00,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0xB1)
0xB1,0x01,0x00,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x01 is_truthy: true)
Jumped from AC to B1
0x00,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
5B: JUMPDEST
0x00,0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
50: POP
0x00,0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
01: ADD
ADD: 0x00 + 0x00 -> 0x00
0x00,0x01,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
90: SWAP1
SWAP1 (old: 0x00 new: 0x01)
0x01,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
56: JUMP
Jumped from B6 to 01
0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
80: DUP1
DUP1: -> 0x00
0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x40)
0x40,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
52: MSTORE
0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
34: CALLVALUE
CALLVALUE: -> 0x00
0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
80: DUP1
DUP1: -> 0x00
0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
15: ISZERO
ISZERO -> true
0x01,0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x0F)
0x0F,0x01,0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x01 is_truthy: true)
Jumped from 0B to 0F
0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
5B: JUMPDEST
0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
50: POP
0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x04)
0x04,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
36: CALLDATASIZE
CALLDATASIZE: -> 32
0x20,0x04,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
10: LT
LT: 0x20 < 0x04 -> false
0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x46)
0x46,0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x00 is_truthy: false)
0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x00)
0x00,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
35: CALLDATALOAD
CALLDATALOAD: 0x00 -> 0x371303C000000000000000000000000000000000000000000000000000000000
0x371303C000000000000000000000000000000000000000000000000000000000,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0xE0)
0xE0,0x371303C000000000000000000000000000000000000000000000000000000000,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
1C: SHR
73206269467518548428415557547866456064 >> 96
SHR: 0x371303C000000000000000000000000000000000000000000000000000000000 >> 0xE0 -> 0x371303C0
0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
80: DUP1
DUP1: -> 0x371303C0
0x371303C0,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
63: PUSH4 (0x6661ABD)
0x6661ABD,0x371303C0,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
14: EQ
EQ: 0x6661ABD == 0x371303C0 -> false
0x00,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x4B)
0x4B,0x00,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x00 is_truthy: false)
0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
80: DUP1
DUP1: -> 0x371303C0
0x371303C0,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
63: PUSH4 (0x371303C0)
0x371303C0,0x371303C0,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
14: EQ
EQ: 0x371303C0 == 0x371303C0 -> true
0x01,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x65)
0x65,0x01,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
57: JUMPI
JUMPI (condition: 0x01 is_truthy: true)
Jumped from 32 to 65
0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
5B: JUMPDEST
0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x6B)
0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x7A)
0x7A,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
56: JUMP
Jumped from 6B to 7A
0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
5B: JUMPDEST
0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x01)
0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x00)
0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
80: DUP1
DUP1: -> 0x00
0x00,0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
82: DUP3
DUP3: -> 0x01
0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
82: DUP3
DUP3: -> 0x00
0x00,0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
54: SLOAD
SLOAD: 0x00 -> 0x00
0x00,0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
60: PUSH1 (0x8A)
0x8A,0x00,0x01,0x00,0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
91: SWAP2
SWAP2 (old: 0x8A new: 0x01)
0x01,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00,0x00,0x8A,0x00,0x00,0x01,0x6B,0x371303C0,0x00
thread 'main' panicked at 'explicit panic', src/vm.rs:394:25
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
macbook-pro [75280:rusty_ethereum]% [~/Documents/GitHub/rusty_ethereum]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment