Intro
안녕하세요. 이번 포스팅에서는 Chainflip 프로젝트의 Persistent 테스트넷 validator 노드 설치 가이드를 준비했습니다. (운영 중인 텔레그램 “형이랑 돈버는 채널” 에서 활동 중이신 @hh7sun 님께서 좋은 정보를 제공해주셨습니다. 감사합니다.)
Chainflip은 크로스 체인 프로젝트이며 올해 11월 17일 (포스팅 이틀 전이네요!)에 Persistent Testnet 오픈 공지를 발표했습니다. 작년 12월부터 올해 5월까지 incentived testnet: soundcheck을 운영했는데 이번에 다시 테스트넷을 오픈한다고 하네요. 올해 말에 $FILP의 TGE가 예정되어 있다고 하니 토큰 에어드랍을 위한 마지막 이벤트가 되지 않을까 합니다. 현재 coingecko에 등록은 되어 있는 상태네요.
Persistent Testnet 참여자에 대해 향후 특전은 약속하고 있으나 토큰 에어드랍에 대해서는 재단에서 공식적인 언급을 하지 않았습니다. 참여하실 때 이 점은 꼭 참고 부탁드려요.
Chainflip은 작년 8월에 600만 달러, 올해 5월에 1000만 달러 투자를 유치했으며 현재 활발하게 개발을 진행하고 있습니다. 아래에 ICO Analytics 공지글을 첨부해두었습니다. 어떤 투자사가 들어와있는지 확인해보세요!
- 1차 (프라이빗 토큰 판매): https://t.me/ico_analytic/3986
- 2차: https://t.me/ico_analytic/4598
Chainflip 프로젝트에 대해 더 궁금하시다면 아래 정보를 확인해주세요.
- website: https://chainflip.io/
- whitepaper: https://chainflip.io/whitepaper.pdf
- roadmap: https://chainflip.io/roadmap
본 포스팅은 https://docs.chainflip.io/perseverance-validator-documentation/ 을 레퍼런스로 제작되었습니다.
Prerequisites
1. Hardware Requirement
chainflip에서는 OS로 Ubuntu 20.04를 사용하길 권장합니다. (사실 권장이 아니라 필수입니다.) 아래를 보시면 그 외 하드웨어 요구사항은 그렇게 높지 않습니다.
OS: Ubuntu 20.04 - PLEASE ONLY USE THIS OS.
Our binaries are not compiled on any other OS
and you're likely to have problems.
CPU: 4 GHz | 4+ Cores, Dedicated is better
RAM: 8 GB
SSD: 50 GB (this may increase over time)
Bandwidth: Recommended 1GBps connection, 100 GB bandwidth combined up/down per month
2. RPC/WSS 노드 엔드포인트 확인
validator 노드 설치 후 설정 부분에서 goerli ETH testnet 노드와 통신하기 위한 엔드포인트를 추가하는 내용이 있습니다. geth 노드를 직접 운영 중이신 분은 rpc, wss endpoint를 미리 저장해두시고 해당 사항이 없는 분은 infura로 API key를 받아 엔드포인트를 확인하겠습니다.
https://www.infura.io/ 에 접속하여 회원 가입을 합니다. 무료 가입 시 아래 dashboard 화면이 보이실 겁니다.
우측 상단의 "CREATE NEW KEY"를 누르고 NETWORK와 NAME을 설정합니다. NETWORK는 Web3 API를 선택합니다.
CREATE를 누르시면 ENDPOINT 탭으로 이동합니다. 화면 중간의 Ethereum 네트워크를 mainnet -> goerli로 변경하고 우측에 복사 버튼을 눌러 HTTPS ENDPOINT를 따로 저장해둡니다. 같은 방식으로 WEBSOCKETS을 선택하여 WSS ENDPOINT도 따로 저장해둡니다.
3. metamask 계정 생성
다들 metamask 계정은 하나씩 가지고 계시겠지만 validator에 사용할 계정을 따로 만드는 것을 추천드립니다.
4. Georli faucet 및 $FLIP faucet 수령
기존에 사용하시던 계정에 gETH가 있다면 새로 생성한 계정에 옮겨주시고 그게 아니라면 faucet을 이용하여 새로 생성한 계정에 트랜잭션 수수료를 위한 gETH를 소량 받아놓습니다. (https://faucetlink.to/goerli)
gETH를 받으셨다면 Chainflip 디스코드에 가입하여 verify를 하고 #faucet 채널에 들어갑니다.
채널 채팅창에 아래와 같이 입력해주시면 됩니다. YOUR_ETH_ADDRESS에는 validator로 사용할 metamask 주소를 넣습니다. 잠시 기다리시면 봇이 1000 FLIP을 보내줍니다.
!drip YOUR_ETH_ADDRESS
5. 네트워크 포트 개방
외부 네트워크와 통신하기 위해 포트를 개방합니다. Chainflip에서는 30333 (TCP)와 8078 (TCP)을 사용합니다. 설정 후에는 ufw status가 active로 나오는지, 설정한 포트가 잘 개방되었는지 반드시 확인합니다.
sudo ufw status
sudo ufw enable
sudo ufw allow 30333/tcp
sudo ufw allow 8078/tcp
sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22 ALLOW Anywhere
30333/tcp ALLOW Anywhere
8078/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
30333/tcp (v6) ALLOW Anywhere (v6)
8078/tcp (v6) ALLOW Anywhere (v6)
Getting the Validator Software
Chainflip 노드를 설치하기 전 패키지 Update & Upgrade 부터 실행해줍니다.
update & updrage software and packages:
sudo apt-get update
sudo apt-get upgrade
Chainflip 노드 설치를 위해 APT Repo를 등록합니다. APT Repo는 Chainflip 패키지를 인터넷에서 다운로드 받기 위한 경로라고 생각하시면 됩니다.
Adding Chainflip APT Repo:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL repo.chainflip.io/keys/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/chainflip.gpg
# verify
gpg --show-keys /etc/apt/keyrings/chainflip.gpg
After that, add Chainflip's Repo to aptsources list:
echo "deb [signed-by=/etc/apt/keyrings/chainflip.gpg] <https://repo.chainflip.io/perseverance/> focal main" | sudo tee /etc/apt/sources.list.d/chainflip.list
Chainflip 패키지를 설치합니다.
Installing The Packages:
sudo apt-get update
sudo apt-get install -y chainflip-cli chainflip-node chainflip-engine
Generating Keys
validator의 key를 생성하는 부분입니다. 생성한 key를 저장할 디렉토리부터 생성합니다.
sudo mkdir /etc/chainflip/keys
생성한 metamask 계정에서 private key를 export하여 /etc/chainflip/keys/ethereum_key_file에 넣어줍니다. 아래 명령어에서 YOUR_VALIDATOR_WALLET_PRIVATE_KEY 부분에 export한 private key를 넣어주시면 됩니다.
echo -n "YOUR_VALIDATOR_WALLET_PRIVATE_KEY" | sudo tee /etc/chainflip/keys/ethereum_key_file
서명 키를 생성합니다. 서명 키를 생성하면 secret phrase, secret seed, public eky, address 정보가 출력됩니다. 잘 보관해둡시다.
generate signing key:
chainflip-node key generate
/etc/chainflip/keys/signing_key_file에 생성한 서명 키 정보 중 secret seed를 넣어줍니다. YOUR_CHAINFLIP_SECRET_SEED에 "0x"을 포함하는 시작하는 secret seed 문자열을 그대로 넣어줍니다.
export SECRET_SEED=YOUR_CHAINFLIP_SECRET_SEED
# SECRET_SEED 환경 변수 확인
export | grep SECRET_SEED
# SECRET_SEED에서 앞 두 문자열을 (0x)빼고 /etc/chainflip/keys/signing_key_file에 삽입
echo -n "${SECRET_SEED:2}" | sudo tee /etc/chainflip/keys/signing_key_file
노드 키를 생성합니다.
generate node key:
sudo chainflip-node key generate-node-key --file /etc/chainflip/keys/node_key_file
# check
cat /etc/chainflip/keys/node_key_file
key는 root 계정을 가진 사용자 이외에는 접근하면 위험하기 때문에 생성한 key file에 대해 사용권한을 설정합니다. 아래처럼 설정하면 root만 read/write가 가능합니다.
cd /etc/chainflip/keys
ls -al
total 20
drwxr-xr-x 2 root root 4096 11월 18 23:08 .
drwxr-xr-x 4 root root 4096 11월 18 22:54 ..
-rw-r--r-- 1 root root 64 11월 18 23:04 ethereum_key_file
-rw-r--r-- 1 root root 64 11월 18 23:08 node_key_file
-rw-r--r-- 1 root root 69 11월 18 23:06 signing_key_file
sudo chmod 600 /etc/chainflip/keys/ethereum_key_file
sudo chmod 600 /etc/chainflip/keys/signing_key_file
sudo chmod 600 /etc/chainflip/keys/node_key_file
history -c
Configuration File
validator 설정 파일을 넣을 디렉토리와 파일을 생성합니다.
sudo mkdir -p /etc/chainflip/config
sudo vi /etc/chainflip/config/Default.toml
config 파일인 Defaut.toml에 아래 내용을 붙여넣습니다.
- IP_ADDRESS_OF_YOUR_NODE: public IP를 입력합니다.
- WSS_ENDPOINT_FROM_ETHEREUM_CLIENT: Prerequisite에서 미리 확인한 WSS ENDPOINT를 입력합니다.
- HTTPS_ENDPOINT_FROM_ETHEREUM_CLIENT: Prerequisite에서 미리 확인한 HTTPS ENDPOINT를 입력합니다.
# Default configurations for the CFE
[node_p2p]
node_key_file = "/etc/chainflip/keys/node_key_file"
ip_address="IP_ADDRESS_OF_YOUR_NODE"
port = "8078"
[state_chain]
ws_endpoint = "ws://127.0.0.1:9944"
signing_key_file = "/etc/chainflip/keys/signing_key_file"
[eth]
# Ethereum RPC endpoints (websocket and http for redundancy).
ws_node_endpoint = "WSS_ENDPOINT_FROM_ETHEREUM_CLIENT"
http_node_endpoint = "HTTPS_ENDPOINT_FROM_ETHEREUM_CLIENT"
# Ethereum private key file path. This file should contain a hex-encoded private key.
private_key_file = "/etc/chainflip/keys/ethereum_key_file"
[signing]
db_file = "/etc/chainflip/data.db"
Start Up
chainflip-node를 시작합니다. status를 확인했을 때 "active" 인지 확인합니다.
# start
sudo systemctl start chainflip-node
# check status
sudo systemctl status chainflip-node
아래 명령어를 입력하면 chainflip-node에서 발생하는 로그를 확인할 수 있습니다. 로그를 통해 동기화가 잘되고 있는지 (bps가 0은 아닌지), target=# 뒤의 숫자가 블록 익스플로러의 최신 블록 번호와 일치하는 지 확인합니다. 최신 블록까지 동기화하는데 저는 약 1시간 정도 걸렸습니다.
tail -f /var/log/chainflip-node.log
2022-11-18 23:24:58 Vault rotation initiated.
2022-11-18 23:24:58 Vault rotation initiated.
2022-11-18 23:25:01 ⚙️ Syncing 152.2 bps, target=#146006 (31 peers), best: #7996 (0x3148…1c0a), finalized #7690 (0xeb32…90f5), ⬇ 10.8kiB/s ⬆ 3.3kiB/s
2022-11-18 23:25:06 ⚙️ Syncing 178.0 bps, target=#146006 (31 peers), best: #8887 (0xb949…5669), finalized #8704 (0x58cc…f97b), ⬇ 56.4kiB/s ⬆ 3.7kiB/s
2022-11-18 23:25:09 Starting rotation
2022-11-18 23:25:09 Auction resolved with 15 winners and 0 losers. Bond will be 1010FLIP.
2022-11-18 23:25:09 Vault rotation initiated.
2022-11-18 23:25:09 Vault rotation initiated.
2022-11-18 23:25:09 Vault rotation initiated.
2022-11-18 23:25:11 ⚙️ Syncing 170.3 bps, target=#146006 (31 peers), best: #9739 (0xfc37…24c7), finalized #9728 (0xdd56…65a8), ⬇ 633.8kiB/s ⬆ 3.6kiB/s
2022-11-18 23:25:16 ⚙️ Syncing 202.9 bps, target=#146006 (31 peers), best: #10754 (0xc2ab…a2ca), finalized #10752 (0x796b…a3bb), ⬇ 51.4kiB/s ⬆ 2.7kiB/s
2022-11-18 23:25:19 Starting rotation
2022-11-18 23:25:19 Auction resolved with 15 winners and 0 losers. Bond will be 1012FLIP.
동기화가 완료되었다면 다른 터미널에서 chainflip-engine을 시작합니다. 이 때에도 status를 확인하여 "active"인지 반드시 보고 넘어가야 합니다.
sudo systemctl start chainflip-engine
sudo systemctl status chainflip-engine
# config file이 변경되거나 종료된 경우
sudo systemctl restart chainflip-engine
# 로그 확인
tail -f /var/log/chainflip-engine.log
재부팅 후에도 자동 실행되도록 아래와 같이 명령어를 입력합니다.
sudo systemctl enable chainflip-node
sudo systemctl enable chainflip-engine
logrotate 설치 (필수는 아닙니다.)
log 파일 관리를 위해 logrotate를 설치하여 사용할 수 있습니다.
- 노드가 실행되면 로그도 계속 쌓임
- 로그를 날짜 별로 분리하여 관리하기 위한 logrotate 사용
logrotate 설치:
sudo apt install logrotate
logrotate --version
logrotate 설정:
sudo vi /etc/logrotate.d/chainflip
/var/log/chainflip-*.log {
rotate 7
daily
dateext
dateformat -%Y-%m-%d
missingok
notifempty
copytruncate
nocompress
}
sudo chmod 644 /etc/logrotate.d/chainflip
sudo chown root.root /etc/logrotate.d/chainflip
Bidding & Staking
validator로 네트워크에서 활동하기 위해서는 $FLIP을 스테이킹하여 매 라운드의 Bidding에 참여해야 합니다.
Staking via the Validator Dashboard에 접속하여 아래와 매뉴얼에 따라 대시보드에 node를 등록하고 보유한 $FLIP을 스테이킹합니다.
- $FLIP의 컨트랙트 주소를 확인하고 metamask에 추가합니다. (0x8e71CEe1679bceFE1D426C7f23EAdE9d68e62650)
- Perseverance Staking App -> "My Nodes" 로 이동합니다.
- $FLIP을 보유하고 있는 metamask 지갑을 연결합니다.
- "+ Add Node" 을 누릅니다.
- Generating Keys 단계에서 생성한 Validator ID를 입력합니다. your Public Key(SS58) 필드의 값과 동일합니다. 원하는 수량 만큼 "Stake" 를 눌러 스테이킹합니다. (현재 스테이킹에 필요한 최소 $FLIP은 1,000 이상입니다.)
- "Stake" 를 누르면 $FLIP에 대한 approve 트랜잭션과 stake 트랜잭션이 실행됩니다. (각 단계에서 서명이 필요합니다.)
- "My Nodes" page에서 노드가 정상적으로 표시되는지 확인합니다.
대시보드 등록 완료 후에 chainflip-engine을 재시작합니다.
sudo systemctl restart chainflip-engine
validator key를 네트워크에 등록합니다. 아래 명령어들은 실행 후 나오는 txid를 익스플로러에 입력하여 트랜잭션이 잘 실행되었는지 확인할 수 있습니다.
Registering Validator Keys:
sudo chainflip-cli \\
> --config-path /etc/chainflip/config/Default.toml \\
> register-account-role Validator
Connecting to state chain node at: `ws://127.0.0.1:9944` and using private key located at: `/etc/chainflip/keys/signing_key_file`
Submtting `register-account-role` with role: AccountRole::Validator. This cannot be reversed for your account.
Do you wish to proceed? [y/n] > y
Submitting...
Account role set at tx 0x8074545013ef15dea658f8fdff12f31bb1e1e5fff333423028c524c5fe203666.
# check
https://blocks-perseverance.chainflip.io/extrinsic/0x8074545013ef15dea658f8fdff12f31bb1e1e5fff333423028c524c5fe203666
activate:
sudo chainflip-cli \\
> --config-path /etc/chainflip/config/Default.toml \\
> activate
Connecting to state chain node at: `ws://127.0.0.1:9944` and using private key located at: `/etc/chainflip/keys/signing_key_file`
Account activated at tx 0x14790887f303c61a8000140aa37a016f89f9e0acc83494ee3d3cc16b98b12717.
# check
https://blocks-perseverance.chainflip.io/extrinsic/0x14790887f303c61a8000140aa37a016f89f9e0acc83494ee3d3cc16b98b12717
rotate:
sudo chainflip-cli \\
> --config-path /etc/chainflip/config/Default.toml rotate
Connecting to state chain node at: `ws://127.0.0.1:9944` and using private key located at: `/etc/chainflip/keys/signing_key_file`
Session key rotated at tx 0xea7eef3d638a38e6ef2ec6b83247d46292e6dfdd9b829698119e77c3d9a41f8b.
# check
https://blocks-perseverance.chainflip.io/extrinsic/0xea7eef3d638a38e6ef2ec6b83247d46292e6dfdd9b829698119e77c3d9a41f8b
vanity name을 설정하지 않으면 익스플로러에서 "Nonamed"로 표시되니 원하는 vanity name을 설정해주도록 합니다.
set the vanity name:
sudo chainflip-cli \\
> --config-path /etc/chainflip/config/Default.toml \\
> vanity-name YOUR_VANITY_NAME
Connecting to state chain node at: `ws://127.0.0.1:9944` and using private key located at: `/etc/chainflip/keys/signing_key_file`
Vanity name set at tx 0xaa7595d9d9a71639e8cd7db6ca93673d93cd3cc1bdbaef79692ea144b1b75c35.
# check
https://blocks-perseverance.chainflip.io/extrinsic/0xaa7595d9d9a71639e8cd7db6ca93673d93cd3cc1bdbaef79692ea144b1b75c35
vanity name이 변경되면 My node에서 잘 표시되는 지 확인합니다.
https://stake-perseverance.chainflip.io/auctions 에서 현재 진행하고 있는 auction progress를 확인할 수 있습니다. 해당 라운드가 끝나면 노드 상태가 "offline → Backup: ready" 로 변경됩니다. auction에 정상적으로 참여하고 있다면 노드 정보를 확인했을 때 "online" 표시가 떠야 하고, Last Active Keyset에 자신의 노드가 표시되어야 합니다. (보상의 기준이 됩니다.)
지금까지 긴 내용의 포스팅에도 불구하고 잘 따라와주셔서 감사합니다. 노력하신 만큼 큰 보상이 따르길 기원하겠습니다.
본 포스팅을 재미있게 읽으셨다면 "❤️"도 눌러주시길 부탁드립니다. 그리고!! 트레이딩에 관심이 있으신 분 + 신규 거래소나 증정금 이벤트를 찾고 계시는 분이라면 bingx 형퍼럴로 가입 부탁드립니다. 컨텐츠 제작에 큰 힘이 됩니다.
bingx 거래소 무조건 100달러 받기 이벤트 진행중 (입금 0원, 가입링크)
- 회원가입/핸드폰 등록 50 USDT
- KYC 인증 50 USDT
- 500불 입금후 7일유지 / 50 USDT
> 입금없이 받은 증정금만으로도 거래량 이벤트를 달성할수 있습니다.
- 거래량 10k / 10 USDT
- 거래량 50k / 40 USDT
- 거래량 150k / 100 USDT
제 레퍼럴로 가입하신 분들은 블로그 댓글이나 텔레그램 채널을 통해 꼭 알려주세요. 아래와 같은 혜택을 드립니다. 추가적인 혜택도 드릴 수 있도록 열심히 노력하겠습니다.
1️⃣ 퀀트를 통한 개별 코인 트레이딩 시그널 (매일 최소 3회 이상 제공, Entry/TP/SL 포함)
2️⃣ 시장에 따른 실시간 매수/매도 전략
3️⃣ 리스크 관리를 위한 자금 운용 전략
4️⃣ 일일 크립토 시황/국제 경제 브리핑
'Blockchain > Testnet' 카테고리의 다른 글
Fleek 프로젝트 소개 및 테스트넷 노드 설치 가이드 (4) | 2022.12.07 |
---|---|
Exorde 인센티브 테스트넷 노드 설치 가이드 (2) | 2022.12.01 |
ironfish 노드 v0.1.52 업그레이드 & 하드포크 (1) | 2022.11.17 |
ironfish 인센티브 테스트넷 페이즈2 참여 가이드 (8) | 2022.11.03 |
Celestia 테스트넷 노드 설치 가이드 (24) | 2022.10.26 |