validator 노드 도구
이 가이드는 Sui CLI validator commands를 사용하는 데 초점을 맞춘다.
이 도구는 pending validators와 active validators만 지원한다.
- Prerequisites
-
모든 Sui installation prerequisites를 완료한다.
-
genesis ceremony에 필요한
suibinary를 build한다. 이 작업은 어떤 컴퓨터에서든 수행할 수 있다.
View sui binary installation details.
sui binary installation details.-
git repo를 clone한다:
$ git clone git@github.com:MystenLabs/sui.git && cd sui -
Testnet에 사용할 commit을 checkout한다:
$ git checkout testnet -
suibinary를 build한다.$ cargo build --bin sui -
binary path를 기억해 둔다:
$ export SUI_BINARY="$(pwd)/target/debug/sui"
- Sui 계정와 CLI environment를 설정한다.
View Sui 계정 and CLI environment instructions.
-
이 프로그램을 처음 실행하면 Sui 풀 노드 server URL과 의미 있는 environment alias를 입력하라고 요청한다. 또한
sui.keystore에 임의의 키 쌍과client.yaml구성을 생성한다. 이미 validator 계정 키가 있다면 그 키로 교체한다.기본적으로
client.yaml과sui.keystore파일은~/.sui/sui_config에 있다. 자세한 내용은 Sui client CLI tutorial을 참고한다.$ sui client -
이미 설정했다면 다음만 확인한다:
rpc의client.yaml가 올바른지.active_address의client.yaml가 올바른지.sui.keystore에 계정 키 쌍이 들어 있는지.
- validator 정보를 출력해 네트워크 connection과 구성을 테스트한다:
$ sui validator display-metadata
Sui CLI 사용
validator 작업을 수행하려면 Sui CLI를 사용한다.
도움말 정보 출력
$ sui validator --help
validator가 되거나 committee join
validator 후보가 되려면 먼저 다음을 실행한다:
$ sui validator make-validator-info <name> <description> <image-url> <project-url> <host-name> <gas_price>
이 명령은 validator.info 파일과 키 쌍 파일을 생성한다. 이 명령의 출력에는 다음이 포함된다:
- 네 개의 키 쌍 파일. permissions를 최소 공개 범위로 설정하고(예:
chmod 600) 안전하게 저장해야 한다. 이 파일은 validator 노드를 실행할 때 필요하다. a. 이 가이드를 충실히 따르면 이 키 쌍은 실제로sui.keystore파일에서 복사된다. - validator 정보를 담은
validator.info파일. 모든 정보가 올바른지 다시 확인한다.
그다음 다음을 실행한다:
$ sui validator become-candidate path/to/validator.info
이 명령은 validator 후보가 되기 위한 on-chain 트랜잭션을 제출한다. parameter는 이전 단계에서 생성한 validator.info 파일 path이다. 트랜잭션이 성공했는지(출력에 표시됨) 반드시 확인한다.
이 시점에서 validator 후보가 되었으며 self-staking과 delegated staking을 받을 수 있다.
아직 하지 않았다면 지금 풀 노드를 시작해 네트워크를 따라잡는다. committee에 공식 합류했는데 최신 상태가 아니면 네트워크에 의미 있게 기여할 수 없고 peer reporting 대상이 될 수 있다. 그러면 본인과 delegator의 staking rewards가 감소할 위험이 있다.
그다음 30M SUI를 확보해 validator staking pool에 stake해야 한다. validator staking pool에 Sui를 추가하려면 다음 명령을 사용한다:
$ sui client call --package 0x3 --module sui_system --function request_add_stake --args 0x5 {sui_object_id} {validator_address}
이 명령은 stake 객 체(0x3::staking_pool::StakedSui 타입)를 생성한다. 이 객체는 다음 명령으로 인출할 수 있다:
$ sui client call --package 0x3 --module sui_system --function request_withdraw_stake --args 0x5 {stake_object_id}
비활성 validator의 활성화되지 않은 stake는 인출할 수 없다. 이런 경우 다음 에포크 change 후 stake가 활성화되면 인출할 수 있어야 한다.
충분히 stake한 후 다음을 실행한다:
$ sui validator join-committee
committee에 합류하면 pending validator가 된다. pending validator는 다음 에포크부터 active가 되어 committee에 합류한다.
committee leave
committee에서 나가려면 다음을 실행한다:
$ sui validator leave-committee
다음 에포크부터 committee에서 제거된다.
proof of possession: payload 생성
proof of possession 생성에 사용되는 payload를 직렬화한다. 이렇게 하면 signer가 authority 프로토콜 BLS 키 쌍로 서명하기 위해 payload를 offline으로 가져갈 수 있다.
$ sui validator serialize-payload-pop --account-address $ACCOUNT_ADDRESS --protocol-public-key $BLS_PUBKEY
Serialized payload: $PAYLOAD_TO_SIGN
validator 메타데이터 표시
로컬 validator의 metadata를 표시한다:
$ sui validator display-metadata
validator 주소를 통해 다른 validator의 metadata를 표시한다:
$ sui validator display-metadata <validator-address>
validator 메타데이터 업데이트
validator metadata를 업데이트하는 방법을 보려면 다음을 실행한다. 변경이 언제 적용되는지에 대한 설명을 주의 깊게 읽는다.
$ sui validator update-metadata --help
다음 on-chain metadata를 업데이트할 수 있다:
- Name
- Description
- Image URL
- Project URL
- 네트워크 주소
- P2P 주소
- Primary 주소
- Worker 주소
- 프로토콜 공개 키
- 네트워크 공개 키
- Worker 공개 키
위 metadata 중 처음 4개만 즉시 적용된다. 나머지는 다음 에포크 이후에만 변경된다. 이 경우 다음 에포크 직후 새 키 파일과 업데이트된 validator.yaml 구성로 validator program을 즉시 다시 시작한다.
특히 새 주소가 firewall 뒤에 있지 않은지 확인한다.
각 metadata 업데이트 방법을 보려면 다음을 실행한다.
$ sui validator update-metadata --help
Operation Cap
Operation Cap은 validator가 다른 계정에 특정 작업을 이 validator 대신 수행하도록 권한을 부여할 수 있게 한다. Learn more about Operation Cap.
Operation Cap 보유자(validator 자신 또는 delegatee)는 Operation Cap으로 가스 가격를 업데이트하고 validator peers를 보고한다.
가스 가격 업데이트
계정 자체가 validator이고 Operation Cap을 보유한 경우 다음으로 가스 가격를 업데이트한다:
$ sui validator update-gas-price <gas-price>
계정이 delegatee인 경우 다음을 사용한다:
$ sui validator update-gas-price --operation-cap-id <operation-cap-id> <gas-price>
validator report
계정 자체가 validator이고 Operation Cap을 보유한 경우 다음으로 validator peers를 보고한다:
$ sui validator report-validator <reportee-address>
기존 report를 취소하려면 --undo-report false 인수를 추가한다.
마찬가지로 계정이 delegatee인 경우 명령에 --operation-cap-id <operation-cap-id> 옵션을 추가한다.
계정이 delegatee인 경우 다음을 실행한다:
$ sui validator update-gas-price --operation-cap-id <operation-cap-id> <gas-price>