Join the Test network

이민기·2023년 10월 8일
0

Cosmos

목록 보기
5/5
post-thumbnail

Intro

오늘은 Archway 네트워크에 참여해보는 포스팅을 작성하려고 합니다

해당 게시글은 Archway Network를 기반으로 작성되었지만 같은 방식으로 다른 Cosmos에 다른 네트워크에도 참여 가능합니다!

참여 후 Cosmos Network에 최적화 되어 있는 Ping-Pub explorer에 자신의 노드로 받는 테스트 네트워크 정보를 연동하는 것 까지 포스팅하겠습니다

포스팅 시작하겠습니다 😀😀


Running A Node

1 . Node Installation

먼저, Archway Github주소로 들어가서 레포지토리 Clone을 진행합니다. 이후 현재 버전에 맞는 Branch로 변경합니다

git clone https://github.com/archway-network/archway.git
cd archway
git checkout v.4.0.2

✏️ Clone후 테스트넷 버전의 Tag로 변경해줘야합니다.
작성 시점의 versionv4.0.2이며 테스트넷 버전은 Polkachu의 archway testnet에서 rpc endpoint로 들어간 후 abci info를 통해 확인 가능합니다.

변경 후 다음 명령어를 실행합니다

make install

install 이후 변경한 Tag와 같은 Version인지 확인해 줍니다

archwayd version

2. Node initialization

유효성 검사 없이 노드를 실행하려는 경우에는 이 단계가 필요하지 않다고 합니다

먼저 네트워크의 Node moniker를 설정해 줍니다

✏️Moniker는 사람이 읽기 쉬운 검증노드 닉네임입니다.

다음은 moniker를 설정하는 명령어입니다

# 기본 명령어
archwayd init <moniker> --chain-id <chain>

# Main Network
archwayd init my-node --chain-id archway-1

# Test Network
archwayd init my-node --chain-id constantine-3

🚨 현재 이 글을 작성하는 기준으로는 Test Network가 constantine-3이며, 이는 후에 달라 질 수 있습니다
테스트넷 버전은 Polkachu의 archway testnet에서 rpc endpoint로 들어간 후 status를 통해 확인 가능합니다.

Set up the node's keys

트랜잭션을 검증하거나 제출하지 않고 블록체인 상태를 쿼리하기 위해 노드를 실행하려는 경우에는 이 단계가 필요하지 않습니다.

노드에서 트랜잭션을 실행하는 데 사용할 계정을 보유하려면 개인 키를 하나 이상 생성해야 합니다.
다음은 개인 키를 실행하는 명령어이며, 실행 후 keyring의 비밀번호를 입력하시면 됩니다.

rchwayd keys add <account-name>

# 실제 명령어 예시
archwayd keys add my-node

🚨 비밀번호를 입력 후에는 mnemonic이 나오며 해당 mnemonic은 최초에 개인키를 생성할 때만 나오고, 계정 복구에 필요함으로 필요하시면 백업을 권장드립니다

생성 후 아래 명령어를 이용하여 확인합니다.

archwayd keys list

Join A Network

Genesis Data

Root Directory에 .archway/config폴더로 이동합니다

cd ~/.archway/config

해당 폴더로 들어가면 여러가지 폴더와 함께 genesis.json파일이 있는데, Sync를 맞추기 위해 해당 genesis.json파일을 현재 TestNet의 genesis data와 맞춰줍니다

curl -s https://rpc.constantine.archway.tech/genesis |jq -r .result.genesis > ${HOME}/.archway/config/genesis.json

# or

wget https://github.com/archway-network/networks/blob/main/constantine-3/genesis.json
wget -O genesis.json https://snapshots.polkachu.com/testnet-genesis/archway/genesis.json --inet4-only
mv genesis.json ~/.archway/config

Synchronize

How to Synchronize

Sync from genesis
노드가 생성 블록 이후 모든 블록을 통과하므로 이는 노드를 동기화하는 가장 느리고 가장 안전한 방법입니다.

최초의 Genesis 정보를 받아오므로 Sync가 되는데 시간이 상대적으로 많이 소요될 수 있습니다.

Sync with state-sync
상태 동기화는 특정 블록 높이에서 애플리케이션 상태의 스냅샷을 가져와 노드가 상태를 빠르게 동기화할 수 있도록 하는 기능입니다. 이는 제네시스 블록의 모든 블록을 재생하는 기본 방법에 비해 노드가 네트워크와 동기화하는 데 필요한 시간을 크게 줄입니다. 동기화는 스냅샷 지원 RPC와 신뢰할 수 있는 블록 높이를 통해 발생합니다.
상태 동기화의 장점은 완전히 동기화된 노드에 비해 데이터베이스가 매우 작다는 것입니다. 따라서 상태 동기화를 사용하여 노드를 네트워크에 다시 동기화하면 스토리지 사용량을 최소화하여 운영 비용을 낮추는 데 도움이 됩니다.

state-sync를 사용하여 노드를 동기화하면 네트워크의 전체 트랜잭션 기록이 아니라 상태 동기화 RPC가 저장한 가장 최근 상태만 확인할 수 있습니다.

Sync from snapshot
스냅샷은 특정 블록 높이의 블록체인 노드 상태에 대한 압축된 아카이브입니다. 노드를 스냅샷과 동기화하면 노드가 최초 블록이 아닌 스냅샷의 블록 높이에서 시작되므로 네트워크를 따라잡는 프로세스의 속도가 빨라집니다.

Synchronize with state-sync

해당 글에서는 state-sync를 이용하여 진행하겠습니다

먼저 Cosmos Network에서 Validation Service를 운영하고 있는 Polkachu에 접속합니다

테스트넷을 진행할 예정이니 TestLab 탭에서 Archway로 들어갑니다

들어가보면 State-Sync항목이 있는데, Instruction의 스크립트를 복사해 입력 해줍니다

이후 이전페이지의 Live Peers항목에 들어가 하단의 Polkachu State-Sync Peer for Archway Testnet 항목을 복사해 준 뒤 ~/.archwayd/config/config.toml파일을 열어 persistent_peers항목에 입력해 줍니다

# example
# config.toml

# Comma separated list of nodes to keep persistent connections to
persistent_peers = "e5e71ccd387eba74fec51b211e9236fca965af40@46.4.5.45:11556"

🚨 !ERR failed to restore snapshot err="multistore restore: import failed: tree must be empty"
다음 오류는 이전에 Node실행 했던 적이 있어 Block Height가 많이 뒤쳐진 상태로 Sync를 맞추려할 때 발생하며, 해당 오류가 발생하지 않더라도 Node를 꺼놓았다가 다시 실행하려고 할 때 다음 명령어를 통해 DB를 초기화한 후 다시 실행하여 Sync를 맞추는 방법을 사용할 수 있다.

archwayd tendermint unsafe-reset-all

Apply node

다음 명령어를 통해 Node를 실행하며 초기에 Sync를 맞추는 작업을 합니다

archwayd start

이후 다음 명령어를 통해 latest_block_height를 확인하며 싱크가 정상적으로 맞춰졌는지 확인합니다

archwayd status 
# or
archwayd status | jq

🚨 jq
Jq는 Json포맷의 데이터를 보기 쉽게 도와주는 커맨드라인 유틸리티입니다 자세한 정보는 jq 공식문서에서 확인 가능합니다

PingPub

Ping Pub은 Tx, block, Validator의 상태를 실시간으로 Customer해서 볼 수 있다는 장점이 있습니다.

다음 PingPub 공식 사이트에서 메인넷에 대한 정보를 실시간으로 확인 가능하며

PingPub 테스트넷에서 테스트 네트워크 정보도 확인 가능하지만

PingPub Explorer Github를 이용해서 자신의 참여중인 네트워크들로 커스텀해서 사용가능합니다!

Clone후 커스텀하는 방법을 알아보겠습니다!

Clone & Custom PingPub

먼저 PingPub Explorer Github에 들어가서 clone을 진행합니다

git clone https://github.com/ping-pub/explorer.git

clone받은 후 해당 레포지토리 내부에 chains/mainnet/으로 들어갑니다

cd ./chains/mainnet/

해당 폴더 내부에 archway-test.json을 생성 후 README.md를 읽어보시면 Sample of Config가 있는데 복사 해서 입력 후 수정합니다
다음은 제가 수정한 archway-test.json입니다.

{
	"chain_name": "ArchwayTestnet",  // Sample에서 수정 
	"api": [
		{
			"address": "http://localhost:1317", // api address
			"provider": "your_provider_name"
		}
	],
	"rpc": [
		{
			"address": "http://localhost:26657", // rpc address
			"provider": "your_provider_name"
		}
	],
	"sdk_version": "0.42.6",
	"coin_type": "118",
	"min_tx_fee": "800",
	"assets": [
		{
			"base": "aconst",  // archway token 단위
			"symbol": "CONST", // archway symbol
			"exponent": "18", // 사용하는 지수 단위
			"coingecko_id": "archway", // coingecko API에서 사용하는 ID
			"logo": "https://testnet.archway.explorers.guru/chains/archway_token.png" // Archway 이미지
		}
	],
	"addr_prefix": "archway",
	"theme_color": "#ce4747", // 임의의 색상
	"logo": "https://testnet.archway.explorers.guru/chains/archway_token.png"
}

✏️ 중요한건 API, RPC의 Address이며 나머지 부분은 필수는 아니지만 정확한 데이터가 필요할 시 Sample 기준으로 수정하면 됩니다.
자세한 정보는 CoinGeckoAPI에서 확인 가능합니다!

Edit Archway config

Json파일을 만든 후 archway의 config file을 수정을 위해 archway config폴더로 이동합니다

cd ~/.archwayd/config

이후 config.tomlapp.toml을 수정합니다

# config.toml
...
# A list of origins a cross-domain request can be executed from
# Default value '[]' disables cors support
# Use '["*"]' to allow any origin
cors_allowed_origins = ["*"]
...
# app.toml

...
# API Configration 하단
# Enable defines if the API server should be enabled.
enable = true

# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk).
enabled-unsafe-cors = true

...
# gRPC web Configration 하단
# EnableUnsafeCORS defines if CORS should be enabled (unsafe - use it at your own risk).
enable-unsafe-cors = true
...

Apply Explorer

다시 PingPub을 clone 받은 레포지토리로 돌아와서 module 설치 후 실행합니다

yarn install
yarn serve

이후 다음 LocalUrl로 이동 후 확인합니다

✅ 확인 화면


Outro

여기까지 테스트넷에 참여 후 Ping Pub에 참여하여 노드를 실행 후 데이터를 실시간으로 받아와 확인하는 작업까지 해보았습니다

같은 방법으로 다른 네트워크에도 참여 가능하며, 각 네트워크별로 Sync에 걸리는 소요 시간이 달라서 어떤 네트워크는 오래 걸리기도 합니다

굳이 Archway 네트워크로 게시글을 작성한 이유는 기회가 되어 Archway Test Network토큰을 구해 validator까지 해보며 작성하게 되었고,

관심 있으신 분들은 Discord 같은 커뮤니티를 통해 Test Network 토큰을 받아 validator까지 진행해 보시는것도 방법이라고 생각합니다 ! 👍🏻


Refer

profile
블로그를 옮기는 중입니다. https://min71.dev

0개의 댓글