> ## Documentation Index
> Fetch the complete documentation index at: https://injectivelabs-docs-ai-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Hardhat으로 스마트 컨트랙트 배포

## 사전 요구 사항

Hardhat 프로젝트가 이미 설정되어 있고 스마트 컨트랙트가 성공적으로 컴파일되어 있어야 합니다.
방법은 [Hardhat 설정 및 스마트 컨트랙트 컴파일](./compile-hardhat/) 튜토리얼을 참조하세요.

선택 사항이지만 강력히 권장: 스마트 컨트랙트를 성공적으로 테스트했어야 합니다.
방법은 [Hardhat으로 스마트 컨트랙트 테스트](./test-hardhat/) 튜토리얼을 참조하세요.

## 배포 스크립트 편집

컴퓨터에서 컴파일한 스마트 컨트랙트가 Injective 테스트넷에 존재하려면 네트워크에 배포해야 합니다.

이를 위해 `hardhat.config.js`에 지정된 값을 사용하여 Hardhat이 사전 구성한 `ethers` 인스턴스를 사용하는 스크립트를 사용합니다.

파일을 여세요: `script/deploy.js`

```js theme={null}
async function main() {
    const Counter = await ethers.getContractFactory('Counter');
    const counter = await Counter.deploy({
        gasPrice: 160e6,
        gasLimit: 2e6,
    });
    await counter.waitForDeployment();
    const address = await counter.getAddress();

    console.log('Counter smart contract deployed to:', address);
}
```

스마트 컨트랙트를 컴파일한 후 `artifacts/contracts/Counter.sol/Counter.json`을 살펴본 것을 기억하시나요? 이 스크립트에서 `ethers.getContractFactory('Counter')`는 해당 파일을 검색하고 ABI와 EVM 바이트코드를 추출합니다.
다음 줄은 해당 정보를 사용하여 배포 트랜잭션을 구성하고 네트워크에 제출합니다.
성공하면 스마트 컨트랙트가 배포된 주소가 출력됩니다. 예:
[`0x98798cc92651B1876e9Cc91EcBcfe64cac720a1b`](https://testnet.blockscout.injective.network/address/0x98798cc92651B1876e9Cc91EcBcfe64cac720a1b)

다른 EVM 네트워크에서는 트랜잭션(배포 트랜잭션 포함)이 가스 가격과 가스 한도를 지정할 필요가 없습니다. 그러나 현재 Injective에서는 이것이 필요합니다.

## 배포 스크립트 실행

다음 명령을 실행하여 스마트 컨트랙트를 배포합니다:

```shell theme={null}
npx hardhat run script/deploy.js --network inj_testnet
```

배포된 주소를 복사하고 [`https://testnet.blockscout.injective.network`](https://testnet.blockscout.injective.network/)를 방문하여 검색 필드에 주소를 붙여넣으세요.
방금 배포한 스마트 컨트랙트에 대한 블록 탐색기의 스마트 컨트랙트 페이지를 방문하게 됩니다.

"Contract" 탭을 클릭하면 해당 컨트랙트의 EVM 바이트코드가 표시되며 컴파일 후 아티팩트 디렉토리에 있는 EVM 바이트코드와 일치합니다.

## 다음 단계

이제 스마트 컨트랙트를 배포했으므로 해당 스마트 컨트랙트를 검증할 준비가 되었습니다!
다음으로 [Hardhat으로 스마트 컨트랙트 검증](./verify-hardhat/) 튜토리얼을 확인하세요.
