Blockchain/Testnet

Fleek 프로젝트 소개 및 테스트넷 노드 설치 가이드

lowsec 2022. 12. 7. 22:18

What is Fleek?

중앙화된 CDN된 네트워크로 인해 발생하는 사용자의 불편함을 해소하고자 진행되고 있는 프로젝트입니다. 인프라가 잘 세팅된 곳에서는 질 좋은 서비스를 사용할 수 있고 그렇지 않은 곳은 서비스를 제공받을 수 없는 문제 (제공받는 서비스에도 빈부격차가 존재)가 존재하는데, 컨텐츠 프로바이더와 컨텐츠 네트워크를 탈중앙화된 구조로 변경하여 web3 생태계에서의 어플리케이션을 어디서나 완전하게 제공하고자하는 것이 목표라고 합니다. 이를 위해 아래와 같은 기능을 지원하고 있습니다.

 

  • Hosting (IPFS, ENS)
  • Storage (FileCoin, IPFS, Arweave, Storj, Sia)
  • Gateway

사진. what-is-fleek

 

Fleek은 ENS, Filecoin 등 기존의 인프라 프로젝트들을 서비스에서 지원할 뿐만 아니라 자체 네트워크도 함께 개발 중인데요. https://app.fleek.co/ 에서는 샘플 어플리케이션을 제공하고 있습니다. 프로젝트에 관심 있는 분들은 한 번 사용해보시면서 fleek이 어떤 기능을 제공하고자 하는지 직접 확인해보시는 것을 추천드립니다.

 

Fleek Network는 최근에 폴리체인 캐피탈의 리드로 2500만 달러를 투자 받았습니다. 투자사로는 코인베이스 벤처스, DCG, arweave 등이 있습니다. (https://t.me/crypto_fundraising/1446)

 

사진. fleek-fundraising

 

그리고 fleek 공식 가이드에서 노드로 네트워크에 참여하는 사용자에게 인센티브를 줄 것을 암시하고 있습니다.

 

“Fleek Network relies on blockchain technology at its core, allowing governance and token rewards as incentives for participation in serving the network.”

 

하지만 디스코드에서는 현재 테스트넷은 아직 incentized testnet 단계는 아니며 향후 공지를 기다리라고 하네요. (팀 내부에서도 충분히 논의되는 내용인 듯 합니다.)

 

사진. fleek-not-incentived

 

fleek 프로젝트에 대해 더 자세히 알고 싶으신 분들은 아래 링크를 통해 직접 커뮤니티에 참여해보세요!

 

Run a node

  • fleek github (https://github.com/fleek-network/ursa) 의 README를 참고하여 작성했습니다.
  • Rust를 설치하여 직접 설치하는 방법과 docker로 설치하는 두 가지 방법 중 본 포스팅에서는 후자를 소개합니다.

Install & Run (docker)

fleek의 클라이언트 이름은 ursa입니다. ursa 노드를 설치하고 실행하는 방법은 아주 간단합니다.

 

ursa 이외에 클라이언트 메트릭을 확인할 수 있는 prometheus, grafana, 로드 밸런서인 nginx와 nginx의 exporter도 docker로 제공하고 있지만 실행 시 에러가 발생하여 본 포스팅에서는 제외하였습니다.

sudo apt-get update && sudo apt-get upgrade

git clone https://github.com/fleek-network/ursa.git

cd ursa

# buildkit 활성화
export DOCKER_BUILDKIT=1

# 노드 image 생성
make docker-build

# 노드 실행
make docker-run

 

노드를 실행하면 아래와 같은 로그를 확인하실 수 있습니다.

 

2022-12-07T12:28:33.231992Z  INFO ursa::ursa::identity: Created identity `default` (12D3KooWA8ZkVjgLEYUkv9quA58gk6TmzBaTXb1LacFBS4gKULcj)
2022-12-07T12:28:33.232038Z  INFO ursa: Using "/root/.ursa/data/ursa_db" as database path
2022-12-07T12:28:33.284415Z  INFO ursa_network::discovery: Bootstrapping with [(PeerId("12D3KooWDji7xMLia6GAsyr4oiEFD2dd3zSryqNhfxU3Grzs1r9p"), "/ip4/159.223.211.234/tcp/6009"), (PeerId("12D3KooWGw8vCj9XayJDMXUiox6pCUFm7oVuWkDJeE2H9SDQVEcM"), "/ip4/146.190.232.131/tcp/6009")]
2022-12-07T12:28:33.287322Z  INFO ursa_network::service: Node starting up with peerId PeerId("12D3KooWA8ZkVjgLEYUkv9quA58gk6TmzBaTXb1LacFBS4gKULcj")
2022-12-07T12:28:33.288036Z  INFO ursa_network::discovery: [KademliaEvent] RoutingUpdated { peer: PeerId("12D3KooWDji7xMLia6GAsyr4oiEFD2dd3zSryqNhfxU3Grzs1r9p"), is_new_peer: true, addresses: ["/ip4/159.223.211.234/tcp/6009"], bucket_range: (Distance(28948022309329048855892746252171976963317496166410141009864396001978282409984), Distance(57896044618658097711785492504343953926634992332820282019728792003956564819967)), old_peer: None }
2022-12-07T12:28:33.288411Z  INFO ursa_network::discovery: [KademliaEvent] RoutingUpdated { peer: PeerId("12D3KooWGw8vCj9XayJDMXUiox6pCUFm7oVuWkDJeE2H9SDQVEcM"), is_new_peer: true, addresses: ["/ip4/146.190.232.131/tcp/6009"], bucket_range: (Distance(57896044618658097711785492504343953926634992332820282019728792003956564819968), Distance(115792089237316195423570985008687907853269984665640564039457584007913129639935)), old_peer: None }
2022-12-07T12:28:33.289656Z  INFO ursa_rpc_server::server: Server (Rpc and http) starting up
2022-12-07T12:28:33.290092Z  INFO ursa_rpc_server::server: listening on 0.0.0.0:4069
2022-12-07T12:28:33.291096Z  INFO ursa_index_provider::provider: index provider starting up
2022-12-07T12:28:33.291545Z  INFO ursa_index_provider::provider: index provider listening on: 0.0.0.0:8070
2022-12-07T12:28:33.292244Z  INFO ursa_metrics::metrics: listening on 0.0.0.0:4070
2022-12-07T12:28:36.253113Z  INFO ursa_metrics::events: capturing event PeerConnected
2022-12-07T12:28:36.334314Z  INFO ursa_metrics::events: capturing event PeerConnected
2022-12-07T12:28:37.268759Z  INFO ursa_network::discovery: [KademliaEvent] RoutingUpdated { peer: PeerId("12D3KooWGw8vCj9XayJDMXUiox6pCUFm7oVuWkDJeE2H9SDQVEcM"), is_new_peer: false, addresses: ["/ip4/146.190.232.131/tcp/6009", "/ip4/146.190.232.131/tcp/6009/p2p/12D3KooWGw8vCj9XayJDMXUiox6pCUFm7oVuWkDJeE2H9SDQVEcM"], bucket_range: (Distance(57896044618658097711785492504343953926634992332820282019728792003956564819968), Distance(115792089237316195423570985008687907853269984665640564039457584007913129639935)), old_peer: None }
2022-12-07T12:28:37.269017Z  INFO ursa_network::discovery: [KademliaEvent] RoutingUpdated { peer: PeerId("12D3KooWGw8vCj9XayJDMXUiox6pCUFm7oVuWkDJeE2H9SDQVEcM"), is_new_peer: false, addresses: ["/ip4/146.190.232.131/tcp/6009", "/ip4/146.190.232.131/tcp/6009/p2p/12D3KooWGw8vCj9XayJDMXUiox6pCUFm7oVuWkDJeE2H9SDQVEcM", "/ip4/127.0.0.1/tcp/6009"], bucket_range: (Distance(57896044618658097711785492504343953926634992332820282019728792003956564819968), Distance(115792089237316195423570985008687907853269984665640564039457584007913129639935)), old_peer: None }

 

이 상태에서 Ctrl + C를 누르시면 노드가 종료됩니다. 다시 노드를 실행하면 아래와 같은 에러가 발생할텐데요.

 

docker: Error response from daemon: Conflict. The container name "/ursa-cli" is already in use by container "170873c06faa5445d5b9d872a0f119b7a352d11e42a4fee7521bb3fae219b9c4". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
make: *** [Makefile:28: docker-run] Error 125

 

Ctrl + C를 눌러서 실행 중인 container는 종료되었지만 삭제된 것은 아니기 때문입니다. 아래 명령어로 남아있는 container를 지워주면 make docker-run으로 재실행이 가능합니다.

 

docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                       PORTS     NAMES
7ed72615fbed   grafana/grafana:6.7.2   "/run.sh"                7 minutes ago    Exited (1) 7 minutes ago               ursa_grafana_1
91310f006357   fish/nginx-exporter     "/usr/local/bin/ngin…"   7 minutes ago    Exited (137) 7 minutes ago             ursa_nginxexporter_1
30142fe527a1   prom/prometheus         "/bin/prometheus --w…"   7 minutes ago    Exited (137) 7 minutes ago             ursa_prometheus_1
83e480da969c   nginx:latest            "/docker-entrypoint.…"   7 minutes ago    Exited (1) 7 minutes ago               ursa_nginx_1
39406a7474fb   certbot/certbot         "/bin/sh -c 'trap ex…"   7 minutes ago    Exited (137) 7 minutes ago             ursa_certbot_1
0143852971c3   ursa_ursa               "/ursa"                  7 minutes ago    Exited (137) 7 minutes ago             ursa_ursa_1
170873c06faa   ursa                    "/ursa"                  33 minutes ago   Exited (139) 8 minutes ago             ursa-cli

# docker rm <ursa-cli의 CONTAINER ID>
docker rm 170873c06faa
170873c06faa

 

두 번째 방법으로 infra/ursa/docker-compose.yml을 Makefile을 일부 수정하면 데몬 환경에서 노드를 실행할 수 있습니다.

 

  • infra/ursa/docker-compose.yml 수정
version: '3'

services:
  ursa:
    build:
      context: ../../.
      dockerfile: Dockerfile
    restart: on-failure
    ports:
      # 6009 TCP and UDP, used by the P2P protocol running the network
      - "6009:6009"
    expose:
      # 4069 TCP, used by the HTTP based JSON RPC API
      - "4069"
      # 4070 TCP, used by the HTTP metrics server
      - "4070"
      # 6009 TCP and UDP, used by the P2P protocol running the network
      - "6009"
      # 8070 TCP, used by the HTTP based index provider
      - "8070"
    volumes:
      - ${HOME}/.ursa/:/root/.ursa/:rw
  • Makefile 수정

 

compose-up: 부분에서 명령어 뒤에 -d를 붙여 데몬 환경에서 실행하도록 합니다. 이렇게 하면 노드가 백그라운드에서 실행되어 다른 터미널을 열지 않고도 실행 중인 컨테이너의 로그를 확인할 수 있습니다.

 

compose-up:
        docker-compose -f infra/ursa/docker-compose.yml up -d

 

두 개의 파일을 수정하고 저장한 뒤 아래와 같이 노드를 실행, 로그 확인, 노드 종료할 수 있습니다.

 

# 노드 실행
make compose-up

# 실행 중인 로그 확인
cd infra/ursa
docker-compose logs -f

# 노드 종료
docker-compose down

 

지금까지 제 포스팅을 읽어주셔서 감사합니다. 궁금한 점이 있으시면 언제든지 https://t.me/getmoneywithbrother 로 오셔서 질문해주시면 감사하겠습니다.


본 포스팅을 재미있게 읽으셨다면 "❤️"도 눌러주시길 부탁드립니다. 그리고!! 트레이딩에 관심이 있으신 분 + 신규 거래소나 증정금 이벤트를 찾고 계시는 분이라면 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️⃣ 일일 크립토 시황/국제 경제 브리핑