풀 노드(Full Node)
우미에서 풀노드를 운영하기 위한 단계별 상세 가이드
진행하기에 앞서, 우미 레포지토를 반드시 참조하여, 노드를 실행하려는 네트워크의 체인 ID와 umeed 버전을 확인하십시오. 오퍼레이터는 소스에서 umeed 바이너리를 설치하거나 릴리스 페이지에서 특정 OS 및 아키텍처에 대한 릴리스를 다운로드하도록 선택할 수 있습니다. 소스에서 umeed 바이너리를 설치하려면 먼저 OS에 Golang 1.16+가 설치되어 있어야 합니다. 환경을 올바르게 설치하고 설정하는 방법에 대한 지침은 설치 페이지를 참조하십시오. 환경을 올바르게 설정했으면 Umee 리포지토리를 복제하고 바이너리를 설치합니다.
# Replace vX.Y.Z with the relevant release version, e.g. v0.1.0
$ git clone --depth 1 --branch vX.Y.Z https://github.com/umee-network/umee.git
$ cd umee && make install
umeed
최종 버전을 확인해주세요.
$ umeed version
하드웨어 요구사항
우미 노드를 실행하는 데 권장되는 하드웨어 스펙은 노드의 유즈케이스 및 희망하는 기능에 따라 다릅니다. 예를들어, 노드가 아카이브 노드 역할을 하는 경우(예: pruning=nothing
) 와 스테이트 동기화 스냅샷을 제공하 경우 상당한 양의 디스크 공간이 필요할 수 있습니다. 일반적으로 권장되는 최소 요구 사항은 다음과 같습니.
2+ vCPU
4+ GB RAM
120+ GB SSD
초기
umeed 프로세스를 시작하기 전에 먼저 노드를 초기화해야 합니다.
# Replace moniker with your desired node's moniker and the chain ID
# of the network you are joining.
$ umeed init <moniker> --chain-id <chain-id>
위의 명령어는 기본적으로 $HOME 경로에 .umee
디렉토리를 생성하고 초기화합니다. 이 디렉토리에는 기본 genesis.json
파일과 함께 노드를 실행하는 데 필요한 모든 구성 파일이 포함되어 있습니다. --home
플래그를 지정하여 .umee
디렉토리의 위치를 덮어쓸 수 있습니다.
초기화에 성공하시면, 디폴트로 생성된 genesis.json
파일을 접속하려는 특정 네트워크의 제네시스 상 파일로 덮어쓰도록 합니다. Umee 레포지토 다른 신뢰할 수 있는 소스에서 제네시스 상태 파일을 검색할 수 있습니다.
$ cd ~/.umee/config
$ wget https://raw.githubusercontent.com/umee-network/umee/main/.../genesis.json
설
노드를 시작하기 전에 관련 설정을 확인하고 업데이트하는 것이 중요합니다. ~/.umee/config/
에는 세 가지 기본 구성 파일이 있습니다.
config.toml: 텐더민트(Tendermint)를 설정하는 데 사용됩니다. 텐더민트의 자세한 설정은 이곳에서 확인해주십시오.
app.toml: Umee 애플리케이션을 구성하는 데 사용됩니다. 여기에는 애플리케이션 푸르닝(pruning), 상태 동기화, 최소 수수료 및 API/gRPC 세팅과 같은 구성요소가 포함됩니다.
client.toml:
umeed
CLI를 사용하여 네트워크와 상호 작용할 때 클라이언트 측 입력을 구성하는 데 사용됩니다. 이 구성은 전적으로 선택 사항이며umeed
CLI 명령에 동일한 인수를 입력하지 않아도 되는 편의를 위해 주로 사용됩니다.
config.toml
과 app.toml
모두 주석이 많이 달려 있으며 설정을 조정하는 방법에 대해 참조하 사용해야 합니다.
다음 소개되는 설정 요소들을 최소한 확인해주시길 권장드립니
app.toml
minimum-gas-prices
: 노드가 트랜잭션을 처리할 때 최소 수수료를 요구하도록 하려면 해당 항목 비어 있지 않은 값으로 설정하십시오. e.g.minimum-gas-prices = "0.001uumee"
거래 수수료는fee = ⌈tx.gasLimit * tx.gasPrice⌉
로 설정되므로, 거래 수수료는 반드시 최소⌈minimumGasPrices * tx.gasPrice⌉
이 되어야 합니다.pruning:
애플리케이션은 잔여 상태를 프루하고, 362880 상당의 데이터의 언본딩 기간을 유지합니다. 여러분이 모든 어플리케이션 상태를 프루닝 하자고 한다면,pruning = "everything"
이 값을 변경해주시십시오. 반대로, 모든 어플리케이션 상태(아카이브)를 가지고 싶은 경우에는pruning = "nothing"
로 설정해주시십오.min-retain-blocks:
텐더민트 블록 프루닝과 관련된 값입니다. 어플리케이션 상태와 관련되어 있기 때문에 단순히pruning
하는 것과는 다릅니다. 0이 아닌 경우에는, 애플리케이션은min-retain-blocks
임계값을 초과하는 블록을 프루닝 하도록 상태를 텐더민트에게 전달될 것입니다. 내부적으로는, 최소 언본딩 기간에 해당하는 블록이 안정성을 유지하도록 에플리케이션이 최소치를 강제합니다.api.enable:
애플리케이션의 API (gRPC HTTP 게이트웨이) 서비스를 시작합니다.grpc.enable:
애플리케이션의 gRPC 서비스를 시작합니다.
config.toml
rpc.laddr
: 텐데민트의 RPC는 기본적으로 localhost 인터페이스에서 수신 대기합니다. 외부적으로, 텐더민트 RPC에 연결하려면 이 값을0.0.0.0
으로 설정하여 모든 인터페이스/IP에서 수신 대기합니다.p2p.external_address
: 이 값을 노드의 공용 및 고정 IP 주소로 설정합니다. 텐더민트의 p2p 가십 레이어에 있는 다른 노드가 성공적으로 노드에 도달하고 연결할 수 있도록 하는 데 도움이 됩니다.p2p.seeds
: 사용 가능한 시드 노드 목록으로 설정합니다. 시드 노드는 순수하게 노드와 피어 정보를 교환한 다음 연결을 끊는 노드입니다. 연결할 수 있거나 알려진 피어가 없는 경우 이 값을 설정하십시오.p2p.persistent_peers
: 용 가능하고 신뢰할 수 있는 피어 목록으로 설정합니다
Cosmovisor and Service Management
umeed
프로세스를 관리하기 위해 코스모스 바이너리 통제 툴인 cosmovisor 를 systemd 를 사용하기를 권장드립니다.
먼저, cosmovisor 를 다운 받아 주십시:
$ go get github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor
cosmovisor
디렉토리를 셋업하십시
$ useradd --no-create-home --shell /bin/false cosmovisor
$ mkdir $HOME/cosmovisor
제네시스 폴더를 생성하 umeed
바이너리를 복사하십시
$ mkdir -p $HOME/cosmovisor/genesis/bin
$ cp $(which umeed) $HOME/cosmovisor/genesis/bin
$ cp $(which cosmovisor) $HOME/cosmovisor
$ chown -R cosmovisor:cosmovisor $HOME/cosmovisor
/etc/systemd/system/cosmovisor.service
에 systemd 서비스 파일을 생성하여 다음 내용을 복사하여 붙여넣어 주십시오.
[Unit]
Description=Cosmovisor Process Manager
After=network.target
[Service]
User=root
Group=root
Type=simple
Environment="DAEMON_NAME=umeed"
Environment="DAEMON_HOME=$HOME"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
Environment="UNSAFE_SKIP_BACKUP=false"
ExecStart=$HOME/cosmovisor/cosmovisor start ...
Restart=on-failure
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
systemd 데몬 재실행하 cosmovisor를
실
행하십시 .
$ sudo systemctl daemon-reload
$ sudo systemctl start cosmovisor
최종적으로, cosmovisor
가 제대로 동작 되는지 상태 체크 해주십시오.
$ sudo systemctl status cosmovisor
$ sudo systemctl enable cosmovisor
오직 풀노드 또는 비검증인을 운영할 때만,DAEMON_ALLOW_DOWNLOAD_BINARIES=true으로 설정하십시오.
검증인은 업그레이드된 바이너리를 미리 다운로드 하거나 빌드하고 올바른지 확인하는 것이 좋습니다.
Last updated