셀레스티아 밸리데이터 노드 셋업 가이드

Cosmoseup
Cosmostation
Published in
12 min readApr 25, 2023

이 글은 투자 목적으로 작성된 글이 아니며, 실증적인 정보 전달과 코스모스 생태계 이해에 대한 장벽을 낮추고 하는데 그 목적이 있습니다. 이점을 유의하시면서 읽어주시길 바랍니다

Celestia Validator Node Guide

안녕하세요, 코스모스테이션에서 노드 오퍼레이터로서 활동 중인 Cosmoseup이라고 합니다. 이번 글에서는 데이터 가용성 문제를 해결하기 위해 나온, 셀레스티아 체인에 대한 내용을 가지고 왔습니다.

현재 셀레스티아에서는 “블록스페이스 레이스”라고 하는 인센티브 테스트넷 프로그램이 한창 진행 중인데요. 저희 코스모스테이션도 해당 프로그램에 밸리데이터 포지션으로 참여중으로 프로그램 기간동안 약 5주간 진행되는 각각의 태스크를 수행하면서 셀레스티아 체인에 대해 깊이 연구하고 더 좋은 제품과 안정적인 노드 운영을 위해 힘쓰고 있습니다.

이번 글에서는 해당 프로그램의 보너스 트랙의 일환으로 셀레스티아 체인에 대한 간략한 설명과 밸리데이터 노드 셋업(앱 노드 + 브릿지 노드) 과정을 설명해드릴까 합니다.

셋업 과정은 총 5단계로 나뉘어져있습니다.

1. 하드웨어 준비
2. 개발환경 셋팅
3. 셀레스티아 노드 타입 이해
4. 셀레스티아 앱 노드 설치
5. 셀레스티아 브릿지 노드 설치

각각의 단계를 잘 숙지하신 후에 여러분들도 가볍게 셀레스티아 네트워크의 노드 오퍼레이터로서 참여해보는 것도 좋은 경험이 될 것 같습니다.

NOTE) 해당 과정은 공식 문서를 참고하여 동일한 Ubuntu Linux 20.04 (LTS) x64 환경에서 작성했음을 알립니다.

1. 하드웨어 준비

먼저, 아래 해당 사항을 만족하는 서버를 하나 준비합니다.

NOTE) 장기간 유지할 노드가 아니면, 네트워크는 크게 신경쓰지 않으셔도 됩니다.

Memory: 8 GB RAM
CPU: 6 cores
Disk: 500 GB SSD Storage
Bandwidth: 1 Gbps for Download/1 Gbps for Upload

2. 개발 환경 셋팅

하드웨어 요구사항을 충족하는 우분투 서버를 준비하셨다면, 아래 명령어를 입력하여 셀레스티아 노드 바이너리 빌드에 필요한 개발환경을 설치합니다.

# update & install 
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential git make ncdu -y
sudo apt install snapd -y

다음으로는 셀레스티아 공식문서에 따라 go도 1.20 버젼으로 설치합니다.

# install golang
sudo snap install go --channel=1.20/stable --classic
echo "export PATH=\$PATH:$HOME/go/bin" >> $HOME/.profile && source $HOME/.profile

3. 셀레스티아 노드 타입 이해

이제 그럼 셀레스티아 노드를 설치해보겠습니다. 셀레스티아는 크게 데이터 가용성(Data availability) 타입과 합의(Consensus) 2가지 유형의 노드타입으로 분류되어있습니다.

밸리데이터 노드로 오퍼레이팅 하기 위해서는 각각 데이터 가용성 타입의 브릿지 노드와 합의 타입의 밸리데이터 노드를 운영해야합니다.

이는 합의 타입의 밸리데이터 노드에서 생성된 raw 한 정보들을 브릿지 노드에 제공해야하기 때문이며, 아래 그림과 같이 도식화된 자료로 이해하실 수 있습니다.

자세한 내용은 셀레스티아 공식문서를 참고하시길 바랍니다.

https://docs.celestia.org/nodes/bridge-node/

4. 셀레스티아 앱 노드 설치

먼저, 합의 타입의 밸리데이터 노드부터 설치해보겠습니다. 공식문서에 따라 다음과 같이 셀레스티아 앱 노드(컨센서스 타입) repo를 clone하고 설치합니다.

# clone & install
cd $HOME
rm -rf celestia-app
git clone https://github.com/celestiaorg/celestia-app.git
cd celestia-app/
APP_VERSION=v0.12.2
git checkout tags/$APP_VERSION -b $APP_VERSION
make install

# check version
celestia-appd verison
# >>> 0.12.2

# you change chain-id when you want to other network, devnet, testnet or something
celestia-appd init my_node --chain-id blockspacerace-0
celestia-appd tendermint unsafe-reset-all

celestia-appd 노드가 설치가 완료되었다면, 이제 우리가 참가할 blockspacerace 테스트넷 제네시스 파일과 시드 및 피어 정보를 가져오겠습니다.

cd $HOME && git clone https://github.com/celestiaorg/networks.git
cd networks/blockspacerace/ && ls
# >>> genesis.json, peers.txt

# copy genesis
cp genesis.json $HOME/.celestia-app/config/genesis.json

# add seed & peers
SEEDS=$(tr '\n' ',' < seeds.txt | sed 's/,$//')
sed -i "s|^seeds *=.*|seeds = \"$SEEDS\"|" $HOME/.celestia-app/config/config.toml

PEERS=$(tr '\n' ',' < peers.txt | sed 's/,$//')
sed -i "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" $HOME/.celestia-app/config/config.toml

# set config.toml for validator role
sed -i "s/^pruning *=.*/pruning = \"nothing\"/" $HOME/.celestia-app/config/app.toml

자! 우선 컨센서스 타입의 노드는 밸리데이터가 되기 위한 준비를 마쳤으니 노드를 켭니다. 이후 싱크가 되는 모습을 보실 수 있습니다.

# start our node
celestia-appd start

만약 싱크가 잘 되지 않으신다면, 다음과 같은 방법으로 address book을 다운 받은 뒤에 다시 실행시켜 봅니다.

# if not connected with other peers, try to do this
cd $HOME/.celestia-app/config && rm addrbook.json && wget -O addrbook.json https://lcd-celestia-itn.cosmostation.io/addrbook.json

# start again our node
celestia-appd start

5. 셀레스티아 브릿지 노드 설치

이제 다음으로는 데이터 가용성 타입의 브릿지 노드를 설치해보겠습니다. 우선 싱크 중인 앱노드의 터미널 세션은 그대로 두고 새로운 세션을 하나 켜고, 셀레스티아 노드(데이터 가용성 타입) repo를 clone하고 설치합니다.

# clone & install
cd $HOME
rm -rf celestia-node
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node/
git checkout tags/v0.9.1

make build
make cel-key

# move to $GOBIN
mv ./cel-key ~/go/bin/ && mv ./build/celestia ~/go/bin/

# check version
celestia verison
# >>> Semantic version: v0.9.1
# >>> ....

celestia 노드가 설치 완료되었다면 이전 보았던 앱 노드와 비슷한 패턴으로 노드를 실행합니다.

# reset store
celestia bridge unsafe-reset-store --p2p.network blockspacerace

# init
# 지속적으로 운영하신다면, 생성되는 니모닉은 잘 보관해주시길 바랍니다.
celestia bridge init --p2p.network blockspacerace

셀레스티아 브릿지 노드까지 잘 띄우셨다면, 브릿지 노드 또한 잘 싱크되는 모습을 보실 수 있습니다 !

# need to be operated with celestia-appd in same 
# 셀레스티아 앱 노드가 같은 서버내에 오퍼레이팅 중인 것이라고 가정합니다.
celestia bridge start --core.ip 127.0.0.1 --p2p.network blockspacerace

이후, 앱 노드의 싱크가 모두 완료되었다면 추가적으로 밸리데이터를 선언하는 트랜잭션만 날려주시면 밸리데이터로서 셀레스티아에 합류하실 수 있게 됩니다. 밸리데이터로서 참여하기 위해서 어느정도의 소량의 토큰을 가지고 있어야 합니다. 이는 셀레스티아 디스코드를 통해서 faucet를 받으시길 바랍니다.

NOTE) 만약, 블록스페이스 테스트넷의 faucet이 어렵다면 셀레스티아의 퍼블릭 테스트넷인 mocha에서 faucet를 받으시고 위의 과정을 따라하셔도 됩니다.

마지막으로, 밸리데이터로 선언하는 트랜잭션을 설명하면서 글을 마치겠습니다. 해당 트랜잭션을 성공시키셨다면, 저희 민트스캔(block explorer)에서 성사시킨 트랜잭션을 조회하시고 active된 자신의 밸리데이터 노드를 확인하실 수 있습니다.

# create a my validator wallet
celestia-appd keys add validator

# transaction for creating validator
celestia-appd tx staking create-validator \
--amount=1000000utia \
--pubkey=$(celestia-appd tendermint show-validator) \
--moniker=<ENTER YOUR MONIKER> \
--chain-id=blockspacerace-0 \
--commission-rate=0.1 \
--commission-max-rate=0.2 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1000000 \
--from=validator \
--evm-address=<ENTER YOUR ETHEREUM ADDRESS> \
--fees 5000utia \
--gas auto \
--gas-adjustment 1.5

여기까지 따라오시거나 제 글을 읽어주셔서 정말 감사드립니다. 다음번에 더 좋은 글과 컨텐츠를 가지고 찾아뵙도록 하겠습니다 :)

References

About Cosmostation

코스모스테이션은 서울에 본사를 두고 있는 검증인 노드 운영 및 어플리케이션 개발 업체입니다. 스테이션 팀은 주요 PoS(Proof of Stake) 프로젝트를 위해 모바일 지갑, 웹 지갑 그리고 민트스캔 익스플로러와 같은 유용한 도구와 솔루션을 제공합니다.

코스모스테이션은 사용자들에게 편리하고 유용한 도구들을 제공함으로써 블록체인 생태계 확장과 PoS 체인의 대중화에 많은 노력을 기울이고 있습니다.

코스모스테이션 운영 철학커뮤니티에 의해, 커뮤니티를 위해 움직입니다. 저희 스테이션 팀은 앞으로도 위임자 분들의 입장을 대변하고 생태계에 지속적으로 기여하는 코스모스테이션이 되겠습니다.

Links

Mintscan | Extension | Android | iOS | Web Wallet | Spacestation Bridge

Official | Github | Twitter | Telegram

--

--