> For the complete documentation index, see [llms.txt](https://whs3-doge5k.gitbook.io/smartcontract-security-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://whs3-doge5k.gitbook.io/smartcontract-security-docs/basics/6.-foundry/forge/forge-create.md).

# forge create

## 스마트 컨트랙트 배포

스마트 컨트랙트를 실제 네트워크에 배포하기 위한 명령어이다.

<figure><img src="https://2462457462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLf9vwRuaws92ULgGvzTi%2Fuploads%2FnMkwkNemtRhJ1jcGCWwR%2Fimage.png?alt=media&amp;token=dc2b0ea8-e07e-4240-abdc-9598f6b65c06" alt=""><figcaption></figcaption></figure>

### 명령어 형식

```bash
$ forge create src/<파일명>.sol:<컨트랙트명> \
  --rpc-url <RPC_URL> \
  --private-key <개인키> \
  --constructor-args <생성자 인자들>
```

***

### 동작 흐름

1. `forge create` 명령어 실행 시, 먼저 자동으로 컴파일을 수행한다.
2. 컴파일이 성공하면 `out/` 디렉토리에 생성된 바이트코드로 트랜잭션을 구성하고 서명한다.
3. 지정한 RPC URL을 통해 트랜잭션을 블록체인 네트워크로 전송한다.
4. 배포가 완료되면, 배포된 컨트랙트 주소와 트랜잭션 해시를 출력한다.

***

### 자주 사용하는 옵션들

| 옵션                         | 설명                                          |
| -------------------------- | ------------------------------------------- |
| --verify                   | Etherscan에 자동으로 코드 검증 (Etherscan API 세팅 필요) |
| --legacy                   | 레거시(예전) 트랜잭션 방식 사용 (EIP-1559 미지원 체인용)       |
| --unlocked                 | 하드웨어 지갑이나 노드에 연결된 계정 사용 시 필요                |
| --etherscan-api-key \<KEY> | Etherscan 검증용 API 키                         |

***

### 예시&#x20;

#### 프로젝트를 생성하면 주어지는 기본 파일인 Counter.sol을 forge create로 배포해보자

```solidity
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

contract Counter {
    uint256 public number;

    function setNumber(uint256 newNumber) public {
        number = newNumber;
    }

    function increment() public {
        number++;
    }
}
```

```
$  forge create --broadcast src/Counter.sol:Counter --rpc-url <rpc url> --private-key <개인 키>
```

해당 명령어를 사용하면 트랜잭션을  배포하고

<figure><img src="https://2462457462-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLf9vwRuaws92ULgGvzTi%2Fuploads%2Fj456RUA6DbFlvRWwjxdR%2Fimage%20(6).png?alt=media&amp;token=d0b9c7bb-ffca-4f48-955d-9c743cc673b9" alt=""><figcaption></figcaption></figure>

배포된 주소와 배포한 사람의 주소를 출력해준다.
