You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -329,6 +329,36 @@ How it works:
329
329
330
330
This design ensures safe upgrades for existing networks: contracts that were previously rejected due to size limits won't suddenly become deployable until the network explicitly activates the new limit at a specific block height.
331
331
332
+
### Restricting Contract Deployment
333
+
334
+
If you want a permissioned chain where only specific EOAs can deploy contracts, configure a deploy allowlist in the chainspec:
335
+
336
+
```json
337
+
"config": {
338
+
...,
339
+
"evolve": {
340
+
"deployAllowlist": [
341
+
"0xYourDeployerAddressHere",
342
+
"0xAnotherDeployerAddressHere"
343
+
],
344
+
"deployAllowlistActivationHeight": 0
345
+
}
346
+
}
347
+
```
348
+
349
+
How it works:
350
+
351
+
- The allowlist is enforced at the EVM handler before execution.
352
+
- Only top-level `CREATE` transactions from allowlisted callers are accepted.
353
+
- Contract-to-contract `CREATE/CREATE2` is still allowed (by design).
354
+
- If `deployAllowlistActivationHeight` is omitted, it defaults to `0` when the list is non-empty.
355
+
- If the list is empty or missing, contract deployment remains unrestricted (treated as disabled).
356
+
357
+
Operational notes:
358
+
359
+
- The allowlist is static and must be changed via a chainspec update.
360
+
- Duplicate entries or the zero address are rejected at startup.
0 commit comments