Update 2023. 3. 11.

심볼 노드를 구성하는 방법

This page is a machine translation of the English text. Please contact faunsu https://twitter.com/faunsu19000 or symbol-community.com/community for language proofreading of articles.

목차

  • Symbol 노드 정보
  • 노드의 특징과 서버의 기본 사양
  • Symbol Node 구축 절차
  • Tips

심볼 노드에 대하여

블록체인 노드는 트랜잭션 데이터를 시간순으로 기록하며 과거 내용을 확인할 수 있습니다. 분산 원장으로서 여러 노드가 동일한 데이터를 공유하고 누구나 트랜잭션 데이터를 볼 수 있습니다. Symbol의 블록체인은 전 세계 노드 네트워크에 의해 구축되고 유지됩니다. 노드는 트랜잭션을 실행하고 검색을 수행하며 해당 데이터를 블록으로 원장에 기록합니다.

노드 기능 및 기본 서버 사양

Symbol 노드에는 세 가지 유형이 있습니다. 순서대로 설명하겠습니다.
-피어 노드
  • API 노드
  • 투표 노드

피어 노드

Harvester 노드라고도 하며 네트워크를 지원합니다. 주로 트랜잭션을 검증하여 블록체인에 새 블록을 추가하고 그 과정에서 수수료를 징수합니다.
strapi-blog-api-image

API 노드

API 노드의 주요 역할은 MongoDB에 데이터를 읽을 수 있는 형식으로 저장하는 것입니다. API 노드는 또한 완료된 채권 거래에 대한 공동 서명을 수집할 책임이 있으며 이는 완료된 경우에만 처리됩니다.
strapi-blog-api-image
  • 단일 노드는 피어 노드와 API 노드를 동시에 실행할 수 있습니다. 이 경우 Dual Node로 표현됩니다.

투표 노드

Symbol은 최종화 수단으로 투표 노드를 제공합니다. 투표 노드는 그녀의 300만 xym을 가진 사용자만 만들 수 있습니다. 블록은 완료되면 완료된 것으로 간주됩니다. Symbol의 마무리는 pBFT를 채택하고 투표 노드의 67% 이상이 승인해야 합니다. 예를 들어, 금융 기관이 블록체인에서 결제 처리를 구현할 때 생성된 블록이 변경되지 않도록 보장해야 합니다. 파이널라이즈를 이용하면 금융기관은 블록이 확정되었음을 알 수 있고 결제 처리를 원활하게 구현할 수 있다.
투표 노드는 심볼 블록체인에서 선택 사항입니다. 새로운 네트워크를 구축할 때 네트워크 설정에서 끌 수 있으며 단일 플러그인으로 배치됩니다. 종료가 중지되더라도 PoS+ 로직에 따라 블록이 계속 생성됩니다. 최종화를 위한 사용 사례로, 블록체인에서 비즈니스를 수행하려는 조직 및 산업은 강력한 PoS+ 체인에서 최종화 기능을 추가로 활성화하고 업계 내에서 블록 확인 타이밍을 공유하기 위해 투표 노드를 운영 및 관리할 수 있습니다. 인식을 사용하고 운영하기 쉬운 퍼블릭 컨소시엄 체인을 실행할 수 있습니다.

심볼노드 구축 절차

다음과 같은 환경으로 서버를 구성해주세요. 서버 운영이 걱정되신다면 Allnode 서비스 이용을 고려해보세요. Debian 이외의 Linux OS 배포판도 사용할 수 있지만 아래에 설명된 샘플 스크립트는 Debian을 기반으로 합니다.
  • 필수 하드웨어 사양 이상의 서버(별도 표)
  • 데비안 OS 10 이상
  • 포트 80, 443, 3000, 3001, 7900

(부록) 필수 하드웨어 사양

필수 요구 사항은 다음과 같습니다.
최소 사양피어 노드API 노드이중 / 투표
CPU2코어4코어4코어
8GB16GB16GB
디스크 크기500GB750GB
디스크 IOPS1500 IOPS SSD1500 IOPS SSD1500 IOPS SSD
  다음 표에는 권장 요구 사항이 나열되어 있습니다. 그것들을 사용하면 보다 부드러운 경험을 제공하고 어느 정도의 미래 보장을 제공할 것입니다.
권장사양피어 노드API 노드이중 / 투표
CPU4코어8코어8코어
16GB32GB32GB
디스크 크기500GB750GB
디스크 IOPS1500 IOPS SSD1500 IOPS SSD1500 IOPS SSD

평소에 서버를 구축하지 않는 분들을 위한 주의사항

노드를 구축하기 전에 다음 보안 조치를 구현하십시오. 보안 조치가 부적절하면 본인 이외의 사람이 무단으로 액세스할 수 있습니다.
  • 방화벽 설정
  • SSH 통신을 위해 루트 로그인을 금지하고 공개키로 인증
  • 원칙적으로 22, 80, 3000, 3001, 7900을 제외한 PORT는 닫혀 있어야 함

포트 사용

22: SSH 연결. 작업 80: Let's Encrypt + 기호 노드 목록 3000: HTTP REST 게이트웨이 3001: HTTPS REST 게이트웨이 7900: catapult-client와 노드 간 통신

서버 초기 설정

서버에 연결하고 먼저 서버에서 운영 계정을 만듭니다.
추가 사용자 기호
usermod -aG sudo 기호
수 - 기호

필수 소프트웨어 설치

다음 스크립트를 실행하여 환경을 구축합니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ymuichiro/symbol-node-builder/main/scripts/install.sh)"
일반적으로 다음과 같은 작업이 필요하지만 위의 스크립트가 자동으로 설정합니다.
  • nvm, node.js 16, npm 설치
  • docker 설치, docker-compose
  • npm을 통해 symbol-bootstrap 설치
  • ~/symbol-bootstrap/** 폴더 생성

Symbol-Bootstrap 시작 및 설정

다음 명령으로 Symbol-bootstrap을 시작합니다.
시디~/
심볼 부트스트랩
심볼 부트스트랩 마법사
 
  1. 네트워크 선택 노드를 구축할 네트워크를 선택합니다.
네트워크 선택: (화살표 키 사용)
❯ 메인넷 노드
      테스트넷 노드
      부트스트랩 로컬 네트워크
      사용자 지정 네트워크 노드('custom-network-preset.yml' 파일 및 'nemesis-seed' 폴더 필요)
  2. 노드 유형 선택 노드 유형 선택
어셈블리 선택: (화살표 키 사용)
❯ 듀얼 노드
    피어 노드
    API 노드
    데모 노드. Faucet 및 Explorer를 포함하는 이중 노드.
  3. 개인 키를 처리하므로 오프라인을 권장합니다. 인터넷에 연결되어 있지 않으면 VPS 등을 사용할 수 없으므로 Y를 눌러 진행하십시오.
? Symbol Bootstrap은 민감한 정보(개인 키)로 작업을 시작할 예정이므로 다음을 적극 권장합니다.
계속하기 전에 네트워크 연결을 끊습니다. 오프라인이거나 관심이 없다면 YES라고 말하세요. (예/아니요)
  4. Symbol 부트스트랩에 사용할 암호를 입력합니다.
사용자 지정 사전 설정, address.yml 및 preset.yml 파일을 암호화하고 해독하는 데 사용되는 암호를 입력합니다.
암호, 개인 키가 암호화됩니다.
  5. 수확 설정에는 4개의 계정이 필요합니다. 그들 중 기본 계정을 지정하십시오. 새 계정을 만들거나 기존 계정의 개인 키를 입력하세요.
? 기본 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
     개인 키 입력
     기본 계정의 64 HEX 개인 키를 입력하십시오(또는 Enter를 눌러 옵션을 다시 선택하십시오).
  6. 5번에 개인키를 입력했다면 계정 주소가 나옵니다. 차이가 없으면 y를 선택하십시오.
? 메인 계정으로 사용할 예상 주소 TCDNP********************55KCQ입니까? (예/아니요)
  7. 전송 계정과 기본 계정을 지정합니다.
? 운송 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
    개인 키 입력
  8. VRF 계정도 비슷합니다.
? VRF 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
     개인 키 입력
  9. 원격 계정도 비슷합니다.
? 원격 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
    개인 키 입력
  10. HTTP 설정을 구성합니다. 두 번째 자동 ~ 을 선택하면 자동으로 HTTPS를 설정할 수 있습니다.
REST 게이트웨이는 기호 탐색기에서 인식할 수 있도록 HTTPS(보안 프로토콜)에서 실행되어야 합니다.
? HTTPS 설정 방법 선택: (화살표 키 사용)
❯ 기본 지원, SSL 인증서와 키가 있습니다.
     자동, letencyrpt를 사용하여 모든 키와 인증서가 자동으로 생성/갱신됩니다.
     없음
  11. 호스트 이름을 입력합니다. IP 주소 또는 도메인을 지정합니다.
? 아웃바운드 호스트 IP를 가리키는 공개 도메인 이름(예: node-01.mysymbolnodes.com)을 입력하세요. 이 값은
HTTPS에서 실행할 때 필요합니다!
  12. 친숙한 이름을 입력합니다.
노드의 친숙한 이름을 입력하십시오.
  13. 4가지 유형의 계정(키) 중 암호화할 계정 수를 선택합니다.
? 사용하려는 보안 유형 선택: (화살표 키 사용)
     PROMPT_MAIN: 부트스트랩은 인증서 업그레이드를 수행할 때 기본 개인 키를 요청할 수 있습니다. 다른 키는 암호화됩니다.
❯ PROMPT_MAIN_TRANSPORT: 부트스트랩은 인증서를 재생성할 때 기본 및 전송 개인 키를 요청할 수 있습니다.
키가 암호화됩니다.
     암호화: 모든 키가 암호화되어 비밀번호만 묻습니다.
  15. 투표 노드를 등록하거나 선택합니다. 300만 xym을 소유하지 않으면 투표 노드가 될 수 없습니다.
투표 노드를 만들고 있습니까? (예/아니요)
모든 질문에 답하면 ~/custom-preset.yml이 완성됩니다. 기본적으로 BenefitAddress는 지정되지 않습니다. 파일을 열고 올바른 값을 지정하십시오. 아래에 샘플이 나와 있습니다.
조립: 이중
프리셋: 메인넷
privateKeySecurityMode: PROMPT_MAIN_TRANSPORT
노드:
      -
          호스트: example.org
          최대 잠금 해제 계정: 30
          혜택 주소: ${your-symbol-address}
          투표: 거짓
          friendlyName: ${귀하의 이름}
          mainPrivateKey: ${your-node-main-privatekey}
          vrfPrivateKey: ${your-node-vrf-privatekey}
          remotePrivateKey: ${your-node-remote-privatekey}
          transportPrivateKey: ${your-node-transport-privatekey}
https프록시:
      -
          excludeDockerService: 거짓
호스트 … 노드에 할당된 IP 주소 또는 도메인을 입력합니다. maxUnlockedAccounts … 노드에 위임할 수 있는 최대 주소 수를 지정합니다. beneficiaryAddress … 노드가 받은 하베스팅 보상의 지불 목적지 주소 지정 friendlyName … 모든 노드의 이름을 지정합니다.

심볼 노드 시작

다음 명령을 실행하여 ~/custom-preset.yml을 로드하고 symbol-bootstrap을 시작합니다.
cd ~/기호-부트스트랩
심볼-부트스트랩 구성 -p 메인넷 -a 듀얼 -c custom-preset.yml
기호-부트스트랩 시작 -d
심볼-부트스트랩 healthCheck
다음은 symbol-bootstrap의 시작 및 중지 명령 목록입니다.
기호-부트스트랩 시작 - d 처음 부팅할 때만 지정됩니다. symbol-bootstrap run -d 두 번째 및 후속 부팅에 대해 지정하십시오. symbol-bootstrap stop 언제 일시 중지할지 지정합니다. 실행 명령으로 다시 시작할 수 있습니다.
  • -d를 지정하면 백엔드에서 시작할 수 있습니다. symbol-bootstrap에서 오류가 발생하고 디버그해야 하는 경우를 제외하고 원칙적으로 -d를 추가하십시오.
이 작업은 symbol-bootstrap의 새로운 구성을 완료합니다. 2023년 3월부터 새로운 symbol-bootstrap이 시작되며 모든 블록이 동기화되는 데 약 1.5~2일이 소요됩니다. 위임자를 모집할 때는 모든 블록이 동기화되었을 때 수행하십시오.
다음은 다양한 팁에 대해 설명합니다.
##팁

노드 인증서 업데이트

노드 인증서는 노드가 구축된 후 약 1년 후에 만료됩니다. 노드 인증서를 갱신하지 않는 노드는 무효화됩니다.
  1. healthCheck로 노드 SSL 인증서 만료 확인
심볼-부트스트랩 healthCheck

> 노드 노드에 대한 node.crt.pem 인증서가 2023년 8월 2일 14:30:34 GMT에 만료됩니다. 아직 갱신할 필요가 없습니다.
  1. 인증서 갱신
symbol-bootstrap 갱신 인증서

Symbol Node 목록에 노드 정보 표시

자신의 노드 정보를 심볼 노드 목록에 게시할 수 있습니다. 게시 방법에는 두 가지가 있습니다.
  1. 결제로 등록(권장)
댓글 등록 페이지에 접속하여 게시 정보를 생성하고 10xym(2023/03/09 기준 수수료 금액)을 지불하면 됩니다. 납부하여 반영합니다.
  1. 노드에 nodeSetting.json을 설정하여 등록
무료로 지정할 수 있습니다. 자체 서버를 소유하고 있고 서버에서 설정을 구성할 수 있는 경우 이 방법을 선택할 수 있습니다. 다음 단계를 수행하는 방법을 모르는 경우 1단계를 권장합니다.
설치 방법
  • 노드의 다음 경로에 구성 파일을 배치합니다. - http://xxx.xxx.xxx.xxx:80/nodeSetting.json
  • symbol-bootstrap이 실행 중이며 포트 80, 443에서도 수신 대기 중입니다. 따라서 다음 또는 이와 동등한 작업을 수행해야 합니다. - ~/symbol-bootstrap/target/docker/docker-compose.yml을 편집하고 nodeSetting.json이 nginx에서 자신의 경로에 마운트되도록 볼륨 정보를 다시 작성합니다. - symbol-bootstrap compose 등으로 컨테이너를 다시 빌드하고 노드를 시작합니다.
  • 이 과정은 symbol-bootstrap 업데이트나 프리셋 업데이트 시 docker-compose.yml 파일을 덮어쓰게 되므로 매번 재등록이 필요합니다.
  • 2 Allnodes 사용자는 사용할 수 없습니다.

MongoDB 인덱스 검토

참고문헌은 아래에 게시
https://qiita.com/nem_takanobu/items/8e39cc02df1b7adccfee

custom-preset.yml 업데이트 시

custom-preset.yml은 symbol-bootstrap 작동 중 변경될 수 있습니다. 이 경우 파일을 업데이트한 후 변경 사항을 반영하기 위해 다음과 같이 실행해야 합니다.
기호-부트스트랩 중지
심볼-부트스트랩 구성 -p 메인넷 -a 듀얼 -c custom-preset.yml --upgrade
기호-부트스트랩 작성 --업그레이드
기호-부트스트랩 실행 -d

노드 오류 원인 확인 방법

어떤 이유로 노드가 다운될 때 오류의 원인을 확인하는 방법에는 여러 가지가 있습니다.
  1. symbol-bootstrap의 로그 출력 확인
symbol-bootstrap을 시작할 때 -d 옵션을 생략하면 로그를 확인하면서 시작할 수 있습니다. 다음을 실행하여 로그를 볼 수 있습니다.
심볼 부트스트랩 실행
  1. docker의 로그 기능 사용
1단계는 모든 컨테이너의 로그를 문제로 출력합니다. 다음 명령을 실행하면 문제가 있는 컨테이너를 확인할 수 있습니다.
기호-부트스트랩 중지
기호-부트스트랩 실행 -d
도커 ps -a
또한 정상이라면 다음과 같이 출력됩니다. 샘플로 설명합니다.
기호@xxxxxxxxxxxxxxxxxxx:~$ docker ps -a
컨테이너 ID 이미지 명령 생성 상태 포트 이름
8d44313c93d6 steveltn/https-portal:1.19 "/init" 40시간 전 최대 40시간 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:3001->443/tcp, :::3001->443/tcp https-프록시
71fa6d455cf6 symbolplatform/symbol-server:gcc-1.0.3.5 "/bin/bash /symbol-c…" 40시간 전 최대 40시간 0.0.0.0:7900->7900/tcp, :::7900->7900/tcp 노드
542ca6019607 symbolplatform/symbol-server:gcc-1.0.3.5 "/bin/bash /symbol-c…" 2일 전 최대 40시간 브로커
5b6765426fd2 symbolplatform/symbol-rest:2.4.2 "docker-entrypoint.s…" 2일 전 최대 40시간 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp rest-gateway
19c9ac8edce9 mongo:4.4.3-bionic "docker-entrypoint.s…" 2일 전 최대 40시간 27017/tcp db
STATUS가 Exec(0)인 컨테이너가 있으면 오류가 발생한 것입니다. 해당 컨테이너에 대한 로그만 확인하고 싶다면 다음과 같이 실행한다. ${CONTAINER ID}는 Exec(0)이 출력한 컨테이너의 ID를 지정합니다.
도커 로그 ${CONTAINER ID}

링크


News
Community
Docs
Contact