> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datafdn.org/llms.txt
> Use this file to discover all available pages before exploring further.

# 로컬넷 실행하기

> 개발 및 테스트를 위한 로컬 DATA 네트워크 설정 및 실행 가이드

# 개요

Docker Compose를 사용하여 하나의 부트 노드와 네 개의 Validator 노드로 구성된 자체 로컬 DATA 네트워크를 손쉽게 설정할 수 있습니다. 이 로컬 네트워크를 통해 DATA 네트워크의 합의 계층을 테스트하거나, 프리컴파일된 프리미티브인 IP 그래프를 사용해 애플리케이션을 배포하고 다양한 테스트를 수행할 수 있습니다. 또한 필요에 따라 언제든지 네트워크를 재설정할 수 있습니다.

# 로컬 DATA 네트워크 실행

<Note>
  DATA Foundation 로컬 네트워크 실행에 대한 자세한 정보는 다음 저장소를 참고하세요: [https://github.com/piplabs/story-localnet](https://github.com/piplabs/story-localnet)
</Note>

## 사전 준비 사항

로컬 네트워크를 설정하려면 [Docker](https://docs.docker.com/get-started/get-docker/)가 필요합니다.

## 1단계 - Docker 실행

Docker를 실행하세요.

## 2단계 - 저장소 클론

`story`, `story-geth`, `story-localnet` 세 개의 저장소를 클론해야 합니다.\
세 저장소가 모두 같은 하위 폴더 안에 위치하도록 하세요.

```bash theme={null}
# clone repositories
git clone https://github.com/piplabs/story.git
git clone https://github.com/piplabs/story-geth.git
git clone https://github.com/piplabs/story-localnet.git
```

## 3단계 - 노드 시작

story-localnet 프로젝트로 이동하여 로컬 네트워크를 시작하세요.

```bash theme={null}
# move to story-localnet
cd story-localnet

# start story local network
./start.sh
```

## 4단계 - 노드 종료

DATA Foundation 로컬 네트워크를 중지하려면 아래 스크립트를 실행하면 됩니다.

```bash theme={null}
# terminate story local network
./terminate.sh
```

***

## 제네시스에서 계정에 토큰 할당하는 방법

로컬 네트워크에서 테스트를 위해 계정에 DATA 토큰을 할당해야 할 수 있습니다.\
제네시스 블록에서 계정에 토큰을 할당하려면 다음 단계를 따르세요:

1. `config/story/genesis-geth.json`의 alloc 섹션에 계정 정보를 추가합니다:

```json theme={null}
"<hex-encoded-account-address>": {
  "nonce": "0x0",
  "balance": "<hex-encoded-balance>",
  "code": "0x",
  "storage": {}
}
```

2. `update-genesis-hash.sh` 스크립트를 실행하여 제네시스 블록 해시를 업데이트합니다:

```bash theme={null}
./update-genesis-hash.sh
```

***

## DATA Foundation 로컬 네트워크와 상호 작용하는 방법

기본적으로 DATA Foundation 로컬 네트워크는 다음 포트를 통해 상호 작용할 수 있도록 열려 있습니다.

| 포트    | 서비스        | 역할                                                |
| :---- | :--------- | :------------------------------------------------ |
| 8545  | story-geth | DATA Foundation 실행 클라이언트용 RPC 서버 엔드포인트            |
| 1317  | story-node | DATA Foundation 합의 클라이언트와 상호 작용하기 위한 API 서버 엔드포인트 |
| 26657 | story-node | DATA Foundation 합의 클라이언트용 cosmos-sdk RPC 서버 엔드포인트 |

***

## 모니터링 시스템

이 설정에는 블록체인 네트워크에 대한 중앙 집중식 메트릭과 로그 시각화를 제공하기 위한 모니터링 스택이 포함되어 있습니다.\
도구로는 **Prometheus**, **Loki**, **Promtail**, **Grafana**가 있으며, 모두 Docker Compose를 통해 통합되어 있습니다.

### **구성 요소 및 접근 정보**

| 서비스        | 역할                                | 기본 포트                          | 접근 URL                  |
| :--------- | :-------------------------------- | :----------------------------- | :---------------------- |
| Prometheus | 성능 모니터링을 위해 노드 및 자체 메트릭 수집        | `9090`                         | `http://localhost:9090` |
| Loki       | Promtail을 통해 네트워크 노드의 로그를 집계 및 저장 | `3100`                         | `http://localhost:3100` |
| Promtail   | Docker 컨테이너의 로그를 수집하여 Loki로 전송    | `9080` (API), `9095` (Metrics) | `http://localhost:9080` |
| Grafana    | 메트릭 및 로그 시각화를 위한 대시보드 인터페이스 제공    | `3000`                         | `http://localhost:3000` |
