Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Subcommands = cli.Commands{ { Name: "devnet", Usage: "Initialize new L1 and L2 genesis files and rollup config suitable for a local devnet", Flags: []cli.Flag{ cli.StringFlag{ Name: "deploy-config", Usage: "Path to hardhat deploy config file", }, cli.StringFlag{ Name: "outfile.l1", Usage: "Path to L1 genesis output file", }, cli.StringFlag{ Name: "outfile.l2", Usage: "Path to L2 genesis output file", }, cli.StringFlag{ Name: "outfile.rollup", Usage: "Path to rollup output file", }, }, Action: func(ctx *cli.Context) error { deployConfig := ctx.String("deploy-config") config, err := genesis.NewDeployConfig(deployConfig) if err != nil { return err } if err := config.InitDeveloperDeployedAddresses(); err != nil { return err } if err := config.Check(); err != nil { return err } l1Genesis, err := genesis.BuildL1DeveloperGenesis(config) if err != nil { return err } l1StartBlock := l1Genesis.ToBlock() l2Genesis, err := genesis.BuildL2DeveloperGenesis(config, l1StartBlock) if err != nil { return err } l2GenesisBlock := l2Genesis.ToBlock() rollupConfig, err := config.RollupConfig(l1StartBlock, l2GenesisBlock.Hash(), l2GenesisBlock.Number().Uint64()) if err != nil { return err } if err := writeGenesisFile(ctx.String("outfile.l1"), l1Genesis); err != nil { return err } if err := writeGenesisFile(ctx.String("outfile.l2"), l2Genesis); err != nil { return err } return writeGenesisFile(ctx.String("outfile.rollup"), rollupConfig) }, }, { Name: "l2", Usage: "Generates an L2 genesis file and rollup config suitable for a deployed network", Flags: []cli.Flag{ cli.StringFlag{ Name: "l1-rpc", Usage: "L1 RPC URL", }, cli.StringFlag{ Name: "deploy-config", Usage: "Path to hardhat deploy config file", }, cli.StringFlag{ Name: "deployment-dir", Usage: "Path to deployment directory", }, cli.StringFlag{ Name: "outfile.l2", Usage: "Path to L2 genesis output file", }, cli.StringFlag{ Name: "outfile.rollup", Usage: "Path to rollup output file", }, }, Action: func(ctx *cli.Context) error { deployConfig := ctx.String("deploy-config") config, err := genesis.NewDeployConfig(deployConfig) if err != nil { return err } depPath, network := filepath.Split(ctx.String("deployment-dir")) hh, err := hardhat.New(network, nil, []string{depPath}) if err != nil { return err } if err := config.GetDeployedAddresses(hh); err != nil { return err } if err := config.Check(); err != nil { return err } client, err := ethclient.Dial(ctx.String("l1-rpc")) if err != nil { return fmt.Errorf("cannot dial %s: %w", ctx.String("l1-rpc"), err) } var l1StartBlock *types.Block if config.L1StartingBlockTag.BlockHash != nil { l1StartBlock, err = client.BlockByHash(context.Background(), *config.L1StartingBlockTag.BlockHash) } else if config.L1StartingBlockTag.BlockNumber != nil { l1StartBlock, err = client.BlockByNumber(context.Background(), big.NewInt(config.L1StartingBlockTag.BlockNumber.Int64())) } if err != nil { return fmt.Errorf("error getting l1 start block: %w", err) } l2Genesis, err := genesis.BuildL2DeveloperGenesis(config, l1StartBlock) if err != nil { return fmt.Errorf("error creating l2 developer genesis: %w", err) } l2GenesisBlock := l2Genesis.ToBlock() rollupConfig, err := config.RollupConfig(l1StartBlock, l2GenesisBlock.Hash(), l2GenesisBlock.Number().Uint64()) if err != nil { return err } if err := rollupConfig.Check(); err != nil { return fmt.Errorf("generated rollup config does not pass validation: %w", err) } if err := writeGenesisFile(ctx.String("outfile.l2"), l2Genesis); err != nil { return err } return writeGenesisFile(ctx.String("outfile.rollup"), rollupConfig) }, }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.