Skip to main content
For the complete documentation index, see llms.txt

Set up full node

이 가이드는 Midnight full node를 설정하는 단계별 방법을 안내합니다.

Prerequisites​

Midnight full node 설정 전에 다음 사항을 준비하세요:

Install Midnight node​

Midnight node는 Midnight 프로토콜의 코어 클라이언트입니다. 아래 단계를 따라 Midnight node를 설치하세요.

노드용 디렉토리를 생성합니다:

mkdir -p ~/data ~/res ~/.local/bin
  • ~/data: 노드 데이터베이스/base path 용도.
  • ~/res: 체인 설정 파일 용도.
  • 모두 midnight 사용자 소유로 둡니다.

Midnight node 바이너리를 다운로드해 설치합니다:

임시 디렉토리를 만들고 그 안으로 이동합니다:

mkdir -p ~/tmp && cd ~/tmp

Midnight node 바이너리를 다운로드합니다:

curl -L -O https://github.com/midnightntwrk/midnight-node/releases/download/node-1.0.400/midnight-node-1.0.400-linux-amd64.tar.gz
노드 버전

Preview, Preprod, Mainnet은 node 1.0.400을 운영합니다. 각 네트워크가 현재 운영하는 node 버전은 compatibility matrix를 참고하세요. 더 새로운 node 릴리스가 나오면, 업그레이드 전에 그 릴리스 노트에서 지원 runtime을 확인하세요. 오래된 바이너리는 더 새로운 runtime을 실행할 수 없어 runtime 업그레이드 지점에서 블록 가져오기를 멈춥니다.

바이너리의 압축을 풉니다:

tar -xvzf midnight-node-1.0.400-linux-amd64.tar.gz

바이너리를 로컬 bin 디렉토리로 옮깁니다:

mv ~/tmp/midnight-node ~/.local/bin/

체인 설정 파일을 res 디렉토리로 옮깁니다:

mv ~/tmp/res/* ~/res/

셸 환경을 다시 로드합니다:

source ~/.bashrc # or source ~/.zshrc

Set environment variables​

.env 설정 파일을 만들고 PostgreSQL 데이터베이스용 환경 변수를 설정합니다:

# PostgreSQL connection
export POSTGRES_HOST="localhost"
export POSTGRES_DB="cexplorer"
export POSTGRES_PORT="5432"
export POSTGRES_USER="midnight"
export POSTGRES_PASSWORD="YOUR_POSTGRES_PASSWORD"

# Cardano database connection string
export DB_SYNC_POSTGRES_CONNECTION_STRING="postgresql://midnight:YOUR_POSTGRES_PASSWORD@localhost:5432/cexplorer"

export NODE_NAME="your_node_name"

변수를 셸 환경에 로드합니다:

source ~/.env

변수가 정상적으로 로드됐는지 확인합니다:

echo $DB_SYNC_POSTGRES_CONNECTION_STRING

Run a full node​

노드는 홈 디렉터리에서 시작하세요. 시작 시 노드는 명령을 실행한 디렉터리를 기준으로 res/cfg에서 설정을 읽습니다.

cd ~

환경 변수가 설정되면, 다음 명령어로 Midnight node를 실행합니다:

CFG_PRESET=preview CARDANO_SECURITY_PARAMETER=432 midnight-node \
--chain /home/midnight/res/preview/chain-spec-raw.json \
--base-path /home/midnight/data \
--pool-limit 35 \
--name $NODE_NAME \
--bootnodes /dns/bootnode-1.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK \
--bootnodes /dns/bootnode-2.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWHqFfXFwb7WW4jwR8pr4BEf562v5M6c8K3CXAJq4Wx6ym \
--no-private-ip

Available networks​

CFG_PRESET 환경 변수로 네트워크를 선택합니다. 노드는 해당 네트워크의 설정을 res/cfg에서 불러옵니다. public 네트워크의 preset은 다음과 같습니다:

  • preview: Preview 네트워크용.
  • preprod: Preprod 네트워크용.
  • mainnet: Mainnet 네트워크용.

노드는 환경에서 CARDANO_SECURITY_PARAMETER도 읽습니다. 대응하는 Cardano 네트워크의 security parameter로 설정하세요. Preview는 432, Preprod와 Mainnet은 2160입니다.

--chain 플래그는 네트워크 이름이 아니라 해당 네트워크의 chain specification 파일 경로를 받습니다. Preview chain specification에는 boot node가 하나도 없어서, Preview 명령은 known Preview boot nodes를 --bootnodes로 전달합니다.

node 1.0.300으로 Mainnet 동기화 시

node 1.0.300으로 genesis부터 동기화하는 Mainnet 노드는 블록 1788979에서 멈춥니다. Node 1.0.400에 수정이 포함되어 있습니다. 노드가 그 블록에서 멈췄다면 node 1.0.400으로 다시 시작하세요.

Verify the node​

노드 로그를 모니터링해 네트워크와 동기화되는지 확인합니다. 출력에서 확인할 항목은 다음과 같습니다:

  • Cardano db connection: Using candidate data source configuration가 보이면 노드가 Cardano-db-sync 데이터베이스에 연결된 것입니다. 노드가 Could not connect to database와 함께 종료되면 .env 파일의 연결 문자열을 점검하세요.
  • Peers: 상태 줄에 피어 수가 표시됩니다. 예를 들어 (4 peers)처럼 나옵니다. Idle (0 peers)에서 멈춰 있으면 방화벽(포트 30333)이나 --bootnodes 주소를 점검하세요.
  • Syncing: 네트워크에서 블록을 받아오면서 best: #0 ... 값이 증가하기 시작해야 합니다. #0에 멈춰 있고 로그가 Verification failed for block을 반복하면, Cardano-db-sync가 동기화를 마쳤는지 확인하세요. 노드는 각 Midnight 블록을 Cardano-db-sync 데이터베이스의 Cardano 데이터와 대조해 검증합니다.

Full node vs. archive node​

Full node는 blockchain과 동기화하고, 트랜잭션을 검증하며, 실시간 상태 조회를 제공합니다. 설정 가능한 블록 수(기본값 256블록)보다 오래된 히스토리 상태는 pruning합니다. 그래서 대부분의 DApp 개발과 네트워크 실시간 상호작용에 적합합니다. 주요 장점은 디스크 공간을 효율적으로 사용한다는 점으로, archive node보다 훨씬 적은 스토리지만 필요합니다.

Archive node는 모든 블록과 상태를 포함한 blockchain의 전체 히스토리를 유지합니다. 이렇게 전체를 저장하면 디스크 공간을 많이 차지하지만, 블록 익스플로러 구축, 심층 디버깅, 과거 이벤트 조회처럼 히스토리 데이터 접근이 필요한 경우에는 필수적입니다.

Midnight node를 archive 모드로 실행하려면 --state-pruning archive와 --blocks-pruning archive 플래그를 사용하세요. 노드는 데이터베이스를 처음 만들 때 state pruning 모드를 저장합니다. full node를 archive 모드로 바꾸려면 base path 디렉터리를 비운 상태로 시작하세요.

CFG_PRESET=preview CARDANO_SECURITY_PARAMETER=432 midnight-node \
--chain /home/midnight/res/preview/chain-spec-raw.json \
--base-path /home/midnight/data \
--state-pruning archive \
--blocks-pruning archive \
--bootnodes /dns/bootnode-1.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK \
--bootnodes /dns/bootnode-2.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWHqFfXFwb7WW4jwR8pr4BEf562v5M6c8K3CXAJq4Wx6ym \
--no-private-ip \
--name $NODE_NAME

Next steps​

Full node를 설정했다면, Node endpoints를 사용해 Midnight blockchain과 상호작용할 수 있습니다.