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

# Base에 배포하기

> Base에 스마트 컨트랙트를 배포하는 방법을 단계별로 안내합니다. 개발 환경 설정부터 Foundry를 사용한 배포까지 모든 과정을 다룹니다.

Base 배포 퀵스타트 가이드에 오신 것을 환영합니다! 이 종합 가이드는 환경을 설정하고 Base에 스마트 컨트랙트를 배포하는 방법을 안내합니다. 숙련된 개발자든 이제 막 시작하는 분이든, 이 가이드가 도움이 될 것입니다.

## 달성 목표

이 퀵스타트를 마치면 다음을 할 수 있습니다:

* Base에 배포하기 위한 개발 환경 설정
* Base에 스마트 컨트랙트 배포
* 프론트엔드를 스마트 컨트랙트에 연결

<Tip>
  **왜 Base인가?**

  Base는 다음 10억 명의 사용자를 온체인으로 온보딩하기 위해 구축된 빠르고, 저렴하며, 빌더 친화적인 이더리움 L2입니다. 이 가이드를 따르면, 글로벌 온체인 경제를 구축하고 있는 활발한 개발자, 창작자, 혁신가 생태계에 합류하게 됩니다.
</Tip>

## 개발 환경 설정

1. 새 프로젝트 디렉토리 생성

```bash theme={null}
mkdir my-base-project && cd my-base-project
```

2. 스마트 컨트랙트 개발을 위한 강력한 프레임워크인 Foundry 설치

```bash theme={null}
curl -L https://foundry.paradigm.xyz | bash
foundryup
```

이 명령은 Foundry를 설치하고 최신 버전으로 업데이트합니다.

3. 새 Solidity 프로젝트 초기화

```bash theme={null}
forge init
```

이제 Foundry 프로젝트가 준비되었습니다. `src` 디렉토리에서 예제 컨트랙트를 찾을 수 있으며, 자신의 컨트랙트로 교체할 수 있습니다. 이 가이드에서는 `/src/Counter.sol`에 제공된 Counter 컨트랙트를 사용합니다.

<Tip>
  Foundry는 이더리움 애플리케이션 개발을 위한 도구 모음을 제공합니다. Forge(테스팅용), Cast(체인과 상호작용), Anvil(로컬 노드 설정)이 포함됩니다. Foundry에 대해 더 알아보려면 [여기](https://book.getfoundry.sh/)를 참조하세요.
</Tip>

## Base로 Foundry 설정

스마트 컨트랙트를 Base에 배포하려면 두 가지 핵심 요소가 필요합니다:

1. Base 네트워크와 상호작용하기 위한 노드 연결
2. 컨트랙트를 배포하기 위한 자금이 있는 프라이빗 키

두 가지를 모두 설정해보겠습니다:

### 1. 노드 연결 설정

1. 프로젝트 루트 디렉토리에 `.env` 파일 생성
2. `.env` 파일에 Base 네트워크 RPC URL 추가

```bash theme={null}
BASE_RPC_URL="https://mainnet.base.org"
BASE_SEPOLIA_RPC_URL="https://sepolia.base.org"
```

3. 환경 변수 로드

```bash theme={null}
source .env
```

<Tip>
  Base Sepolia는 Base의 테스트 네트워크로, 이 가이드의 나머지 부분에서 사용됩니다. [여기에 나열된 파우셋](/base-chain/network-information/network-faucets)에서 무료 Base Sepolia ETH를 받을 수 있습니다.
</Tip>

### 2. 프라이빗 키 보안

1. Foundry의 보안 키스토어에 프라이빗 키 저장

```bash theme={null}
cast wallet import deployer --interactive
```

2. 프롬프트가 표시되면 프라이빗 키와 비밀번호를 입력합니다.

프라이빗 키는 git에서 추적하지 않는 `~/.foundry/keystores`에 저장됩니다.

<Warning>
  절대로 프라이빗 키를 공유하거나 커밋하지 마세요. 항상 안전하게 보관하고 신중하게 취급하세요.
</Warning>

## 컨트랙트 배포

이제 환경이 설정되었으니, Base Sepolia에 컨트랙트를 배포해보겠습니다.

1. (선택 사항) 먼저 드라이 런을 수행하여 배포를 시뮬레이션하고 모든 것이 올바르게 설정되었는지 확인합니다:

```bash theme={null}
forge create ./src/Counter.sol:Counter --rpc-url $BASE_SEPOLIA_RPC_URL --account deployer
```

이는 네트워크에 트랜잭션을 브로드캐스트하지 않고 시뮬레이션을 수행합니다. 트랜잭션 세부 정보와 컨트랙트 ABI를 볼 수 있지만 실제 배포는 발생하지 않습니다.

2. `--broadcast` 플래그를 추가하여 컨트랙트를 배포합니다:

```bash theme={null}
forge create ./src/Counter.sol:Counter --rpc-url $BASE_SEPOLIA_RPC_URL --account deployer --broadcast
```

<Tip>
  `--broadcast` 플래그는 실제로 컨트랙트를 네트워크에 배포하기 위해 **필수**입니다. 이 플래그 없이는 Foundry가 드라이 런 시뮬레이션만 수행합니다.
</Tip>

배포되는 컨트랙트의 형식은 `<contract-path>:<contract-name>`입니다.

3. 배포가 성공하면 다음과 같은 출력이 표시됩니다:

```
Deployer: 0x...
Deployed to: 0x...  <-- 귀하의 컨트랙트 주소
Transaction hash: 0x...
```

4. 배포된 컨트랙트 주소를 복사하여 `.env` 파일에 추가합니다:

```bash theme={null}
COUNTER_CONTRACT_ADDRESS="0x..."
```

`0x...`를 위 출력에서 실제 배포된 컨트랙트 주소로 교체하세요.

5. 새 환경 변수 로드:

```bash theme={null}
source .env
```

<Tip>
  `.env` 파일을 수정한 후에는 현재 터미널 세션에서 새 변수를 로드하기 위해 `source .env`를 실행해야 합니다.
</Tip>

### 배포 확인

컨트랙트가 성공적으로 배포되었는지 확인하려면:

1. 트랜잭션 해시를 사용하여 [Sepolia Basescan](https://sepolia.basescan.org/)에서 트랜잭션 확인
2. `cast` 명령을 사용하여 커맨드 라인에서 배포된 컨트랙트와 상호작용:

```bash theme={null}
cast call $COUNTER_CONTRACT_ADDRESS "number()(uint256)" --rpc-url $BASE_SEPOLIA_RPC_URL
```

<Tip>
  이 명령을 실행하기 전에 `.env` 파일에 `COUNTER_CONTRACT_ADDRESS`를 추가하고 `source .env`를 실행했는지 확인하세요. 그렇지 않으면 환경 변수가 정의되지 않아 명령이 실패합니다.
</Tip>

이는 Counter 컨트랙트의 `number` 스토리지 변수의 초기값인 `0`을 반환합니다.

**축하합니다! Base Sepolia에 스마트 컨트랙트를 배포했습니다!**

## 다음 단계

* [wagmi](https://wagmi.sh) 또는 [viem](https://viem.sh)을 사용하여 프론트엔드를 컨트랙트에 연결하세요.
* [Foundry 튜토리얼](https://book.getfoundry.sh/)에서 Foundry를 사용하여 커맨드 라인에서 컨트랙트와 상호작용하는 방법에 대해 더 알아보세요.
