# Hardhat

### Verifying Your Contracts on Lumia L2

After you've deployed your contract to the Lumia L2 network, the next crucial step is to verify its source code. Verifying a contract involves making its source code publicly available, along with the compiler settings used, allowing anyone to compile it and compare the generated bytecode with the deployed version on the blockchain. This transparency is essential in an open platform like Lumia L2.

In this guide, we'll walk you through the process of verifying your contract using the Lumia L2 Explorer.

### Installation

1. If starting from scratch, create a new npm project in an empty folder using `npm init` (npm 7 or higher recommended).
2. Install Hardhat by running `npm install --save-dev hardhat` or `yarn add --dev hardhat`.
3. Create a Hardhat project by running `npx hardhat` and following the prompts.
4. Install the hardhat-verify plugin (v3.0.0+) using `npm install --save-dev @nomicfoundation/hardhat-verify` or `yarn add --dev @nomicfoundation/hardhat-verify`.
5. Add the plugin reference to your `hardhat.config.js` or `hardhat.config.ts` file.

### Configuration

1. Set up your Hardhat config file to support the network you're working on (e.g., Lumia Testnet).
2. Add an RPC URL with an arbitrary string as the API key.
3. To use BlockScout for verification, specify the explorer details under a `customChains` object, including the `chainID`, `apiURL`, and `browserURL`.

### Deployment and Verification

1. Use Hardhat Ignition for deployment.
2. Deploy your contract.
3. Verify the deployed contract using:

`npx hardhat verify --network lumia-testnet DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1"`.

{% hint style="info" %}
If the contract is automatically verified via the Ethereum Bytecode Database service, you may need to use the `--force` flag to enforce verification.
{% endhint %}

### Confirming Verification on BlockScout

1. Go to your Lumia Testnet URL and search for the contract address.
2. Check for a green checkmark ✅ indicating the contract is verified.
3. Scroll down to view and interact with the contract code.

<figure><img src="/files/S2uUBwwQCbA6LtnkCwgi" alt=""><figcaption><p>Sample verified contract view</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lumia.org/build/smartcontracts/verify/hardhat.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
