> ## 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 배포 퀵스타트 가이드에 오신 것을 환영합니다! 이 종합 안내서는 환경을 설정하고 Base에서 스마트 컨트랙트를 배포하는 데 도움을 줍니다. 숙련된 개발자든 방금 시작한 분이든 이 가이드가 도움이 될 것입니다.

## 달성할 목표

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

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

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

  Base는 다음 10억 명의 사용자를 온체인으로 데려오기 위해 구축된 빠르고 저렴하며 빌더 친화적인 Ethereum 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(로컬 노드 설정용)을 포함한 Ethereum 애플리케이션 개발을 위한 도구 모음을 제공합니다. 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
```

배포되는 컨트랙트의 형식은 `<컨트랙트-경로>:<컨트랙트-이름>`입니다.

2. 배포 성공 후 트랜잭션 해시가 콘솔 출력에 표시됩니다

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

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

4. 새 환경 변수 로드

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

### 배포 확인

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

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
```

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

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

## 다음 단계

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