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

# Kona Node를 바이너리로 실행하기

> op-reth 실행 클라이언트와 함께 kona-node 바이너리를 실행하는 방법을 두 클라이언트 시작부터 node 동기화 확인까지 설명합니다.

> [!NOTE]
>
> 아직 `kona-node` 바이너리가 없다면 [GitHub 릴리스 페이지](https://github.com/ethereum-optimism/optimism/releases)에서
> 최신 사전 빌드 바이너리를 다운로드하거나,
> [설치](https://docs.optimism.io/ko/node-operators/kona-node/install/overview.md)
> 가이드를 참고하여 직접 빌드하십시오.

`kona-node`는 L2 합의 클라이언트("rollup node"라고도 함)입니다.
즉, 이 node는 *합의* 계층 클라이언트이므로 L2 체인을 동기화하고
따라가려면 대응하는 실행 계층 클라이언트가 필요합니다.
OP Stack은 L1 실행 클라이언트에 대해 최소 diff 방식을 사용하며,
[`op-reth`][op-reth]가 주요 L2 실행 계층 클라이언트입니다.

이 섹션에서는 [`op-reth`][op-reth] 인스턴스와 함께
`kona-node`를 실행하는 방법을 설명합니다.

`kona-node`는 별도 설정 없이 [`superchain-registry`][scr]에 포함된
모든 `OP Stack` 체인에 사용할 수 있습니다. 새로운 devnet과 같이
레지스트리 외부의 `OP Stack` 체인을 사용하려면 사용자 지정
`--l2-config-file` CLI 플래그로 rollup 설정을 지정해야 합니다.
자세한 내용은 [rollup 설정 로딩](https://docs.optimism.io/ko/node-operators/kona-node/configuration.md#rollup-configuration-loading)을
참조하십시오.

> [!NOTE]
>
> 이 튜토리얼은 `kona-node`를 바이너리로 실행하는 과정을
> 안내합니다. Docker를 사용하려면 `kona`에서 제공하는
> `docker-compose` 설정을 사용하는
> [Docker 가이드](https://docs.optimism.io/ko/node-operators/kona-node/run/docker.md)를 참조하십시오.
> `docker-compose` 설정은 `op-reth`와 함께 `kona-node`를
> 자동으로 부트스트랩하며, grafana 대시보드와 기본 Prometheus
> 설정도 함께 프로비저닝합니다. 잘못된 설정을 피하려면
> [Docker 가이드](https://docs.optimism.io/ko/node-operators/kona-node/run/docker.md)를 따르는 것을 권장합니다.

`kona-node`에는 몇 가지 CLI 플래그가 필요합니다.

* `--l1-eth-rpc <L1_ETH_RPC>`
  L1 실행 클라이언트 RPC API의 URL입니다.
* `--l1-beacon <L1_BEACON>`
  L1 beacon API의 URL입니다.
* `--l2-engine-rpc <L2_ENGINE_RPC>`
  L2 실행 클라이언트의 engine API 엔드포인트 URL입니다.

L2 engine RPC는 실행 계층 클라이언트인 [`op-reth`][op-reth]의
engine API를 가리킵니다.

L2 체인이 도출되는 L1 체인 데이터를 가져오기 위해
L1 beacon 엔드포인트와 RPC 엔드포인트도 필요합니다.

먼저 [`op-reth`][op-reth] 인스턴스를 시작합니다.
[`op-reth` 문서][op-reth-docs]에는 OP Stack 체인(L2)용 `op-reth` node를
실행하는 방법이 매우 자세히 설명되어 있습니다. 이 데모에서는
`base`를 사용하지만, 다른 OP Stack 체인을 사용해도 됩니다.

```
op-reth node \
    --chain base \
    --rollup.sequencer-http https://mainnet-sequencer.base.org \
    --http \
    --ws \
    --authrpc.port 9551 \
    --authrpc.jwtsecret /path/to/jwt.hex
```

Kona에는 `jwt.hex` 파일을 생성하는 데 사용할 수 있는 `generate-jwt`
justfile 타깃이 있습니다. `just generate-jwt`를 실행하십시오.

> [!NOTE]
>
> `--authrpc.jwtsecret`에 전달하는 JWT 토큰 파일 경로는
> `kona-node`에 전달하는 경로와 **반드시** 같아야 합니다.
>
> 이 JWT 토큰은 `op-reth` 클라이언트가 `kona-node`에서
> engine RPC로 보내는 요청을 인증하는 수단입니다.
>
> 기본적으로 `kona-node`는 로컬 디렉터리의 `jwt.hex` 파일에서
> JWT 토큰을 읽으려고 시도합니다. 파일을 찾지 못하면
> 새 `jwt.hex` 파일에 JWT 토큰을 생성합니다.
>
> JWT 토큰이 들어 있는 파일의 경로를 지정하려면
> `--l2.jwt-secret` CLI 플래그에 파일 경로를 전달하거나
> `KONA_NODE_L2_ENGINE_AUTH` 환경 변수를 사용하십시오.

그런 다음 Base의 체인 ID `8453`을 사용하여 `kona-node`를 실행합니다.

```
kona-node node \
    --chain 8453 \
    --l1-eth-rpc <L1_RPC_URL> \
    --l1-beacon <L1_BEACON_URL> \
    --l2-engine-rpc http://127.0.0.1:9551 \
```

이것으로 끝입니다! node가 P2P에 연결되고 빠르게 동기화를
시작합니다.

> [!NOTE]
>
> 기본적으로 `kona-node`는 op-node와 동일하게 L1 블록 해시 검증을 활성화하고
> 로컬 L2 엔진을 신뢰합니다. node가 공개 RPC 엔드포인트를 가리키도록
> 설정하는 경우 [RPC 신뢰 설정](https://docs.optimism.io/ko/node-operators/kona-node/run/rpc-trust.md)을
> 참고하여 두 RPC 모두에 대한 검증을 설정하십시오.

#### 예상 동작

이제 `kona-node`가 시작되면 즉시 P2P 스택을 구동합니다.
같은 체인 ID(base - `8453`)와 OP Stack enr 키 "opstack"을 가진
네트워크상의 유효한 피어를 탐색하기 시작합니다.
유효한 피어가 발견되면 libp2p swarm으로 전달되며,
swarm은 해당 피어에 연결을 시도하고 블록 gossip을 수신합니다.

체인과 P2P 네트워크 토폴로지에 따라 `kona-node`가 충분한 피어 집합을
확보하고 블록 gossip을 수신하기 시작하기까지 시간이 더 걸릴 수 있습니다.
OP Mainnet이나 Base처럼 규모가 크고 성숙한 체인에서는
체인의 P2P 부트노드를 통해 피어 탐색이 빠르게 이루어집니다.

libp2p swarm의 피어로부터 첫 번째 unsafe L2 payload attributes(블록)를
수신하면, 이는 `kona-node`의 engine actor로 전달되고
engine actor는 `op-reth` 실행 클라이언트에서 실행 계층 동기화를 시작합니다.
이때 `op-reth` 로그에 체인을 최신 상태(tip)까지 동기화하기 위해
과거 L2 블록을 가져오는 내용이 표시되기 시작합니다.

EL 동기화가 완료되면 `kona-node`의 derivation actor가
derivation pipeline을 시작하고 L2 체인 도출을 시작합니다.
그동안 P2P 스택은 별도로 체인의 sequencer로부터 unsafe L2
블록을 수신하여 체인에 삽입하도록 engine actor로 전달합니다.

#### 다음 단계

* node의 기본 포트, 기본 동작, 그리고 sequencer 및 interop 플래그 세트를
  포함한 사용 가능한 모든 CLI 플래그는
  [Kona node CLI 레퍼런스](https://docs.optimism.io/ko/node-operators/kona-node/configuration.md)에 정리되어 있습니다.
* 로그 상세 수준을 조정하거나 메트릭 대시보드를 설정하려면
  [모니터링](https://docs.optimism.io/ko/node-operators/kona-node/monitoring.md)을 참조하십시오.
* Docker를 사용한 `kona-node` 실행에 대해 자세히 알아보려면
  [Docker 가이드](https://docs.optimism.io/ko/node-operators/kona-node/run/docker.md)를 확인하십시오.

[scr]: https://github.com/ethereum-optimism/superchain-registry/tree/main

[op-reth-docs]: https://reth.rs/run/opstack

[op-reth]: https://github.com/paradigmxyz/reth/blob/main/crates/optimism/bin/src/main.rs

[buildx]: https://github.com/ethereum-optimism/optimism/tree/develop/rust/kona/docker

[packages]: https://github.com/orgs/op-rs/packages?repo_name=kona

[pdocs]: https://github.com/ethereum-optimism/optimism/pkgs/container/kona%2Fkona-node/446969659?tag=latest
