# 밸리데이터 노드

밸리데이터 노드 (Validator Node)는 롤업 프로토콜의 진행 상황을 지켜보고 해당 프로토콜에 참여하여 체인 상태를 안전하게 발전시키는 역할을 합니다.

## 1. 구축 이전 준비 사항

밸리데이터 노드를 운영하기 위해서는 사전 준비 사항이 몇 가지 필요합니다. 밸리데이터로 사용하려 하는 계정 (Account), 해당 계정이 사용할 지갑 컨트랙트, 그리고 해당 지갑 컨트랙트에 대한 심사 및 권한 부여 과정이 필요합니다.

### 1-1. 사용자의 밸리데이터 지갑 컨트랙트 생성

사용자는 밸리데이터 노드를 가동하기 위해 본인의 계정을 통해서 사용자 스스로 컨트랙트 지갑을 생성해야 합니다.&#x20;

해당 컨트랙트는 생성을 진행한 계정를 통해서만 제어할 수 있습니다. 이 시점에서 밸리데이터는 아직 권한이 부여되지 않은 상태이며 추가 과정을 통해서 권한을 부여받아야 합니다.&#x20;

지갑 컨트랙트는 동일한 계정으로 여러 번 발행할 수 있지만 여러 지갑을 소유한 경우 해당 계정으로 노드를 가동할 수 없으니 주의하십시오. 지갑 생성은 아래 repository를 참고해 주세요.

* <https://github.com/dKargo/dkargo-validator-utils>

### 1-2. 허가 진행

생성한 지갑 컨트랙트의 주소 (Address)를 제출하여 권한을 부여받습니다. 디카르고는 해당 요청에 대해서 검토한 뒤 밸리데이터 권한을 부여합니다. 질문 사항이나 문의는 [디카르고 문의 사이트](https://dkargo.io/ko/about/contact)를 통해 전달해 주세요.

## 2. 메인넷 (Mainnet)

### 2-1. Public L2 Arbitrum RPC EndPoints

디카르고의 부모 체인인 아비트럼 (Arbitrum)과 통신하기 위한 URL 정보입니다.

* <https://arb1.arbitrum.io/rpc>

> 속도 제한을 받지 않으려면 Arbitrum One RPC URL을 개인 URL로 바꾸세요.

### 2-2. Docker Images

* Latest Docker Image: <mark style="color:blue;">`repo.dkargo.io:59083/mainnet-validator:v0.0.1`</mark>

### 2-3. Required Custom Options

* `--node.staker.parent-chain-wallet.private-key`
  * Validator를 운용할 지갑의 개인 키

* `--init.url`
  * 빠른 동기화를 위해 초기화 데이터를 다운로드할 스냅샷 URL

* `--parent-chain.connection.url`
  * 부모 체인 엔드포인트 URL(default: Arbitrum public RPC endpoints)

* `--node.data-availability.parent-chain-node-url`
  * 부모 체인 엔드포인트 URL (default: Arbitrum public RPC endpoints)

### 2-4. Running a Node via Docker

{% code overflow="wrap" %}

```bash
docker run -d -p 8547:8547 -p 8548:8548 -v "<LOCAL_DATA_PATH>:/home/user/.arbitrum" repo.dkargo.io:59083/mainnet-validator:v0.0.1 --node.staker.parent-chain-wallet.private-key=<PRIVATE_KEY>
```

{% endcode %}

> `LOCAL_DATA_PATH`:  밸리데이터 노드의 데이터가 저장될 로컬 PC의 경로입니다.\
> `PRIVATE_KEY` : 밸리데이터 노드를 운용할 지갑의 개인 키 입니다.

### 2-5. Snapshot Sync

{% code overflow="wrap" %}

```bash
docker run -d -p 8547:8547 -p 8548:8548 -v "<LOCAL_DATA_PATH>:/home/user/.arbitrum" repo.dkargo.io:59083/mainnet-validator:v0.0.1 --node.staker.parent-chain-wallet.private-key=<PRIVATE_KEY> --init.url=<SNAPSHOT_URL>
```

{% endcode %}

> `SNAPSHOT_URL`: 스냅샷 데이터가 제공되는 URL 경로입니다. 자세한 내용은 [체인 스냅샷](https://docs.dkargo.io/undefined-5) 을 참고해주세요.

### 2ㅁ-6. Example (with snapshot)

{% code overflow="wrap" %}

```bash
docker run -d -p 8547:8547 -p 8548:8548 -v "<LOCAL_DATA_PATH>:/home/user/.arbitrum" repo.dkargo.io:59083/mainnet-validator:v0.0.1 --node.staker.parent-chain-wallet.private-key=<PRIVATE_KEY> --init.url="https://dkargo-snapshot.s3.ap-northeast-2.amazonaws.com/prune/latest/pruned.tar.gz"
```

{% endcode %}

## 3. 웨어하우스 (Testnet)

웨어하우스 (Warehouse)란, 디카르고 메인넷 운영 전 시험을 해볼 수 있는 테스트 네트워크입니다.

### 3-1. Public L2 Arbitrum RPC EndPoints

디카르고의 부모 체인인 아비트럼 (Arbitrum)과 통신하기 위한 URL 정보입니다.

* [https://sepolia-rollup.arbitrum.io/rpc](https://sepolia-rollup.arbitrum.io/rpc**)

> 속도 제한을 받지 않으려면 Arbitrum One RPC URL을 개인 URL로 바꾸세요.

### 3-2. Docker Images

* Latest Docker Image: <mark style="color:blue;">`repo.dkargo.io:59083/warehouse-validator:v0.0.1`</mark>

### 3-3. Required Custom Options

* `--node.staker.parent-chain-wallet.private-key`
  * Validator를 운용할 지갑의 개인 키

* `--init.url`
  * 빠른 동기화를 위해 초기화 데이터를 다운로드할 스냅샷 URL

* `--parent-chain.connection.url`
  * 부모 체인 엔드포인트 URL(default: Arbitrum public RPC endpoints)

* `--node.data-availability.parent-chain-node-url`
  * 부모 체인 엔드포인트 URL (default: Arbitrum public RPC endpoints)

### 3-4. Running a Node via Docker

{% code overflow="wrap" %}

```bash
docker run -d -p 8547:8547 -p 8548:8548 -v "<LOCAL_DATA_PATH>:/home/user/.arbitrum" repo.dkargo.io:59083/warehouse-validator:v0.0.1 --node.staker.parent-chain-wallet.private-key=<PRIVATE_KEY>
```

{% endcode %}

> `LOCAL_DATA_PATH`:  밸리데이터 노드의 데이터가 저장될 로컬 PC의 경로입니다.\
> `PRIVATE_KEY` : 밸리데이터 노드를 운용할 지갑의 개인 키 입니다.

### 3-5. Snapshot Sync

{% code overflow="wrap" %}

```bash
docker run -d -p 8547:8547 -p 8548:8548 -v "<LOCAL_DATA_PATH>:/home/user/.arbitrum" repo.dkargo.io:59083/warehouse-validator:v0.0.1 --node.staker.parent-chain-wallet.private-key=<PRIVATE_KEY> --init.url=<SNAPSHOT_URL>
```

{% endcode %}

> `SNAPSHOT_URL`: 스냅샷 데이터가 제공되는 URL 경로입니다. 자세한 내용은 [체인 스냅샷](https://docs.dkargo.io/undefined-5) 을 참고해주세요.

### 3-6. Example (with snapshot)

{% code overflow="wrap" %}

```bash
docker run -d -p 8547:8547 -p 8548:8548 -v "<LOCAL_DATA_PATH>:/home/user/.arbitrum" repo.dkargo.io:59083/warehouse-validator:v0.0.1 --node.staker.parent-chain-wallet.private-key=<PRIVATE_KEY> --init.url="https://warehouse-snapshot.s3.ap-northeast-2.amazonaws.com/prune/latest/pruned.tar.gz"
```

{% endcode %}
