# Contract Verification

The Verify and Publish Contract screen allows users to verify their smart contracts by matching the source code with the deployed contract on the blockchain. This process ensures transparency, compliance, and trust in the contract’s operations.

<figure><img src="https://2711441218-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F36u23gOZEZc21qS2BbPV%2Fuploads%2FQRaOllYq11SWkBYgK2tZ%2Fimage.png?alt=media&#x26;token=b119a8b9-3d35-4359-a7e8-c1fbeea8fab4" alt=""><figcaption></figcaption></figure>

### Steps 1- Enter Contract Details

* **Enter Contract Address**\
  Provide the address of the deployed smart contract _(e.g., 0xF0245F...D80B60)_ in the input field. The system uses this address to fetch and validate the contract details on the blockchain.
* **Select Compiler Details**
  * **Compiler Type:** Select the compiler type used during the smart contract's development _(e.g., Solidity)_.
  * **Compiler Version:** Choose the specific version of the compiler _(e.g., v0.8.20)_ to ensure compatibility.
  * **Open Source License Type:** Specify the license under which the source code is published. This helps maintain compliance with licensing requirements.
* **Agree to Terms of Service**\
  Check the box to confirm agreement with the platform’s terms of service for using the verification feature.
* **Action Buttons**
  * **Next:** Proceed to the next step in the verification process, enabling code submission and verification.

### Steps 2- Verify and Publish&#x20;

This step allows users to verify a smart contract by uploading its source code and metadata, ensuring it matches the deployed bytecode on the blockchain. It is a crucial process for maintaining transparency and trust in blockchain applications.\
Highlights the importance of verifying source code to build trust and ensure transparency. Provides advanced settings guidance, such as bytecode hash matching and optimization runs.

<figure><img src="https://2711441218-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F36u23gOZEZc21qS2BbPV%2Fuploads%2FHXGbWI3szqUhwgD9Px6m%2Fimage.png?alt=media&#x26;token=1372aa9f-f1fd-4dd1-af8c-eb660f736c8e" alt=""><figcaption></figcaption></figure>

**Input Fields**

* **Upload Contract Source Code:**
  * Users can upload the contract's source code file in supported formats like Solidity or Vyper.
  * Ensures the uploaded code matches the on-chain bytecode for verification.\

* **Enter Contract ABI&#x20;**_**(Optional)**_**:**
  * Allows users to paste the contract’s Application Binary Interface _(ABI)_.
  * Useful for accessing and interacting with the contract's functions.\

* **Contract Library Address:**
  * If the contract relies on external libraries, users can specify up to 10 library addresses.
  * Ensures proper linkage and accurate verification of dependent components.\

* **Misc Settings&#x20;**_**(Runs, EVM Version)**_**:**
  * **Optimization Runs:** Specify the number of optimization runs used during compilation.
  * **EVM Version:** Indicate the Ethereum Virtual Machine version used, such as Istanbul or Berlin.\

* **Action Buttons:**
  * **Previous:** Returns to the previous step in the Verify and Publish Contract workflow.
  * **Done:** Completes the process, submitting the contract for verification and publication.

\
**How It Works**

* **Upload and Match:**
  * The system compares the uploaded source code with the deployed bytecode on the blockchain.
  * If matched, the contract is marked as verified.\

* **Verification Benefits:**
  * Verified contracts increase user confidence by proving that the deployed bytecode aligns with the provided source code.
  * Developers can showcase their contract's functionality and transparency.\

* **Advanced Customization:**
  * Enables developers to specify advanced configurations, ensuring accurate and comprehensive verification.
