pub async fn run(&self) -> eyre::Result<()> {
        if self.contract.path.is_none() {
            eyre::bail!("Contract info must be provided in the format <path>:<name>")
        }

        let etherscan = Client::new(self.chain.try_into()?, &self.etherscan_key)
            .wrap_err("Failed to create etherscan client")?;

        let verify_args = self.create_verify_request()?;

        trace!("submitting verification request {:?}", verify_args);

        let resp = etherscan
            .submit_contract_verification(&verify_args)
            .await
            .wrap_err("Failed to submit contract verification")?;

        if resp.status == "0" {
            if resp.message == "Contract source code already verified" {
                println!("Contract source code already verified.");
                return Ok(())
            }

            if resp.result == "Contract source code already verified" {
                println!("Contract source code already verified");
                return Ok(())
            }

            warn!("Failed verify submission: {:?}", resp);

            eprintln!(
                "Encountered an error verifying this contract:\nResponse: `{}`\nDetails: `{}`",
                resp.message, resp.result
            );
            std::process::exit(1)
        }

        println!(
            r#"Submitted contract for verification:
    Response: `{}`
    GUID: `{}`
    url: {}#code"#,
            resp.message,
            resp.result,
            etherscan.address_url(self.address)
        );
        Ok(())
    }
/// Run the verify command to submit the contract's source code for verification on etherscan
Run the verify command to submit the contract's source code for verification on etherscan
Run the verify command to submit the contract ' s source code for verification on etherscan
pub async fn run(&self) -> eyre::Result<()> {
        if self.contract.path.is_none() {
            eyre::bail!("Contract info must be provided in the format <path>:<name>")
        }
        let etherscan = Client::new(self.chain.try_into()?, &self.etherscan_key)
            .wrap_err("Failed to create etherscan client")?;
        let verify_args = self.create_verify_request()?;
        trace!("submitting verification request {:?}", verify_args);
        let resp = etherscan
            .submit_contract_verification(&verify_args)
            .await
            .wrap_err("Failed to submit contract verification")?;
        if resp.status == "0" {
            if resp.message == "Contract source code already verified" {
                println!("Contract source code already verified.");
                return Ok(())
            }
            if resp.result == "Contract source code already verified" {
                println!("Contract source code already verified");
                return Ok(())
            }
            warn!("Failed verify submission: {:?}", resp);
            eprintln!(
                "Encountered an error verifying this contract:\nResponse: `{}`\nDetails: `{}`",
                resp.message, resp.result
            );
            std::process::exit(1)
        }
        println!(
            r#"Submitted contract for verification:
    Response: `{}`
    GUID: `{}`
    url: {}#code"#,
            resp.message,
            resp.result,
            etherscan.address_url(self.address)
        );
        Ok(())
    }
pub async fn run ( & self ) -> eyre :: Result < ( ) > { if self . contract . path . is_none ( ) { eyre :: bail ! ( " " ) } let etherscan = Client :: new ( self . chain . try_into ( ) ? , & self . etherscan_key ) . wrap_err ( " " ) ? ; let verify_args = self . create_verify_request ( ) ? ; trace ! ( " " verify_args ) ; let resp = etherscan . submit_contract_verification ( & verify_args ) . await . wrap_err ( " " ) ? ; if resp . status == " " { if resp . message == " " { println ! ( " " ) ; return Ok ( ( ) ) } if resp . result == " " { println ! ( " " ) ; return Ok ( ( ) ) } warn ! ( " " resp ) ; eprintln ! ( " \n \n " resp message resp result ) ; std :: process :: exit ( 1 ) } println ! ( r#"Submitted contract for verification:
    Response: `{}`
    GUID: `{}`
    url: {}#code"# resp message resp result etherscan address_url ( self address ) ) ; Ok ( ( ) ) }
Run the verify command to submit the contract's source code for verification on etherscan
Run the verify command to submit the contract ' s source code for verification on etherscan
&self
&self