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 노드라고도 하며 네트워크를 지원합니다. 주로 트랜잭션을 검증하여 블록체인에 새 블록을 추가하고 그 과정에서 수수료를 징수합니다.

API 노드
API 노드의 주요 역할은 MongoDB에 데이터를 읽을 수 있는 형식으로 저장하는 것입니다. API 노드는 또한 완료된 채권 거래에 대한 공동 서명을 수집할 책임이 있으며 이는 완료된 경우에만 처리됩니다.

- 단일 노드는 피어 노드와 API 노드를 동시에 실행할 수 있습니다. 이 경우 Dual Node로 표현됩니다.
투표 노드
Symbol은 최종화 수단으로 투표 노드를 제공합니다. 투표 노드는 그녀의 300만 xym을 가진 사용자만 만들 수 있습니다. 블록은 완료되면 완료된 것으로 간주됩니다. Symbol의 마무리는 pBFT를 채택하고 투표 노드의 67% 이상이 승인해야 합니다. 예를 들어, 금융 기관이 블록체인에서 결제 처리를 구현할 때 생성된 블록이 변경되지 않도록 보장해야 합니다. 파이널라이즈를 이용하면 금융기관은 블록이 확정되었음을 알 수 있고 결제 처리를 원활하게 구현할 수 있다.
투표 노드는 심볼 블록체인에서 선택 사항입니다. 새로운 네트워크를 구축할 때 네트워크 설정에서 끌 수 있으며 단일 플러그인으로 배치됩니다. 종료가 중지되더라도 PoS+ 로직에 따라 블록이 계속 생성됩니다. 최종화를 위한 사용 사례로, 블록체인에서 비즈니스를 수행하려는 조직 및 산업은 강력한 PoS+ 체인에서 최종화 기능을 추가로 활성화하고 업계 내에서 블록 확인 타이밍을 공유하기 위해 투표 노드를 운영 및 관리할 수 있습니다. 인식을 사용하고 운영하기 쉬운 퍼블릭 컨소시엄 체인을 실행할 수 있습니다.
심볼노드 구축 절차
다음과 같은 환경으로 서버를 구성해주세요. 서버 운영이 걱정되신다면 Allnode 서비스 이용을 고려해보세요. Debian 이외의 Linux OS 배포판도 사용할 수 있지만 아래에 설명된 샘플 스크립트는 Debian을 기반으로 합니다.
- 필수 하드웨어 사양 이상의 서버(별도 표)
- 데비안 OS 10 이상
- 포트 80, 443, 3000, 3001, 7900
(부록) 필수 하드웨어 사양
필수 요구 사항은 다음과 같습니다.
| 최소 사양 | 피어 노드 | API 노드 | 이중 / 투표 |
|---|---|---|---|
| CPU | 2코어 | 4코어 | 4코어 |
| 램 | 8GB | 16GB | 16GB |
| 디스크 크기 | 500GB | 750GB | |
| 디스크 IOPS | 1500 IOPS SSD | 1500 IOPS SSD | 1500 IOPS SSD |
다음 표에는 권장 요구 사항이 나열되어 있습니다. 그것들을 사용하면 보다 부드러운 경험을 제공하고 어느 정도의 미래 보장을 제공할 것입니다.
| 권장사양 | 피어 노드 | API 노드 | 이중 / 투표 |
|---|---|---|---|
| CPU | 4코어 | 8코어 | 8코어 |
| 램 | 16GB | 32GB | 32GB |
| 디스크 크기 | 500GB | 750GB | |
| 디스크 IOPS | 1500 IOPS SSD | 1500 IOPS SSD | 1500 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을 시작합니다.
시디~/
심볼 부트스트랩
심볼 부트스트랩 마법사
- 네트워크 선택 노드를 구축할 네트워크를 선택합니다.
네트워크 선택: (화살표 키 사용)
❯ 메인넷 노드
테스트넷 노드
부트스트랩 로컬 네트워크
사용자 지정 네트워크 노드('custom-network-preset.yml' 파일 및 'nemesis-seed' 폴더 필요)
- 노드 유형 선택 노드 유형 선택
어셈블리 선택: (화살표 키 사용)
❯ 듀얼 노드
피어 노드
API 노드
데모 노드. Faucet 및 Explorer를 포함하는 이중 노드.
- 개인 키를 처리하므로 오프라인을 권장합니다. 인터넷에 연결되어 있지 않으면 VPS 등을 사용할 수 없으므로 Y를 눌러 진행하십시오.
? Symbol Bootstrap은 민감한 정보(개인 키)로 작업을 시작할 예정이므로 다음을 적극 권장합니다.
계속하기 전에 네트워크 연결을 끊습니다. 오프라인이거나 관심이 없다면 YES라고 말하세요. (예/아니요)
- Symbol 부트스트랩에 사용할 암호를 입력합니다.
사용자 지정 사전 설정, address.yml 및 preset.yml 파일을 암호화하고 해독하는 데 사용되는 암호를 입력합니다.
암호, 개인 키가 암호화됩니다.
- 수확 설정에는 4개의 계정이 필요합니다. 그들 중 기본 계정을 지정하십시오. 새 계정을 만들거나 기존 계정의 개인 키를 입력하세요.
? 기본 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
개인 키 입력
기본 계정의 64 HEX 개인 키를 입력하십시오(또는 Enter를 눌러 옵션을 다시 선택하십시오).
- 5번에 개인키를 입력했다면 계정 주소가 나옵니다. 차이가 없으면 y를 선택하십시오.
? 메인 계정으로 사용할 예상 주소 TCDNP********************55KCQ입니까? (예/아니요)
- 전송 계정과 기본 계정을 지정합니다.
? 운송 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
개인 키 입력
- VRF 계정도 비슷합니다.
? VRF 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
개인 키 입력
- 원격 계정도 비슷합니다.
? 원격 계정을 어떻게 만드시겠습니까: (화살표 키 사용)
❯ 새 계정 생성
개인 키 입력
- HTTP 설정을 구성합니다. 두 번째 자동 ~ 을 선택하면 자동으로 HTTPS를 설정할 수 있습니다.
REST 게이트웨이는 기호 탐색기에서 인식할 수 있도록 HTTPS(보안 프로토콜)에서 실행되어야 합니다.
? HTTPS 설정 방법 선택: (화살표 키 사용)
❯ 기본 지원, SSL 인증서와 키가 있습니다.
자동, letencyrpt를 사용하여 모든 키와 인증서가 자동으로 생성/갱신됩니다.
없음
- 호스트 이름을 입력합니다. IP 주소 또는 도메인을 지정합니다.
? 아웃바운드 호스트 IP를 가리키는 공개 도메인 이름(예: node-01.mysymbolnodes.com)을 입력하세요. 이 값은
HTTPS에서 실행할 때 필요합니다!
- 친숙한 이름을 입력합니다.
노드의 친숙한 이름을 입력하십시오.
- 4가지 유형의 계정(키) 중 암호화할 계정 수를 선택합니다.
? 사용하려는 보안 유형 선택: (화살표 키 사용)
PROMPT_MAIN: 부트스트랩은 인증서 업그레이드를 수행할 때 기본 개인 키를 요청할 수 있습니다. 다른 키는 암호화됩니다.
❯ PROMPT_MAIN_TRANSPORT: 부트스트랩은 인증서를 재생성할 때 기본 및 전송 개인 키를 요청할 수 있습니다.
키가 암호화됩니다.
암호화: 모든 키가 암호화되어 비밀번호만 묻습니다.
- 투표 노드를 등록하거나 선택합니다. 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년 후에 만료됩니다. 노드 인증서를 갱신하지 않는 노드는 무효화됩니다.
- healthCheck로 노드 SSL 인증서 만료 확인
심볼-부트스트랩 healthCheck
> 노드 노드에 대한 node.crt.pem 인증서가 2023년 8월 2일 14:30:34 GMT에 만료됩니다. 아직 갱신할 필요가 없습니다.
- 인증서 갱신
symbol-bootstrap 갱신 인증서
Symbol Node 목록에 노드 정보 표시
자신의 노드 정보를 심볼 노드 목록에 게시할 수 있습니다. 게시 방법에는 두 가지가 있습니다.
- 결제로 등록(권장)
댓글 등록 페이지에 접속하여 게시 정보를 생성하고 10xym(2023/03/09 기준 수수료 금액)을 지불하면 됩니다. 납부하여 반영합니다.
- 노드에 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
노드 오류 원인 확인 방법
어떤 이유로 노드가 다운될 때 오류의 원인을 확인하는 방법에는 여러 가지가 있습니다.
- symbol-bootstrap의 로그 출력 확인
symbol-bootstrap을 시작할 때 -d 옵션을 생략하면 로그를 확인하면서 시작할 수 있습니다. 다음을 실행하여 로그를 볼 수 있습니다.
심볼 부트스트랩 실행
- 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}