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
@@ -299,6 +299,36 @@ How it works:
299
299
300
300
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.
301
301
302
+
### Restricting Contract Deployment
303
+
304
+
If you want a permissioned chain where only specific EOAs can deploy contracts, configure a deploy allowlist in the chainspec:
305
+
306
+
```json
307
+
"config": {
308
+
...,
309
+
"evolve": {
310
+
"deployAllowlist": [
311
+
"0xYourDeployerAddressHere",
312
+
"0xAnotherDeployerAddressHere"
313
+
],
314
+
"deployAllowlistActivationHeight": 0
315
+
}
316
+
}
317
+
```
318
+
319
+
How it works:
320
+
321
+
- The allowlist is enforced at the EVM handler before execution.
322
+
- Only top-level `CREATE` transactions from allowlisted callers are accepted.
323
+
- Contract-to-contract `CREATE/CREATE2` is still allowed (by design).
324
+
- If `deployAllowlistActivationHeight` is omitted, it defaults to `0` when the list is non-empty.
325
+
- If the list is empty or missing, contract deployment remains unrestricted.
326
+
327
+
Operational notes:
328
+
329
+
- The allowlist is static and must be changed via a chainspec update.
330
+
- Duplicate entries or the zero address are rejected at startup.
0 commit comments