@safe-global/safe-deployments 1.37.8 → 1.37.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,20 @@ The addresses on the different networks and the abi files are available for each
13
13
  2. Verify that the addresses match the expected address for each contract. You can find them under the "addresses" mapping in the respective JSON file in the [assets folder](./src/assets/).
14
14
  3. Create a PR adding the new deployment. Example PR can be found [here](https://github.com/safe-global/safe-deployments/pull/676).
15
15
 
16
+ ## Deployments overview
17
+
18
+ > ContractScan is a 3rd party tool that is not maintained by the Safe team
19
+
20
+ - [1.0.0](https://contractscan.xyz/bundle?name=Safe+1.0.0&addresses=0xb6029ea3b2c51d09a50b53ca8012feeb05bda35a,0x12302fe9c02ff50939baaaaf415fc226c078613c)
21
+ - [1.1.1](https://contractscan.xyz/bundle?name=Safe+1.1.1&addresses=0xf61a721642b0c0c8b334ba3763ba1326f53798c0,0x8538fcbccba7f5303d2c679fa5d7a629a8c9bf4a,0xd5d82b6addc9027b22dca772aa68d5d74cdbdf44,0x34cfac646f301356faa8b21e94227e3583fe3f5f,0x8d29be29923b68abfdd21e541b9374737b49cdad,0x76e2cfc1f5fa8f6a5b3fc4c8f4788f0116861f9b)
22
+ - [1.2.0](https://contractscan.xyz/bundle?name=Safe+1.2.0&addresses=0x6851d6fdfafd08c0295c392436245e5bc78b0185)
23
+ - 1.3.0
24
+ - [Canonical](https://contractscan.xyz/bundle?name=Safe+1.3.0&addresses=0xf48f2b2d2a534e402487b3ee7c18c33aec0fe5e4,0x7cbb62eaa69f79e6873cd1ecb2392971036cfaa4,0xd9db270c1b5e3bd161e8c8503c55ceabee709552,0x3e5c63644e683549055b9be8653de26e0b4cd36e,0xa238cbeb142c10ef7ad8442c6d1f9e89e07e7761,0x40a2accbd92bca938b02010e17a5b8929b49130d,0xa6b71e26c5e0845f74c812102ca7114b6a896ab2,0xa65387f16b013cf2af4605ad8aa5ec25a2cba3a2,0x59ad6735bcd8152b84860cb256dd9e96b85f69da)
25
+ - [EIP155](https://contractscan.xyz/bundle?name=Safe+1.3.0+EIP155&addresses=0x017062a1de2fe6b99be3d9d37841fed19f573804,0xb19d6ffc2182150f8eb585b79d4abcd7c5640a9d,0x69f4d1788e39c87893c980c06edf4b7f686e2938,0xfb1bffc9d739b8d520daf37df666da4c687191ea,0x998739bfdaadde7c933b942a68053933098f9eda,0xa1dabef33b3b82c7814b6d82a79e50f4ac44102b,0xc22834581ebc8527d974f8a1c97e1bea4ef910bc,0x98ffbbf51bb33a056b08ddf711f289936aaff717,0x727a77a074d1e6c4530e814f89e618a3298fc044)
26
+ - [ZKsync](https://contractscan.xyz/bundle?name=Safe+1.3.0+ZKsync&addresses=0x2f870a80647bbc554f3a0ebd093f11b4d2a7492a,0xcb8e5e438c5c2b45fbe17b02ca9af91509a8ad56,0xb00ce5cccdef57e539ddced01df43a13855d9910,0x1727c2c531cf966f902e5927b98490fdfb3b2b70,0x0dfcccb95225ffb03c6fbb2559b530c2b7c8a912,0xf220d3b4dfb23c4ade8c88e526c1353abacbc38f,0xdaec33641865e4651fb43181c6db6f7232ee91c2,0x357147caf9c0cca67dfa0cf5369318d8193c8407,0x4191e2e12e8bc5002424ce0c51f9947b02675a44)
27
+ - [1.4.1](https://contractscan.xyz/bundle?name=Safe+1.4.1&addresses=0xfd0732dc9e303f09fcef3a7388ad10a83459ec99,0x9b35af71d77eaf8d7e40252370304687390a1a52,0x38869bf66a61cf6bdb996a6ae40d5853fd43b526,0x9641d764fc13c8b624c04430c7356c1c7c8102e2,0x41675c099f32341bf84bfc5382af534df5c7461a,0x29fcb43b46531bca003ddc8fcb67ffe91900c762,0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67,0xd53cd0ab83d845ac265be939c57f53ad838012c9,0x3d4ba2e0884aa488718476ca2fb8efc291a46199)
28
+
29
+
16
30
  ## Install
17
31
 
18
32
  - npm - `npm i @safe-global/safe-deployments`
package/dist/utils.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.findDeployment = findDeployment;
6
+ exports.findDeployment = void 0;
7
7
  const satisfies_1 = __importDefault(require("semver/functions/satisfies"));
8
8
  const DEFAULT_FILTER = { released: true };
9
9
  // The older JSON format had a `defaultAddress` field, which became obsolete due to EIP-155 enforcement and non-EVM compatible chains.
@@ -67,3 +67,4 @@ function findDeployment(criteria = DEFAULT_FILTER, deployments, format = "single
67
67
  return mapJsonToDeploymentsFormatV1(deploymentJson);
68
68
  }
69
69
  }
70
+ exports.findDeployment = findDeployment;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-global/safe-deployments",
3
- "version": "1.37.8",
3
+ "version": "1.37.9",
4
4
  "description": "Collection of Safe singleton deployments",
5
5
  "homepage": "https://github.com/safe-global/safe-deployments/",
6
6
  "license": "MIT",
@@ -97,8 +97,11 @@ describe('assets/', () => {
97
97
  }
98
98
 
99
99
  describe('networkAddresses', () => {
100
- it('should contain the same networks in all files', async () => {
101
- const files = versionFiles(version);
100
+ it('should contain the same networks in all files (exception for v1.4.1 migration contracts)', async () => {
101
+ const filesWithMigration = versionFiles(version);
102
+ const migrationContracts =
103
+ version === 'v1.4.1' ? ['safe_migration.json', 'safe_to_l2_migration.json', 'safe_to_l2_setup.json'] : [];
104
+ const files = filesWithMigration.filter((item) => !migrationContracts.includes(item));
102
105
  const networkCounts: Record<string, number> = {};
103
106
  for (const file of files) {
104
107
  const deploymentJson = await readAssetJSON(version, file);
@@ -115,6 +118,41 @@ describe('assets/', () => {
115
118
  }
116
119
  });
117
120
 
121
+ it('should contain the migration contracts networks in all other files', async () => {
122
+ const files = versionFiles(version);
123
+ const filesWithMigration =
124
+ version === 'v1.4.1' ? ['safe_migration.json', 'safe_to_l2_migration.json', 'safe_to_l2_setup.json'] : [];
125
+ const filesWithoutMigration = files.filter((item) => !filesWithMigration.includes(item));
126
+ const networkCountsWithMigration: Record<string, number> = {};
127
+ for (const file of filesWithMigration) {
128
+ const deploymentJson = await readAssetJSON(version, file);
129
+ if (!deploymentJson) {
130
+ throw new Error(`Failed to read asset ${version}/${file}`);
131
+ }
132
+ const { networkAddresses } = deploymentJson;
133
+ for (const network of Object.keys(networkAddresses)) {
134
+ networkCountsWithMigration[network] = (networkCountsWithMigration[network] ?? 0) + 1;
135
+ }
136
+ }
137
+ const networkCountsWithoutMigration: Record<string, number> = {};
138
+ for (const file of filesWithoutMigration) {
139
+ const deploymentJson = await readAssetJSON(version, file);
140
+ if (!deploymentJson) {
141
+ throw new Error(`Failed to read asset ${version}/${file}`);
142
+ }
143
+ const { networkAddresses } = deploymentJson;
144
+ for (const network of Object.keys(networkAddresses)) {
145
+ networkCountsWithoutMigration[network] = (networkCountsWithoutMigration[network] ?? 0) + 1;
146
+ }
147
+ }
148
+ for (const [network, count] of Object.entries(networkCountsWithMigration)) {
149
+ expect([network, count + networkCountsWithoutMigration[network]]).toEqual([
150
+ network,
151
+ filesWithMigration.length + filesWithoutMigration.length,
152
+ ]);
153
+ }
154
+ });
155
+
118
156
  it('the address types for a network should be the same in all files', async () => {
119
157
  const files = versionFiles(version);
120
158
  const networkAddressMap: Record<string, string | string[]> = {};
@@ -0,0 +1,148 @@
1
+ {
2
+ "released": true,
3
+ "contractName": "SafeMigration",
4
+ "version": "1.4.1",
5
+ "deployments": {
6
+ "canonical": {
7
+ "address": "0x526643F69b81B008F46d95CD5ced5eC0edFFDaC6",
8
+ "codeHash": "0xc00d7921460cd5a05393e7772e634bd7d212f356356aa3a77f0120a9b8e25e99"
9
+ }
10
+ },
11
+ "networkAddresses": {
12
+ "1": "canonical",
13
+ "10": "canonical",
14
+ "56": "canonical",
15
+ "100": "canonical",
16
+ "137": "canonical",
17
+ "196": "canonical",
18
+ "1101": "canonical",
19
+ "1337": "canonical",
20
+ "5000": "canonical",
21
+ "8453": "canonical",
22
+ "42161": "canonical",
23
+ "42220": "canonical",
24
+ "43114": "canonical",
25
+ "59144": "canonical",
26
+ "81457": "canonical",
27
+ "84532": "canonical",
28
+ "534352": "canonical",
29
+ "11155111": "canonical",
30
+ "1313161554": "canonical"
31
+ },
32
+ "abi": [
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "safeSingleton",
38
+ "type": "address"
39
+ },
40
+ {
41
+ "internalType": "address",
42
+ "name": "safeL2Singleton",
43
+ "type": "address"
44
+ },
45
+ {
46
+ "internalType": "address",
47
+ "name": "fallbackHandler",
48
+ "type": "address"
49
+ }
50
+ ],
51
+ "stateMutability": "nonpayable",
52
+ "type": "constructor"
53
+ },
54
+ {
55
+ "anonymous": false,
56
+ "inputs": [
57
+ {
58
+ "indexed": false,
59
+ "internalType": "address",
60
+ "name": "singleton",
61
+ "type": "address"
62
+ }
63
+ ],
64
+ "name": "ChangedMasterCopy",
65
+ "type": "event"
66
+ },
67
+ {
68
+ "inputs": [],
69
+ "name": "MIGRATION_SINGLETON",
70
+ "outputs": [
71
+ {
72
+ "internalType": "address",
73
+ "name": "",
74
+ "type": "address"
75
+ }
76
+ ],
77
+ "stateMutability": "view",
78
+ "type": "function"
79
+ },
80
+ {
81
+ "inputs": [],
82
+ "name": "SAFE_FALLBACK_HANDLER",
83
+ "outputs": [
84
+ {
85
+ "internalType": "address",
86
+ "name": "",
87
+ "type": "address"
88
+ }
89
+ ],
90
+ "stateMutability": "view",
91
+ "type": "function"
92
+ },
93
+ {
94
+ "inputs": [],
95
+ "name": "SAFE_L2_SINGLETON",
96
+ "outputs": [
97
+ {
98
+ "internalType": "address",
99
+ "name": "",
100
+ "type": "address"
101
+ }
102
+ ],
103
+ "stateMutability": "view",
104
+ "type": "function"
105
+ },
106
+ {
107
+ "inputs": [],
108
+ "name": "SAFE_SINGLETON",
109
+ "outputs": [
110
+ {
111
+ "internalType": "address",
112
+ "name": "",
113
+ "type": "address"
114
+ }
115
+ ],
116
+ "stateMutability": "view",
117
+ "type": "function"
118
+ },
119
+ {
120
+ "inputs": [],
121
+ "name": "migrateL2Singleton",
122
+ "outputs": [],
123
+ "stateMutability": "nonpayable",
124
+ "type": "function"
125
+ },
126
+ {
127
+ "inputs": [],
128
+ "name": "migrateL2WithFallbackHandler",
129
+ "outputs": [],
130
+ "stateMutability": "nonpayable",
131
+ "type": "function"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "migrateSingleton",
136
+ "outputs": [],
137
+ "stateMutability": "nonpayable",
138
+ "type": "function"
139
+ },
140
+ {
141
+ "inputs": [],
142
+ "name": "migrateWithFallbackHandler",
143
+ "outputs": [],
144
+ "stateMutability": "nonpayable",
145
+ "type": "function"
146
+ }
147
+ ]
148
+ }
@@ -0,0 +1,206 @@
1
+ {
2
+ "released": true,
3
+ "contractName": "SafeToL2Migration",
4
+ "version": "1.4.1",
5
+ "deployments": {
6
+ "canonical": {
7
+ "address": "0xfF83F6335d8930cBad1c0D439A841f01888D9f69",
8
+ "codeHash": "0xa83e7be2fa20c96dc9575e3937239d552f3831ea437d7c96397eec8736f0cba0"
9
+ }
10
+ },
11
+ "networkAddresses": {
12
+ "1": "canonical",
13
+ "10": "canonical",
14
+ "56": "canonical",
15
+ "100": "canonical",
16
+ "137": "canonical",
17
+ "196": "canonical",
18
+ "1101": "canonical",
19
+ "1337": "canonical",
20
+ "5000": "canonical",
21
+ "8453": "canonical",
22
+ "42161": "canonical",
23
+ "42220": "canonical",
24
+ "43114": "canonical",
25
+ "59144": "canonical",
26
+ "81457": "canonical",
27
+ "84532": "canonical",
28
+ "534352": "canonical",
29
+ "11155111": "canonical",
30
+ "1313161554": "canonical"
31
+ },
32
+ "abi": [
33
+ {
34
+ "inputs": [],
35
+ "stateMutability": "nonpayable",
36
+ "type": "constructor"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": false,
43
+ "internalType": "address",
44
+ "name": "singleton",
45
+ "type": "address"
46
+ }
47
+ ],
48
+ "name": "ChangedMasterCopy",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "anonymous": false,
53
+ "inputs": [
54
+ {
55
+ "indexed": false,
56
+ "internalType": "address",
57
+ "name": "to",
58
+ "type": "address"
59
+ },
60
+ {
61
+ "indexed": false,
62
+ "internalType": "uint256",
63
+ "name": "value",
64
+ "type": "uint256"
65
+ },
66
+ {
67
+ "indexed": false,
68
+ "internalType": "bytes",
69
+ "name": "data",
70
+ "type": "bytes"
71
+ },
72
+ {
73
+ "indexed": false,
74
+ "internalType": "enum Enum.Operation",
75
+ "name": "operation",
76
+ "type": "uint8"
77
+ },
78
+ {
79
+ "indexed": false,
80
+ "internalType": "uint256",
81
+ "name": "safeTxGas",
82
+ "type": "uint256"
83
+ },
84
+ {
85
+ "indexed": false,
86
+ "internalType": "uint256",
87
+ "name": "baseGas",
88
+ "type": "uint256"
89
+ },
90
+ {
91
+ "indexed": false,
92
+ "internalType": "uint256",
93
+ "name": "gasPrice",
94
+ "type": "uint256"
95
+ },
96
+ {
97
+ "indexed": false,
98
+ "internalType": "address",
99
+ "name": "gasToken",
100
+ "type": "address"
101
+ },
102
+ {
103
+ "indexed": false,
104
+ "internalType": "address payable",
105
+ "name": "refundReceiver",
106
+ "type": "address"
107
+ },
108
+ {
109
+ "indexed": false,
110
+ "internalType": "bytes",
111
+ "name": "signatures",
112
+ "type": "bytes"
113
+ },
114
+ {
115
+ "indexed": false,
116
+ "internalType": "bytes",
117
+ "name": "additionalInfo",
118
+ "type": "bytes"
119
+ }
120
+ ],
121
+ "name": "SafeMultiSigTransaction",
122
+ "type": "event"
123
+ },
124
+ {
125
+ "anonymous": false,
126
+ "inputs": [
127
+ {
128
+ "indexed": true,
129
+ "internalType": "address",
130
+ "name": "initiator",
131
+ "type": "address"
132
+ },
133
+ {
134
+ "indexed": false,
135
+ "internalType": "address[]",
136
+ "name": "owners",
137
+ "type": "address[]"
138
+ },
139
+ {
140
+ "indexed": false,
141
+ "internalType": "uint256",
142
+ "name": "threshold",
143
+ "type": "uint256"
144
+ },
145
+ {
146
+ "indexed": false,
147
+ "internalType": "address",
148
+ "name": "initializer",
149
+ "type": "address"
150
+ },
151
+ {
152
+ "indexed": false,
153
+ "internalType": "address",
154
+ "name": "fallbackHandler",
155
+ "type": "address"
156
+ }
157
+ ],
158
+ "name": "SafeSetup",
159
+ "type": "event"
160
+ },
161
+ {
162
+ "inputs": [],
163
+ "name": "MIGRATION_SINGLETON",
164
+ "outputs": [
165
+ {
166
+ "internalType": "address",
167
+ "name": "",
168
+ "type": "address"
169
+ }
170
+ ],
171
+ "stateMutability": "view",
172
+ "type": "function"
173
+ },
174
+ {
175
+ "inputs": [
176
+ {
177
+ "internalType": "address",
178
+ "name": "l2Singleton",
179
+ "type": "address"
180
+ },
181
+ {
182
+ "internalType": "address",
183
+ "name": "fallbackHandler",
184
+ "type": "address"
185
+ }
186
+ ],
187
+ "name": "migrateFromV111",
188
+ "outputs": [],
189
+ "stateMutability": "nonpayable",
190
+ "type": "function"
191
+ },
192
+ {
193
+ "inputs": [
194
+ {
195
+ "internalType": "address",
196
+ "name": "l2Singleton",
197
+ "type": "address"
198
+ }
199
+ ],
200
+ "name": "migrateToL2",
201
+ "outputs": [],
202
+ "stateMutability": "nonpayable",
203
+ "type": "function"
204
+ }
205
+ ]
206
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "released": true,
3
+ "contractName": "SafeToL2Setup",
4
+ "version": "1.4.1",
5
+ "deployments": {
6
+ "canonical": {
7
+ "address": "0xBD89A1CE4DDe368FFAB0eC35506eEcE0b1fFdc54",
8
+ "codeHash": "0x2f25df28caf984366ee584e13241707e85dcd5a6ea0c14267928dafc1fd6274b"
9
+ }
10
+ },
11
+ "networkAddresses": {
12
+ "1": "canonical",
13
+ "10": "canonical",
14
+ "56": "canonical",
15
+ "100": "canonical",
16
+ "137": "canonical",
17
+ "196": "canonical",
18
+ "1101": "canonical",
19
+ "1337": "canonical",
20
+ "5000": "canonical",
21
+ "8453": "canonical",
22
+ "42161": "canonical",
23
+ "42220": "canonical",
24
+ "43114": "canonical",
25
+ "59144": "canonical",
26
+ "81457": "canonical",
27
+ "84532": "canonical",
28
+ "534352": "canonical",
29
+ "11155111": "canonical",
30
+ "1313161554": "canonical"
31
+ },
32
+ "abi": [
33
+ {
34
+ "inputs": [],
35
+ "stateMutability": "nonpayable",
36
+ "type": "constructor"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": false,
43
+ "internalType": "address",
44
+ "name": "singleton",
45
+ "type": "address"
46
+ }
47
+ ],
48
+ "name": "ChangedMasterCopy",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "inputs": [
53
+ {
54
+ "internalType": "address",
55
+ "name": "l2Singleton",
56
+ "type": "address"
57
+ }
58
+ ],
59
+ "name": "setupToL2",
60
+ "outputs": [],
61
+ "stateMutability": "nonpayable",
62
+ "type": "function"
63
+ }
64
+ ]
65
+ }