
Solana 검증인 설정 방법
목차
- 용어: Solana 검증인이란?
- 시작하기: 서버 하드웨어 준비
- 로컬에 Solana CLI 설치
- 투표 계정 설정
- 키페어 생성
- 선택 사항: 출금 키에 종이 지갑 사용
- 선택 사항: 투표 계정용 배니티 키 그라인딩
- 키페어로 투표 계정 생성
- 선택 사항: 수수료율 설정
- 선택 사항: 멀티시그 추가
- 머신을 검증인 서버로 구성
- 시스템 및 사용자 설정
- 시스템 튜닝
- 하드 드라이브 구성
- 검증인 서버에 Solana CLI 설치
- 선택 사항: Jito 검증인 클라이언트 설치
- 검증인 실행 스크립트 생성
- 검증인이 올바르게 실행되는지 확인
- 검증인을 데몬 프로세스로 설정
- 모니터링 및 보안 설정
- 비밀번호 기반 인증 비활성화
- 검증인 신원 키페어
- Watchtower로 모니터링 설정
- 선택 사항: 커뮤니티 기반 모니터링
- 선택 사항: getHealth RPC 메서드를 통한 맞춤형 모니터링
- 선택 사항: 서드 파티 모니터링 솔루션
- 검증인에 스테이킹 추가
- 키페어 및 스테이킹 계정 생성
- 검증인 정보 게시
- 마치며
- 추가 자료
이 글에서는 기술적인 관점에서 Solana 메인넷 검증인을 가동하는 방법을 다룹니다. 지속적인 운영을 간소화할 수 있도록 도구와 설정을 구성하지만, 고급 검증인 운영은 다루지 않습니다. 스테이킹 유치와 보조금 신청 등의 주제를 포함한 검증인 운영의 경제성도 이 글의 범위에서 제외합니다. 참고로 검증인 운영에 관심이 있다면 Cogent Crypto의 Validator Profit Calculator를 사용해 가상 시나리오별 검증인 수익을 추정해 보세요.
이 글은 Linux의 기본 시스템 관리에 익숙하다고 가정합니다. 검증인을 운영하기 위해 프로그래머나 시스템 관리 전문가일 필요는 없습니다. 하지만 터미널에서 명령어를 실행하고, 기본 셸 스크립트를 작성하며, 설정 파일을 다루는 데 익숙해야 합니다.
Linux 시스템 관리에 익숙하지 않지만 더 배우고 싶다면 Linux Journey와 같은 훌륭한 입문 자료가 많습니다.
용어: Solana 검증인이란?
Solana CLI 도구 모음에는 다음 작업을 수행할 수 있는 solana-validator 바이너리가 포함되어 있습니다.
- Solana 클러스터에 연결하고 현재 클러스터 상태 동기화
- 최신 상태를 유지하기 위해 스냅샷과 기타 클러스터 데이터를 생성, 수신 및 공유
- 클러스터 합의의 일부로 새 블록을 검증하기 위한 투표
- 수신 트랜잭션을 처리하고 새 블록 생성
- 클러스터 데이터를 조회하고 새 트랜잭션을 제출할 수 있도록 RPC 및 이벤트 기반 API 제공
Solana 검증인은 클라이언트(검증인 네트워크에 연결해 데이터를 요청하므로), 서버(다른 검증인의 요청을 처리하고 데이터를 제공하므로), 또는 노드라고도 합니다.
RPC 노드는 네트워크의 모든 정보를 추적하는, 스테이킹되지 않고 투표하지 않는 Solana 검증인입니다. 즉, 데이터 요청에만 응답하며 합의에는 참여하지 않습니다.
“Solana 검증인”이라는 용어는 Solana 생태계에서 스테이킹되고 투표하는 Solana 검증인을 운영하며 합의에 참여하는 주체를 뜻하기도 합니다.
RPC, RPC 제공업체, 검증인의 차이에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
시작하기: 서버 하드웨어 준비
검증인 운영 전용의 고성능 컴퓨터가 필요합니다. 테스트넷과 메인넷 모두에서 검증인을 운영하려면 두 대가 필요합니다. 현재 권장되는 최소 사양은 12코어/24스레드, 256GB RAM, 1TB SSD 디스크 2개(가급적 RAID0), 10GB 인터넷 연결입니다. 자세한 하드웨어 요구 사항은 여기에서 확인할 수 있습니다.
비용을 아끼기 위해 메인넷에서만 운영하려 한다면, Solana Foundation Delegation Program(SFDP) 자격을 얻으려면 테스트넷 검증인을 운영해야 한다는 점에 유의하세요.
하드웨어를 직접 구매해 운영하거나 데이터 센터 제공업체에서 대여할 수 있습니다(TeraSwitch 권장). 클라우드 컴퓨팅 제공업체에서도 대여할 수 있지만, 비용이 지나치게 높고 성능 문제가 발생할 가능성이 더 크므로 권장하지 않습니다. Solana Foundation Server Program은 검증인 운영자가 데이터 센터 사업자로부터 하드웨어를 더 쉽게 대여할 수 있도록 지원합니다. 자세한 내용은 여기에서 확인하세요.
네트워크 탈중앙화에 기여하려면 Solana 노드나 스테이킹이 아직 많지 않은 ASN과 도시를 고려할 수 있습니다. 일부 스테이킹 풀과 SFDP는 ASN 및 도시별 탈중앙화 수준에 따라 보상을 제공합니다.
현재 상위 데이터 센터는 여기에서 확인할 수 있습니다.
로컬에 Solana CLI 설치
필요한 모든 키를 로컬에서 생성하고 출금 키를 검증인 서버와 분리할 수 있도록 도구를 로컬에 설치하는 것을 적극 권장합니다. Solana CLI를 로컬에 설정하는 방법은 여기에서 확인할 수 있습니다.
로컬 명령줄에서 도구를 사용할 수 있게 되면 기본적으로 테스트넷을 가리키도록 설정하세요.
$ solana config set --url https://api.testnet.solana.com메인넷의 경우 다음 기본 엔드포인트를 가리키도록 설정할 수 있습니다.
$ solana config set --url https://api.mainnet-beta.solana.com공개 메인넷 엔드포인트는 요청이 과도하게 몰리는 경우가 많습니다. 성능이 만족스럽지 않다면 Helius에 가입하고 다음과 같이 Helius 엔드포인트를 사용할 수 있습니다.
$ solana config set --url https://mainnet.helius-rpc.com/?api-key=<YOUR-HELIUS-API-KEY>검증인을 설정하고 부트스트랩하려면 트랜잭션을 실행해야 하므로 SOL이 들어 있는 지갑이 필요합니다. 테스트넷을 처음 설정하는 경우 다음 명령어로 기본 지갑을 만들고 SOL을 에어드롭받을 수 있습니다.
$ mkdir -p ~/.config/solana
$ solana-keygen new --outfile ~/.config/solana/id.json
$ solana airdrop 1 ~/.config/solana/id.json테스트넷과 메인넷에 서로 다른 지갑을 사용하는 것을 적극 권장합니다. 키 형식이 같아 동일한 키를 양쪽에서 사용할 수 있지만 그렇게 하지 마세요. 테스트넷과 메인넷의 자금 보유 지갑에 같은 키를 사용하면 테스트넷용 명령어를 실수로 메인넷에서 실행하기 쉽습니다.
투표 계정 설정
검증인의 투표 계정은 solana create-vote-account 명령어와 세 개의 키페어를 사용해 생성합니다.
- 신원 키페어 — 검증인은 이 키페어를 사용해 네트워크에 자신을 식별하고 투표 등의 트랜잭션을 제출합니다. 비공개 키는 서버에 있어야 하므로, 투표 트랜잭션에 필요한 양(하루 약 1 SOL)보다 많은 SOL을 보관하지 않는 것이 가장 안전합니다.
- 투표 계정 키페어 — 이 키페어는 투표 계정 자체를 나타내며, 투표 계정을 조회하고 여기에 스테이킹을 위임하는 데 사용됩니다.
create-vote-account명령어는 필요한 키를 소유하고 있음을 증명할 때만 비공개 키를 요구합니다. 투표 계정이 생성된 후에는 공개 키만 필요합니다. 변경할 수 없습니다. - 출금 키페어 — 이 키페어는 투표 계정의 마스터 키 역할을 하며 보상 출금, 신원 키 또는 출금 키 변경, 기타 계정 작업에 사용됩니다. 세 키 중 가장 민감하므로 서버에서 생성하거나 서버로 복사해서는 안 됩니다. 메인넷에서는 이 키에 종이 지갑, 하드웨어 지갑 또는 멀티시그를 사용하는 방안을 고려하세요.
키페어 생성
다음과 같이 테스트넷용 키페어를 생성하세요.
$ solana-keygen new -o identity.json
$ solana-keygen new -o vote.json
$ solana-keygen new -o withdraw.json선택 사항: 출금 키에 종이 지갑 사용
종이 지갑은 종이에 적어 둔 12개(또는 24개) 단어로 된 문구이며, 키로 서명해야 할 때마다 키보드로 입력합니다. 멀티시그를 설정할 계획이 없다면 투표 계정에 대한 루트 접근 권한을 부여하는 메인넷 출금 키에 적합한 추가 보안 수단입니다. 다음 명령어를 실행하세요.
$ solana-keygen new --no-outfile표시된 문구를 종이에 적으세요. 공개 키, 키 생성에 사용한 정확한 명령어, solana-keygen --version도 기록해 두는 것이 좋습니다. 암호 문구를 비공개 키로 변환하는 방식은 여러 가지입니다. 종이를 보관하기 전에 해당 문구로 키에 접근할 수 있는지 확인하세요.
$ solana-keygen verify <PUBKEY> ASK이 글을 작성하는 시점에는 ASK와 prompt:// 플레이스홀더의 키 디코딩 동작이 서로 다릅니다. 어떤 방식이 키에 맞는지 반드시 확인하세요.
키가 적힌 종이를 절대 잃어버리지 마세요. 다른 복구 방법은 없습니다. 터미널 버퍼에서도 키 문구를 반드시 삭제하세요.
선택 사항: 투표 계정용 배니티 키 그라인딩
일부 검증인은 신원 키 또는 투표 계정 키에 배니티 공개 키를 사용합니다. 예를 들어 Helius 검증인은 신원 키로 HEL1USMZKAL2odpNBj2oCjffnFGaYwmbGmyewGv1e2TU를, 투표 계정으로 he1iusunGwqrNtafDtLdhsUQDFvo13z9sUa36PauBtk를 사용합니다. 다음과 같이 grind 하위 명령어로 만들 수 있습니다.
$ solana-keygen grind --starts-with PREF1X:1이 하위 명령어는 공개 키가 PREF1X로 시작하는 키를 생성합니다. 여기에는 유효한 base58 문자열을 지정할 수 있습니다. 조건에 맞는 키가 나올 때까지 계속 생성하는 방식이므로 원하는 접두사의 길이에 따라 소요 시간이 기하급수적으로 늘어납니다.
투표 계정 키는 변경할 수 없습니다. 특히 이를 공개하고 사람들이 스테이킹을 위임하기 시작한 뒤에는 더욱 그렇습니다. 배니티 키를 원한다면 지금 생성해야 합니다.
키페어로 투표 계정 생성
키페어가 준비되면 다음과 같이 투표 계정 자체를 생성하세요.
$ solana create-vote-account --fee-payer ~/.config/solana/id.json vote_account.json identity.json withdrawal.json여기서 vote_account.json는 투표 계정 키페어, identity.json는 검증인 신원 키페어, withdrawal.json는 출금 권한 키페어, ~/.config/solana/id.json는 투표 계정 생성 비용을 지불할 SOL이 들어 있는 지갑입니다.
출금 키페어에 종이 지갑을 사용했다면 명령어는 다음과 같습니다.
$ solana create-vote-account --fee-payer ~/.config/solana/id.json vote_account.json identity.json ASK다음 명령어로 해당 투표 계정 또는 다른 투표 계정을 확인할 수 있습니다.
$ solana vote-account <PUBKEY>이제 검증인 서버를 실행하려면 신원 키페어가 필요합니다. 출금 키페어는 비밀로 유지하고 투표 계정의 출금 및 변경에만 사용해야 합니다. 투표 계정 키페어는 더 이상 필요하지 않습니다. 단, 공개 키는 잊지 마세요.
투표 계정에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
선택 사항: 수수료율 설정
create-vote-account는 수수료율을 선택적 매개변수로 받지만 기본값은 100%이며, 이는 비공개 검증인임을 의미합니다. 메인넷 검증인에 외부 스테이킹을 유치하려면 더 낮은 수수료율을 선택해야 할 가능성이 큽니다.
투표 계정 공개 키가 <VOTE_ACCT_PUBKEY>이고, 자금이 있는 id.json 지갑으로 변경 비용을 지불하며, 종이 지갑 출금 키를 사용하고, 수수료율을 8%로 설정하려면 다음과 같이 실행할 수 있습니다.
$ solana vote-update-commission --fee-payer ~/.config/solana/id.json <VOTE_ACCT_PUBKEY> 8 ASK선택 사항: 멀티시그 추가
멀티시그는 트랜잭션을 실행하려면 하나 이상의 다른 지갑 서명이 필요한 특수한 지갑입니다. 여러 사람이 투표 계정을 공동 관리하는 데 사용할 수 있습니다. 검증인을 혼자 관리하더라도 나중에 다른 사람을 투표 계정에 쉽게 추가할 수 있도록 멀티시그를 고려해 보세요.
Squads는 공유 검증인 관리 전용 기능을 제공하는 Solana 멀티시그 도구입니다. Squads에서 검증인을 설정하려면 다음 단계를 따르세요.
- Backpack 등 지원되는 Solana 지갑 플러그인을 브라우저에 설정합니다.
- Squads dApp으로 이동합니다.
- 검증인에 원하는 구성원과 매개변수로 squad를 설정합니다.
- Developers > Validators로 이동해 검증인 추가 절차를 진행합니다.
- 출금 비공개 키를 붙여 넣으라는 메시지가 표시됩니다. 이 키는 기존 출금 키를 squad의 공유 출금 키로 변경하는 데 사용됩니다.
solana vote-account를 사용해 업데이트된 출금 공개 키를 확인합니다.
공유 검증인 관리에 Squads를 사용하는 방법은 여기에서 자세히 확인할 수 있습니다.
머신을 검증인 서버로 구성
머신의 초기 상태에 따라 단계는 달라지지만 최종 목표는 다음과 같습니다.
- 최신 Ubuntu LTS 버전 설치 및 업데이트
- 다른 Linux 배포판(예: Debian 기반)도 작동할 수 있지만 여기의 모든 예시는 Ubuntu를 기준으로 합니다. Ubuntu와 차이가 클수록 더 많은 명령어를 수정해야 합니다.
- 사용자 수준 SSH 접근 설정
sol서비스 사용자 설정- 시스템 튜닝 및 하드 디스크 설정
시스템 및 사용자 설정
시스템이 최신 상태인지 확인하고 sol 서비스 사용자를 생성하세요.
$ sudo apt update
$ sudo apt upgrade
$ sudo adduser solsudo 접근 권한을 부여할 수도 있습니다. 편의성을 높이는 대신 보안이 다소 약해집니다.
$ sudo adduser sol sudo시스템 튜닝
허용되는 파일 디스크립터와 메모리 매핑 파일 등의 한도를 늘리려면 Solana Labs 권장 설정을 sysctl 및 systemd에 추가하세요. 검증인이 현재 또는 다음 블록 리더일 때 전체 네트워크가 연결을 열고 트랜잭션을 전송하려 하므로 파일 디스크립터 한도가 특히 중요합니다.
하드 드라이브 구성
현재 Solana Labs는 1TB 이상의 물리적 SSD 2개를 권장합니다. 하나는 계정 데이터용이고 다른 하나는 원장 데이터용입니다. O/S도 원장 데이터 디스크에 둘 수 있습니다. 높은 IOPS로 인해 계정과 원장을 같은 디스크에 두는 것은 권장하지 않습니다.
두 드라이브를 설정하는 방법은 이 가이드를 참고하세요.
여러 드라이브를 활용해 가용 IOPS를 높이는 다른 방법은 하나의 RAID0 볼륨으로 구성하는 것입니다. RAID 컨트롤러가 각 드라이브에 저장할 스트라이프를 최적화해 두 드라이브의 IOPS 용량을 극대화하도록 할 수 있습니다. 필요한 경우 RAID에 드라이브를 추가해 IOPS를 더 높일 수도 있습니다. 현재까지 이 구성으로 검증인을 운영하면서 성능 문제는 없었습니다.
단일 RAID0 볼륨을 사용한다면 볼륨에 검증인 데이터 디렉터리만 설정하면 됩니다. sol 사용자 홈 바로 아래에 만들 수 있습니다.
$ sudo su sol
$ mkdir -p /home/sol/accounts
$ mkdir -p /home/sol/ledger
$ mkdir -p /home/sol/snapshots
$ mkdir -p /home/sol/logs검증인 서버에 Solana CLI 설치
sol 사용자로 검증인 서버에서 위 단계를 반복해 Solana CLI를 설치하세요. 검증인 서버에 설치할 때는 소스에서 빌드하는 것을 적극 권장합니다.
Solana 설치 도구를 사용한다면 solana-install 명령어로 이후 새 버전으로 업데이트할 수 있습니다. 클러스터에 계속 참여하려면 반드시 업데이트해야 합니다.
선택 사항: Jito 검증인 클라이언트 설치
Jito Labs는 Solana 검증인을 포크하고 Maximal Extractable Value(MEV) 기능을 추가한 자체 버전을 출시했습니다. MEV는 수익을 얻기 위해 생성 중인 블록에 트랜잭션을 추가하거나 순서를 변경하는 개념입니다. Jito는 이를 위해 프리미엄을 지불하려는 사람들(“검색자”)을 위한 시장을 만들었습니다. Jito 검증인을 실행하면 Jito가 검증인이 생성하는 블록에 포함할 MEV 트랜잭션 번들을 보내고, 그 대가로 추가 팁을 제공합니다.
Jito 검증인은 운영 복잡성과 지연 시간을 다소 늘리지만 MEV 팁이라는 추가 수익원을 제공합니다. 구성은 대부분 같지만 다음 항목을 추가로 검토해야 합니다.
- MEV 팁 수집 및 관리
- Jito 블록 엔진의 지연 시간
- Jito 릴레이어 실행 가능성
Jito 검증인 클라이언트 설치 방법은 여기에서 확인할 수 있습니다.
검증인 실행 스크립트 생성
validator.sh 셸 스크립트 생성
먼저 검증인 신원 키페어를 원격 서버에 복사하세요.
$ scp identity.json remoteuser@your.validator.host:/home/sol검증인 구성을 관리하는 표준 방식은 셸 스크립트로 감싸는 것입니다. 시작점으로 사용할 스크립트를 만들고 실행 권한을 부여하세요.
$ sudo su sol
$ cat >/home/sol/validator.sh <<EOF
#!/bin/bash
PATH=/home/sol/.local/share/solana/install/active_release/bin:$PATH
exec solana-validator \
--identity /home/sol/identity.json \
--vote-account <VOTE_ACCOUNT_PUBKEY> \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
--only-known-rpc \
--log /home/sol/logs/solana-validator.log \
--accounts /home/sol/accounts \
--snapshots /home/sol/snapshots \
--ledger /home/sol/ledger \
--rpc-port 8899 \
--dynamic-port-range 8000-8020 \
--entrypoint entrypoint.testnet.solana.com:8001 \
--entrypoint entrypoint2.testnet.solana.com:8001 \
--entrypoint entrypoint3.testnet.solana.com:8001 \
--expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
--wal-recovery-mode skip_any_corrupted_record \
--limit-ledger-size
EOF
$ chmod +x /home/sol/validator.sh이 설정은 테스트넷에서 빠르고 안전하게 시작하는 데 적합합니다. 모든 설정이 끝나면 이 스크립트로 돌아와 solana-validator --help를 실행해 전체 구성 옵션을 확인하고 맞춤 설정해야 합니다.
스크립트로 검증인을 실행해 보세요.
$ ./validator.sh처음 실행할 때는 현재 클러스터 상태를 따라잡아야 합니다.
검증인이 올바르게 실행되는지 확인
클러스터 내 어디에서든 다음 명령어로 자신 또는 다른 검증인의 외부 공개 진행 상황을 확인할 수 있습니다.
$ solana catchup <IDENTITY_PUBKEY>sol 사용자 세션에서 다음 명령어로 내부 진행 상황을 확인할 수 있습니다.
$ solana-validator --ledger /home/sol/ledger monitor검증인이 클러스터에 제대로 연결되는지 확인하는 방법은 여기에서 자세히 확인할 수 있습니다.
검증인을 데몬 프로세스로 설정
데몬으로 관리하려면 systemd unit 파일을 생성하세요.
$ sudo cat >/etc/systemd/system/sol.service <<EOF
[Unit]
Description=Solana Validator
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=sol
LimitNOFILE=1000000
LogRateLimitIntervalSec=0
ExecStart=/home/sol/validator.sh
[Install]
WantedBy=multi-user.target
EOF앞서 실행한 ./validator.sh가 더 이상 실행 중이 아닌지 확인한 다음 검증인을 데몬으로 시작하세요.
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now sol모니터링 및 보안 설정
비밀번호 기반 인증 비활성화
/etc/ssh/sshd_config 파일에서 SSH 데몬이 비밀번호 또는 challenge-response 로그인 방식을 허용하지 않도록 설정할 수 있습니다.
...
PasswordAuthentication no
ChallengeResponseAuthentication no
...새 구성을 적용하도록 sshd 데몬을 다시 로드하세요.
$ sudo systemctl reload sshdfail2ban 및 ufw 추가
fail2ban은 인증에 여러 번 실패한 모든 연결을 별도 설정 없이 차단합니다.
$ sudo apt install fail2banufw는 시스템에 포함된 방화벽이며 몇 가지 명령어로 설정할 수 있습니다. 최종 검증인 구성이 기본 포트와 포트 범위를 사용하고 SSH를 포트 22에서 호스팅한다고 가정합니다.
$ sudo ufw allow 22/tcp
$ sudo ufw allow 8000:10000/tcp
$ sudo ufw allow 8000:10000/udp
$ sudo ufw enable검증인 신원 키페어
실제로 대부분의 검증인은 사람이 개입하지 않아도 검증인 스크립트를 실행하고 재시작할 수 있도록 신원 키를 검증인 서버에 보관합니다. 하지만 ASK 또는 **prompt://**를 사용해 신원 키를 검증인에 전달하면 검증인 서버의 파일 시스템에 보관하지 않아도 됩니다. 이 방식은 사람이 systemd 역할을 대신해 데몬 프로세스를 수동으로 관리해야 하므로 운영 부담과 위험을 높이지만, 구현은 가능합니다.
신원 키페어를 보호하는 가장 좋은 전략은 며칠간의 투표 비용을 충당하는 데 필요한 최소한의 SOL만 넣어 두는 것입니다.
Shinobi Systems는 매번 출금 키를 사용하지 않고 투표 계정의 잔액을 자동 이체하는 기능을 포함해 투표 계정 관리에 유용한 도구를 공개했습니다.
Watchtower로 모니터링 설정
**solana-watchtower**는 Solana CLI 도구 모음에 포함되어 있으며 검증인과 전체 클러스터의 문제를 알리는 데 사용할 수 있습니다. watchtower.sh 스크립트를 만들어 검증인과 비슷한 방식으로 구성하고 실행할 수 있습니다.
다음은 PagerDuty를 알림에 사용하고 로그를 watchtower.log에 기록하는 예시입니다.
$ cat >watchtower.sh <<EOF
#!/bin/bash
PATH=/home/solana/.local/share/solana/install/active_release/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
exec >>watchtower.log \\
env PAGERDUTY_INTEGRATION_KEY=<PAGERDUTY_KEY> \\
solana-watchtower \\
--validator-identity <IDENTITY_PUBKEY> \\
--monitor-active-stake \\
--interval 20 \\
--minimum-validator-identity-balance 3 \\
--url https://api.testnet.solana.com
EOFSolana Labs는 Telegram 알림을 사용해 설정하는 예시도 제공합니다.
검증인과 같은 머신에 watchtower를 설정하는 것은 권장하지 않습니다. 머신 전체가 중단되면 알림을 받을 수 없기 때문입니다. 하지만 여러 모니터링 수단을 마련하고 이러한 상황을 별도로 감시할 수 있다면 같은 머신에서도 운영할 수 있습니다.
검증인과 달리 watchtower는 리소스를 많이 사용하지 않으며 AWS 또는 GCP가 제공하는 클라우드나 서버리스 컴퓨팅 환경에서 실행할 수 있습니다.
선택 사항: 커뮤니티 기반 모니터링
Solana 커뮤니티에는 클러스터를 모니터링하고 watchtower와 비슷한 조건에 따라 알림을 제공하는 사람이 많습니다.
Stakewiz는 Solana 검증인을 위한 Telegram 기반 모니터링을 제공합니다. 예를 들어 Helius 검증인에 대한 알림을 받으려면 해당 페이지로 이동한 다음 “+ 알림 생성”을 클릭하면 됩니다.
커뮤니티 기반 모니터링은 스테이킹한 검증인의 문제를 사용자가 파악할 수 있도록 설계되었습니다. 검증인 운영자는 서비스 모니터링을 다른 사람에게만 의존해서는 안 됩니다.
선택 사항: getHealth RPC 메서드를 통한 맞춤형 모니터링
검증인의 상태를 직접 확인하려면 검증인의 JSON RPC 인터페이스에 있는 getHealth 메서드를 폴링하세요. 검증인이 정상인지와 문제에 관한 정보를 확인할 수 있습니다.
선택 사항: 서드 파티 모니터링 솔루션
검증인이 성장하고 보호해야 할 수익원이 생기면 Datadog 또는 Splunk 같은 상용 SaaS 모니터링 솔루션을 고려할 수 있습니다. 이러한 솔루션은 보통 서버에서 데몬 프로세스를 실행해 로컬 로그와 메트릭을 모니터링하고 제공업체로 내보냅니다. 또는 getHealth나 유사한 상태 엔드포인트를 공개하고 제공업체가 검증인을 원격으로 폴링하게 합니다.
검증인에 스테이킹 추가
Solana 네트워크는 합의에 도달하기 위해 지분 증명(PoS) 투표 절차를 사용합니다. 스테이킹된 SOL을 주식으로 보면 주식회사와 비슷하게 검증인의 투표 가중치는 위임받은 SOL 스테이킹 규모에 비례합니다. 또한 검증인이 블록 리더가 되는 빈도도 스테이킹된 SOL의 양에 비례합니다.
기존 검증인에 SOL을 쉽게 스테이킹할 수 있는 지갑, dApp 및 기타 도구가 많습니다. CLI로 직접 수행하는 단계는 다음과 같습니다.
solana-keygen new를 사용해 키페어 3개를 생성합니다.- solana create-stake-account를 사용해 키페어에서 스테이킹 계정을 생성합니다.
- 스테이킹 계정으로 SOL을 전송합니다. 테스트넷에서는
solana aidrop로 전송할 수 있습니다. solana delegate-stake를 사용해 예치된 스테이킹을 검증인에게 위임합니다.- 스테이킹이 활성화될 때까지 다음 에포크를 기다린 후
solana stake-account로 확인합니다.
키페어 및 스테이킹 계정 생성
키페어와 스테이킹 계정을 생성하는 과정은 투표 계정 생성과 유사합니다. 세 키페어는 다음과 같습니다.
- 스테이킹 권한 키페어 - 위임, 위임 해제, 분할, 병합 등 스테이킹 계정의 운영 작업을 수행할 수 있습니다.
- 스테이킹 계정 키페어 - 스테이킹 계정 자체를 식별하는 공개 키입니다. 스테이킹 계정을 생성한 후에는 비공개 키가 필요하지 않습니다.
- 출금 키페어 - 스테이킹을 출금하고 스테이킹 계정의 권한 키페어를 재설정하는 마스터 키페어입니다. 신중하게 관리하고 하드웨어 지갑, 종이 지갑 또는 멀티시그 사용을 고려하세요.
투표 계정과 같은 이유로 테스트넷과 메인넷에 별도의 키를 사용하는 것을 적극 권장합니다. 다만 같은 클러스터 내 여러 스테이킹 계정에는 하나의 스테이킹 권한 및 출금 권한 키페어를 재사용할 수 있습니다. 스테이킹 계정을 병합하려면 같은 키를 사용해야 합니다.
다음은 파일 기반 키페어 지갑을 사용해 테스트넷에서 1 SOL이 있는 스테이킹 계정을 생성하고, id.json 지갑에서 자금을 넣은 뒤, 해당 스테이킹을 새 검증인에게 위임하는 예시입니다.
$ solana-keygen new -o stake_auth.json
$ solana-keygen new -o stake_acct_1.json
$ solana-keygen new -o stake_withdrawal_auth.json
$ solana airdrop 1 ~/.config/solana/id.json
$ solana create-stake-account --from ~/.config/solana/id.json stake_acct_1.json 1 --stake-authority stake_auth.json --withdraw-authority stake_withdraw_auth.json --fee-payer ~/.config/solana/id.json
$ solana delegate-stake --stake-authority stake_auth.json <STAKE_ACCT_1_PUBKEY> <VOTE_ACCT_PUBKEY> --fee-payer ~/.config/solana/id.json<VOTE_ACCT_PUBKEY>는 검증인 신원이 아니라 투표 계정 주소를 나타냅니다!
이제 스테이킹이 활성화되고 있는지, 어느 에포크에 활성화되는지 확인할 수 있습니다.
$ solana stake-account <STAKE_ACCT_1_PUBKEY>다음 에포크가 시작되어 스테이킹이 활성화되면 검증인의 투표가 집계되기 시작합니다. solana vote-account 명령어에서 최근 투표를 확인할 수 있습니다. 예시처럼 몇 SOL만 추가했다면 검증인이 블록 리더가 될 가능성은 낮습니다.
투표 비용은 하루 약 1~2 SOL입니다. 이 글을 작성하는 시점에는 메인넷에서 투표하는 데만 검증인당 하루 약 200~300달러가 듭니다.
(스테이킹 위임 및 스테이킹 계정 관리에 관한 자세한 내용).
검증인 정보 게시
validators.app 같은 일반적인 Solana 검증인 디렉터리를 살펴보면 모든 검증인에 이름, 설명, 로고 및 기타 메타데이터가 있는 것을 확인할 수 있습니다. 이 데이터는 각 클러스터에 등록된 모든 검증인을 위해 온체인에 게시되며, solana validator-info get를 실행해 확인할 수 있습니다.
검증인이 가동되면 정보를 게시하는 것이 좋습니다. 특히 메인넷에서 운영하며 스테이킹을 유치하려는 경우 중요합니다.
다음은 메타데이터를 게시하는 기본 예시입니다.
$ solana validator-info publish "My Awesome Validator" \
--website "https://awesome-validator.xyz/" \
--icon-url "https://awesome-validator.xyz/icon360x360.png" \
--keypair validator_identity.json \
--details "The best validator in the world!"메타데이터 레코드가 생성되면 고유한 키가 부여되며, 나중에 --info-pubkey 인수로 업데이트할 수 있습니다. 아이콘 URL의 최대 길이는 80자입니다. 검증인 정보와 메타데이터 게시에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
마치며
축하합니다! 여기까지 모든 단계를 따라왔다면 이제 자체 Solana 검증인이 실행되고 있을 것입니다. Solana 검증인 커뮤니티에 오신 것을 환영합니다!
추가 자료
관련 아티클
Helius 구독하기
최신 Solana 개발 소식을 확인하고 새 게시물 알림을 받아보세요


