-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathWallet.sol
59 lines (51 loc) · 2.92 KB
/
Wallet.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.18;
/**
Minimal upgradeable proxy implementation, delegates all calls to the address
defined by the storage slot matching the wallet address.
Inspired by EIP-1167 Implementation (https://eips.ethereum.org/EIPS/eip-1167)
deployed code:
0x00 0x36 0x36 CALLDATASIZE cds
0x01 0x3d 0x3d RETURNDATASIZE 0 cds
0x02 0x3d 0x3d RETURNDATASIZE 0 0 cds
0x03 0x37 0x37 CALLDATACOPY
0x04 0x3d 0x3d RETURNDATASIZE 0
0x05 0x3d 0x3d RETURNDATASIZE 0 0
0x06 0x3d 0x3d RETURNDATASIZE 0 0 0
0x07 0x36 0x36 CALLDATASIZE cds 0 0 0
0x08 0x3d 0x3d RETURNDATASIZE 0 cds 0 0 0
0x09 0x30 0x30 ADDRESS addr 0 cds 0 0 0
0x0A 0x54 0x54 SLOAD imp 0 cds 0 0 0
0x0B 0x5a 0x5a GAS gas imp 0 cds 0 0 0
0x0C 0xf4 0xf4 DELEGATECALL suc 0
0x0D 0x3d 0x3d RETURNDATASIZE rds suc 0
0x0E 0x82 0x82 DUP3 0 rds suc 0
0x0F 0x80 0x80 DUP1 0 0 rds suc 0
0x10 0x3e 0x3e RETURNDATACOPY suc 0
0x11 0x90 0x90 SWAP1 0 suc
0x12 0x3d 0x3d RETURNDATASIZE rds 0 suc
0x13 0x91 0x91 SWAP2 suc 0 rds
0x14 0x60 0x18 0x6018 PUSH1 0x18 suc 0 rds
/-- 0x16 0x57 0x57 JUMPI 0 rds
| 0x17 0xfd 0xfd REVERT
\-> 0x18 0x5b 0x5b JUMPDEST 0 rds
0x19 0xf3 0xf3 RETURN
flat deployed code: 0x363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3
deploy function:
0x00 0x60 0x3a 0x603a PUSH1 0x3a
0x02 0x60 0x0e 0x600e PUSH1 0x0e 0x3a
0x04 0x3d 0x3d RETURNDATASIZE 0 0x0e 0x3a
0x05 0x39 0x39 CODECOPY
0x06 0x60 0x1a 0x601a PUSH1 0x1a
0x08 0x80 0x80 DUP1 0x1a 0x1a
0x09 0x51 0x51 MLOAD imp 0x1a
0x0A 0x30 0x30 ADDRESS addr imp 0x1a
0x0B 0x55 0x55 SSTORE 0x1a
0x0C 0x3d 0x3d RETURNDATASIZE 0 0x1a
0x0D 0xf3 0xf3 RETURN
[...deployed code]
flat deploy function: 0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3
*/
library Wallet {
bytes internal constant creationCode = hex"603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";
}