Skip to content

Commit 60d8bb5

Browse files
committed
feat(op-deployer): customize etherscan URL from CLI and environment
1 parent 6e0583f commit 60d8bb5

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

op-deployer/pkg/deployer/flags.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const (
2424
PrivateKeyFlagName = "private-key"
2525
IntentTypeFlagName = "intent-type"
2626
EtherscanAPIKeyFlagName = "etherscan-api-key"
27+
EtherscanUrlFlagName = "etherscan-url"
2728
InputFileFlagName = "input-file"
2829
ContractNameFlagName = "contract-name"
2930
)
@@ -104,6 +105,12 @@ var (
104105
EnvVars: PrefixEnvVar("ETHERSCAN_API_KEY"),
105106
Required: true,
106107
}
108+
EtherscanUrlFlag = &cli.StringFlag{
109+
Name: EtherscanUrlFlagName,
110+
Usage: "etherscan API URL for contract verification. when empty, default URLs are used.",
111+
EnvVars: PrefixEnvVar("ETHERSCAN_API_URL"),
112+
Required: false,
113+
}
107114
InputFileFlag = &cli.StringFlag{
108115
Name: InputFileFlagName,
109116
Usage: "filepath of input file for command",
@@ -143,6 +150,7 @@ var VerifyFlags = []cli.Flag{
143150
L1RPCURLFlag,
144151
ArtifactsLocatorFlag,
145152
EtherscanAPIKeyFlag,
153+
EtherscanUrlFlag,
146154
InputFileFlag,
147155
ContractNameFlag,
148156
}

op-deployer/pkg/deployer/verify/verifier.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,17 @@ type Verifier struct {
3030
numFailed int
3131
}
3232

33-
func NewVerifier(apiKey string, l1ChainID uint64, artifactsFS foundry.StatDirFs, l log.Logger, l1Client *ethclient.Client) (*Verifier, error) {
34-
etherscanUrl, err := getAPIEndpoint(l1ChainID)
35-
if err != nil {
36-
return nil, fmt.Errorf("unsupported L1 chain ID: %d", l1ChainID)
33+
func NewVerifier(apiKey string, l1ChainID uint64, artifactsFS foundry.StatDirFs, l log.Logger, l1Client *ethclient.Client, etherscanUrl string) (*Verifier, error) {
34+
if len(etherscanUrl) == 0 {
35+
var err error
36+
etherscanUrl, err = getAPIEndpoint(l1ChainID)
37+
if err != nil {
38+
return nil, fmt.Errorf("unsupported L1 chain ID: %d", l1ChainID)
39+
}
40+
l.Info("found etherscan url", "url", etherscanUrl)
41+
} else {
42+
l.Info("using provided etherscan url", "url", etherscanUrl)
3743
}
38-
l.Info("found etherscan url", "url", etherscanUrl)
3944

4045
etherscan := NewEtherscanClient(apiKey, etherscanUrl, rate.NewLimiter(rate.Limit(1), 1))
4146

@@ -94,7 +99,8 @@ func VerifyCLI(cliCtx *cli.Context) error {
9499
}
95100
l.Info("Downloaded artifacts", "path", artifactsFS)
96101

97-
v, err := NewVerifier(etherscanAPIKey, l1ChainId, artifactsFS, l, l1Client)
102+
etherscanUrl := cliCtx.String(deployer.EtherscanUrlFlagName)
103+
v, err := NewVerifier(etherscanAPIKey, l1ChainId, artifactsFS, l, l1Client, etherscanUrl)
98104
if err != nil {
99105
return fmt.Errorf("failed to create verifier: %w", err)
100106
}

0 commit comments

Comments
 (0)