# Hardhat

## Deploying Smart Contract Using Hardhat

In this article, we'll learn how to build a smart contract with Hardhat.

### Preparation

Before you start, make sure that the following prerequisites are installed.

* Node.js and npm
* Hardhat

### Project Setting

1. Create a new directory for your project and navigate to it.
2. Run the following command to initialize a new npm project.

```bash
npm init -y
```

3. Run the following command to install Hardhat.

```bash
npm install --save-dev hardhat
```

4. Run the following command and follow the prompts to initialize Hardhat.

```bash
npx hardhat
```

### Writing Smart Contract

1. In the`contracts`directory, create a solidity file named MyContract.sol.
2. Create a file as shown below.

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MyContract {
    // Contract code goes here...
}
```

### Deploying Smart Contract

1. Create a new file called `deploy.js` in the `scripts` directory.
2. Write a deployment script using Hardhat's deployment API.

```javascript
const { ethers } = require("hardhat");

async function main() {
    const MyContract = await ethers.getContractFactory("MyContract");
    const myContract = await MyContract.deploy();

    await myContract.deployed();

    console.log("MyContract deployed to:", myContract.address);
}

main()
    .then(() => process.exit(0))
    .catch((error) => {
        console.error(error);
        process.exit(1);
    });
```

3. Run the following command to run the deployment script.

Set the network name to deploy to.

```bash
npx hardhat run scripts/deploy.js --network <network-name>
```

4. This script deploys a smart contract and writes the contract address to the console.

### Wrapping Up

You've successfully deployed a smart contract using Hardhat. Now you can call the deployed contract using its address.

For more information, visit [Hardhat's official website](https://hardhat.org/hardhat-runner/docs/getting-started).
