Skip to content

Commit c160ae3

Browse files
committed
Adding possibility to add more prefunded accounts
Add possibility to add more prefunded accounts to the L1 generated genesis by accepting a repeated `[]string` flag `--prefunded-accounts` which accepts the same format (private key in hex) as the static prefunded accounts.
1 parent 06bf746 commit c160ae3

File tree

3 files changed

+66
-33
lines changed

3 files changed

+66
-33
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ docker logs -f $(docker ps | grep contender | cut -d' ' -f1)
118118
- `--log-level` (string): Log level to use (debug, info, warn, error, fatal). Defaults to `info`.
119119
- `--labels` (key=val): Custom labels to apply to your deployment.
120120
- `--disable-logs` (bool): Disable the logs for the services. Defaults to `false`.
121+
- `--prefunded-accounts` (string, repeated): Fund this account in addition to static prefunded accounts, the input should the account's private key in hexadecimal format prefixed with 0x, the account is added to L1 and to L2 (if present).
121122
- `--contender` (bool): Enable [contender](https://github.com/flashbots/contender) spammer. Required to use other contender flags.
122123
- `--contender.arg` (string): Pass custom args to the contender CLI.
123124
Example: `--contender.arg "--tpb 20"`
@@ -126,6 +127,21 @@ docker logs -f $(docker ps | grep contender | cut -d' ' -f1)
126127

127128
To stop the playground, press `Ctrl+C`.
128129

130+
### Static Prefunded Accounts
131+
132+
The following addresses are pre-funded on L1 and to L2 (if present), all with a balance of `0x10000000000000000000000 wei` (equivalent to `309485009.8213451 ETH`):
133+
134+
- `0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266` (Private key `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`)
135+
- `0x70997970c51812dc3a010c7d01b50e0d17dc79c8` (Private key `0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d`)
136+
- `0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc` (Private key `0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a`)
137+
- `0x90f79bf6eb2c4f870365e785982e1f101e93b906` (Private key `0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6`)
138+
- `0x15d34aaf54267db7d7c367839aaf71a00a2c6a65` (Private key `0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a`)
139+
- `0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc` (Private key `0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba`)
140+
- `0x976ea74026e726554db657fa54763abd0c3a0aa9` (Private key `0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e`)
141+
- `0x14dc79964da2c08b23698b3d3cc7ca32193d9955` (Private key `0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356`)
142+
- `0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f` (Private key `0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97`)
143+
- `0xa0ee7a142d267c1f36714e4a8f75612f20a79720` (Private key `0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6`)
144+
129145
## Logs
130146

131147
```bash

main.go

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,25 @@ import (
1818
var version = "dev"
1919

2020
var (
21-
outputFlag string
22-
genesisDelayFlag uint64
23-
withOverrides []string
24-
watchdog bool
25-
dryRun bool
26-
interactive bool
27-
timeout time.Duration
28-
logLevelFlag string
29-
bindExternal bool
30-
withPrometheus bool
31-
networkName string
32-
labels playground.MapStringFlag
33-
disableLogs bool
34-
platform string
35-
contenderEnabled bool
36-
contenderArgs []string
37-
contenderTarget string
38-
detached bool
21+
outputFlag string
22+
genesisDelayFlag uint64
23+
withOverrides []string
24+
watchdog bool
25+
dryRun bool
26+
interactive bool
27+
timeout time.Duration
28+
logLevelFlag string
29+
bindExternal bool
30+
withPrometheus bool
31+
networkName string
32+
labels playground.MapStringFlag
33+
disableLogs bool
34+
platform string
35+
contenderEnabled bool
36+
contenderArgs []string
37+
contenderTarget string
38+
detached bool
39+
prefundedAccounts []string
3940
)
4041

4142
var rootCmd = &cobra.Command{
@@ -181,6 +182,7 @@ func main() {
181182
recipeCmd.Flags().StringArrayVar(&contenderArgs, "contender.arg", []string{}, "add/override contender CLI flags")
182183
recipeCmd.Flags().StringVar(&contenderTarget, "contender.target", "", "override the node that contender spams -- accepts names like \"el\"")
183184
recipeCmd.Flags().BoolVar(&detached, "detached", false, "Detached mode: Run the recipes in the background")
185+
recipeCmd.Flags().StringArrayVar(&prefundedAccounts, "prefunded-accounts", []string{}, "Fund this account in addition to static prefunded accounts, the input should the account's private key in hexadecimal format prefixed with 0x, the account is added to L1 and to L2 (if present)")
184186

185187
startCmd.AddCommand(recipeCmd)
186188
}
@@ -226,6 +228,7 @@ func runIt(recipe playground.Recipe) error {
226228
builder := recipe.Artifacts()
227229
builder.OutputDir(outputFlag)
228230
builder.GenesisDelay(genesisDelayFlag)
231+
builder.PrefundedAccounts(prefundedAccounts)
229232
artifacts, err := builder.Build()
230233
if err != nil {
231234
return err

playground/artifacts.go

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ type ArtifactsBuilder struct {
6969
applyLatestL2Fork *uint64
7070
l1BlockTimeInSeconds uint64
7171
opBlockTimeInSeconds uint64
72+
prefundedAccounts []string
7273
}
7374

7475
func NewArtifactsBuilder() *ArtifactsBuilder {
@@ -111,6 +112,32 @@ func (b *ArtifactsBuilder) OpBlockTime(blockTimeSeconds uint64) *ArtifactsBuilde
111112
return b
112113
}
113114

115+
func (b *ArtifactsBuilder) PrefundedAccounts(accounts []string) *ArtifactsBuilder {
116+
b.prefundedAccounts = accounts
117+
return b
118+
}
119+
120+
var staticPrefundedAccounts = []string{
121+
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
122+
"0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d",
123+
"0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a",
124+
"0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6",
125+
"0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a",
126+
"0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
127+
"0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e",
128+
"0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356",
129+
"0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97",
130+
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6",
131+
}
132+
133+
func (b *ArtifactsBuilder) getPrefundedAccounts() []string {
134+
if len(b.prefundedAccounts) > 0 {
135+
return append(append([]string{}, staticPrefundedAccounts...), b.prefundedAccounts...)
136+
}
137+
138+
return staticPrefundedAccounts
139+
}
140+
114141
type Artifacts struct {
115142
Out *output
116143
}
@@ -171,7 +198,7 @@ func (b *ArtifactsBuilder) Build() (*Artifacts, error) {
171198
// add pre-funded accounts
172199
prefundedBalance, _ := new(big.Int).SetString("10000000000000000000000", 16)
173200

174-
for _, privStr := range prefundedAccounts {
201+
for _, privStr := range b.getPrefundedAccounts() {
175202
priv, err := getPrivKey(privStr)
176203
if err != nil {
177204
return nil, err
@@ -294,7 +321,7 @@ func (b *ArtifactsBuilder) Build() (*Artifacts, error) {
294321
// Update the allocs to include the same prefunded accounts as the L1 genesis.
295322
allocs := make(map[string]interface{})
296323
input["alloc"] = allocs
297-
for _, privStr := range prefundedAccounts {
324+
for _, privStr := range b.getPrefundedAccounts() {
298325
priv, err := getPrivKey(privStr)
299326
if err != nil {
300327
return nil, err
@@ -689,19 +716,6 @@ func isByteSlice(t reflect.Type) bool {
689716
return t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Uint8
690717
}
691718

692-
var prefundedAccounts = []string{
693-
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
694-
"0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d",
695-
"0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a",
696-
"0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6",
697-
"0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a",
698-
"0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
699-
"0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e",
700-
"0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356",
701-
"0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97",
702-
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6",
703-
}
704-
705719
func applyTemplate2(templateStr []byte, input interface{}) ([]byte, error) {
706720
tpl, err := template.New("").Parse(string(templateStr))
707721
if err != nil {

0 commit comments

Comments
 (0)