도커 (docker) 이미지를 사용하는 것 외에도, Linux 시스템 데몬을 Systemd 서비스로 사용하여 노드를 실행하는 방법이 있습니다. 이 서비스는 대부분의 Linux 운영 체제에서 작동하지만, 모든 테스트가 완료되고 매뉴얼이 작성된 환경은 Debian/Ubuntu가 유일합니다.
먼저 노드 서비스를 실행할 서비스 계정을 생성합니다.
adduserBIFROST_SERVICE--system--no-create-home
다음으로, 바이프로스트 네트워크의 체인 데이터를 저장할 로컬 디렉토리를 생성합니다. 이 디렉토리에는 노드 바이너리와 제네시스 블록부터 현재까지 수집된 모든 블록 정보 및 해당 검증자 노드의 세션 키가 포함됩니다.
# Add sudo at the beginning if it doesn't work (i.e. Permission Denied)mkdir-p/var/lib/bifrost-data
그 다음, GitHub 릴리스 페이지에서 최신 노드 실행 바이너리 및 체인 사양 (JSON) 파일을 다운로드합니다. 최신 릴리스는 GitHub 저장소의 릴리스 페이지에서 확인할 수 있습니다.
체인 데이터 동기화가 완전히 완료되면, 새로 생성된 블록들이 다음과 같이 매 블록 시간마다 하나씩 동기화되기 시작할 것입니다.
키 설정 및 본딩
나머지 상세 설정 프로세스를 진행하기 위해 제공되는 스크립트는 Node.js로 작성되었습니다. 필요한 패키지를 설치하고 다음 명령어를 실행하여 스크립트를 다운로드합니다.
이제 검증자 노드가 블록 생성 및 최종화 프로세스를 수행할 수 있도록 필요한 키 설정을 진행합니다. 이 단계부터는 실행 중인 노드의 체인 데이터 동기화가 완료되어야 합니다.
먼저 검증자 노드는 기본적으로 두 개의 이더리움 호환 계정 (컨트롤러 계정과 스태시 계정)을 필요로 하며, 풀 노드의 경우에는 추가적으로 릴레이어 계정이 필요합니다. 스태시 계정은 초기 자체 본딩 (self-bond)만큼 예치해야 할 충분한 BFC를 보유해야 하며, 컨트롤러 계정은 일부 트랜잭션 수수료를 지불할 수 있을 정도의 잔액만 있으면 됩니다. 새로운 계정을 생성해야 하는 경우 다음 명령어를 실행합니다. (실행 이전에 현재 tools 디렉토리에 있는지 확인하시기 바랍니다).
명령어를 실행하면 사용 가능한 새 검증자 계정이 다음과 같이 출력됩니다. 다음 프로세스를 진행하려면 각 계정에 요구 사항을 충족하는 충분한 BFC를 전송해야 합니다.
다음으로, 검증자 노드는 합의 알고리즘에 사용될 세션 키를 발행하고 등록해야 합니다. 이 프로세스는 다음 명령어를 실행하여 수행할 수 있습니다.
Example
이 명령어는 노드에 대한 세 가지 세션 키를 생성합니다. 각 키는 고유한 목적을 가집니다. Aura는 블록 생성을 위한 것이고, Grandpa는 블록 최종화를 위한 것이며, ImOnline은 노드 활성 (liveness)을 위한 것입니다. 생성된 키는 체인 데이터 디렉토리에 저장됩니다. 디렉토리 경로는 /var/lib/bifrost-data/chains/{testnet|mainnet}/keystore와 같습니다.
마지막으로, 검증자 노드의 자체 본딩을 예치하여 초기 투표 권한을 형성해야 합니다. 이 프로세스는 다음 명령어를 실행하여 수행할 수 있습니다.
Example
위에 언급된 모든 프로세스가 성공적으로 완료되면, 스태시 계정에서 예치된 BFC 금액은 지갑에서 차감되고, 여러분의 컨트롤러 계정은 다음 라운드에서 활성 검증자 업데이트 프로세스에 참여하게 됩니다. 검증자 풀에 성공적으로 합류했는지 여부는 다음 페이지에서 확인할 수 있습니다.
만약, 운영하려는 검증자 노드의 티어가 풀 노드인 경우, 반드시 릴레이어와 함께 운영되어야 합니다. 릴레이어 설정에 대한 매뉴얼은 "릴레이어 셋업" 섹션에서 찾을 수 있습니다.
노드 클라이언트 업데이트
바이프로스트 네트워크는 계속 발전하고 있어, 노드 클라이언트 업그레이드가 요구될 때가 있습니다. 업그레이드 가능 여부와 필수 여부(일부 업그레이드는 선택 사항)는 디스코드 채널이나 개별 연락을 통해 노드 운영자에게 알려드립니다.
노드 클라이언트 업그레이드 전에는 혹시 모를 데이터, 키 또는 자격 증명 손실을 막기 위해 반드시 체인 데이터를 백업해 두셔야 합니다.
# Add sudo at the beginning if it doesn't work (i.e. Permission Denied)
/var/lib/bifrost-data/bifrost-node key generate-node-key \
--chain /var/lib/bifrost-data/bifrost-testnet.json \
--base-path /var/lib/bifrost-data
# Add sudo at the beginning if it doesn't work (i.e. Permission Denied)
/var/lib/bifrost-data/bifrost-node key generate-node-key \
--chain /var/lib/bifrost-data/bifrost-mainnet.json \
--base-path /var/lib/bifrost-data
# step 1. install node.js and npm
# skip this step if node.js & npm are already installed on your environment
sudo apt update
sudo apt install -y nodejs npm
# step 2. clone the bifrost node git repository
git clone https://github.com/bifrost-platform/bifrost-node
# step 3. install the required packages
cd bifrost-node/tools
npm install
# Generate validator accounts
# Case 1. generate accounts for basic nodes
npm run create_accounts
# Case 2. generate accounts for full nodes
npm run create_accounts -- --full
npm run set_session_keys -- \
--controllerPrivate "YOUR_CONTROLLER_PRIVATE_KEY"
npm run set_session_keys -- \
--controllerPrivate 0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133
# case 1. join as a basic node
npm run join_validator_candidates -- \
--controllerPrivate "YOUR_CONTROLLER_PRIVATE_KEY" \
--stashPrivate "YOUR_STASH_PRIVATE_KEY" \
--bond "YOUR_SELF_BOND_AMOUNT_IN_BFC"
# case 2. join as a full node
npm run join_validator_candidates -- \
--controllerPrivate "YOUR_CONTROLLER_PRIVATE_KEY" \
--stashPrivate "YOUR_STASH_PRIVATE_KEY" \
--relayerPrivate "YOUR_RELAYER_PRIVATE_KEY" \
--bond "YOUR_SELF_BOND_AMOUNT_IN_BFC"