본문으로 건너뛰기

validator 노드 도구

이 가이드는 Sui CLI validator commands를 사용하는 데 초점을 맞춘다.

정보

이 도구는 pending validators와 active validators만 지원한다.

  • 모든 Sui installation prerequisites를 완료한다.

  • genesis ceremony에 필요한 sui binary를 build한다. 이 작업은 어떤 컴퓨터에서든 수행할 수 있다.

Click to open

View sui binary installation details.

  1. git repo를 clone한다:

    $ git clone git@github.com:MystenLabs/sui.git && cd sui

  2. Testnet에 사용할 commit을 checkout한다:

    $ git checkout testnet

  3. sui binary를 build한다.

    $ cargo build --bin sui

  4. binary path를 기억해 둔다:

    $ export SUI_BINARY="$(pwd)/target/debug/sui"

  • Sui account와 CLI environment를 설정한다.
Click to open

View Sui account and CLI environment instructions.

  • 이 프로그램을 처음 실행하면 Sui 풀 노드 server URL과 의미 있는 environment alias를 입력하라고 요청한다. 또한 sui.keystore에 임의의 key pair와 client.yaml config를 생성한다. 이미 validator account key가 있다면 그 key로 교체한다.

    기본적으로 client.yamlsui.keystore files는 ~/.sui/sui_config에 있다. 자세한 내용은 Sui client CLI tutorial을 참고한다.

    $ sui client
  • 이미 설정했다면 다음만 확인한다:

    • client.yamlrpc가 올바른지.
    • client.yamlactive_address가 올바른지.
    • sui.keystore에 account key pair가 들어 있는지.
  • validator 정보를 출력해 network connection과 configuration을 테스트한다:
$ sui validator display-metadata

Using Sui CLI

validator 작업을 수행하려면 Sui CLI를 사용한다.

$ sui validator --help

Become a validator or join committee

validator 후보가 되려면 먼저 다음을 실행한다:

$ sui validator make-validator-info <name> <description> <image-url> <project-url> <host-name> <gas_price>

이 명령은 validator.info file과 key pair files를 생성한다. 이 명령의 출력에는 다음이 포함된다:

  1. 네 개의 key pair files. permissions를 최소 공개 범위로 설정하고(예: chmod 600) 안전하게 저장해야 한다. 이 files는 validator 노드를 실행할 때 필요하다. a. 이 가이드를 충실히 따르면 이 key pair는 실제로 sui.keystore file에서 복사된다.
  2. validator 정보를 담은 validator.info file. 모든 정보가 올바른지 다시 확인한다.

그다음 다음을 실행한다:

$ sui validator become-candidate path/to/validator.info

이 명령은 validator 후보가 되기 위한 on-chain transaction을 제출한다. parameter는 이전 단계에서 생성한 validator.info file path이다. transaction이 성공했는지(출력에 표시됨) 반드시 확인한다.

이 시점에서 validator 후보가 되었으며 self-staking과 delegated staking을 받을 수 있다.

아직 하지 않았다면 지금 풀 노드를 시작해 network를 따라잡는다. committee에 공식 합류했는데 최신 상태가 아니면 network에 의미 있게 기여할 수 없고 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 object(0x3::staking_pool::StakedSui 타입)를 생성한다. 이 object는 다음 명령으로 인출할 수 있다:

$ sui client call --package 0x3 --module sui_system --function request_withdraw_stake --args 0x5 {stake_object_id}

비활성 validator의 활성화되지 않은 stake는 인출할 수 없다. 이런 경우 다음 epoch change 후 stake가 활성화되면 인출할 수 있어야 한다.

충분히 stake한 후 다음을 실행한다:

$ sui validator join-committee

committee에 합류하면 pending validator가 된다. pending validator는 다음 epoch부터 active가 되어 committee에 합류한다.

Leave committee

committee에서 나가려면 다음을 실행한다:

$ sui validator leave-committee

다음 epoch부터 committee에서 제거된다.

Proof of possession: Generate the payload

proof of possession 생성에 사용되는 payload를 직렬화한다. 이렇게 하면 signer가 authority protocol BLS key pair로 서명하기 위해 payload를 offline으로 가져갈 수 있다.

$ sui validator serialize-payload-pop --account-address $ACCOUNT_ADDRESS --protocol-public-key $BLS_PUBKEY
Serialized payload: $PAYLOAD_TO_SIGN

Display validator metadata

로컬 validator의 metadata를 표시한다:

$ sui validator display-metadata

validator address를 통해 다른 validator의 metadata를 표시한다:

$ sui validator display-metadata <validator-address>

Update validator metadata

validator metadata를 업데이트하는 방법을 보려면 다음을 실행한다. 변경이 언제 적용되는지에 대한 설명을 주의 깊게 읽는다.

$ sui validator update-metadata --help

다음 on-chain metadata를 업데이트할 수 있다:

  • Name
  • Description
  • Image URL
  • Project URL
  • Network address
  • P2P address
  • Primary address
  • Worker address
  • Protocol public key
  • Network public key
  • Worker public key
정보

위 metadata 중 처음 4개만 즉시 적용된다. 나머지는 다음 epoch 이후에만 변경된다. 이 경우 다음 epoch 직후 새 key files와 업데이트된 validator.yaml config로 validator program을 즉시 다시 시작한다.

특히 새 address가 firewall 뒤에 있지 않은지 확인한다.

각 metadata 업데이트 방법을 보려면 다음을 실행한다.

$ sui validator update-metadata --help

Operation Cap

Operation Cap은 validator가 다른 account에 특정 작업을 이 validator 대신 수행하도록 권한을 부여할 수 있게 한다. Learn more about Operation Cap.

Operation Cap 보유자(validator 자신 또는 delegatee)는 Operation Cap으로 gas price를 업데이트하고 validator peers를 보고한다.

Update gas price

account 자체가 validator이고 Operation Cap을 보유한 경우 다음으로 gas price를 업데이트한다:

$ sui validator update-gas-price <gas-price>

account가 delegatee인 경우 다음을 사용한다:

$ sui validator update-gas-price --operation-cap-id <operation-cap-id> <gas-price>

Report validators

account 자체가 validator이고 Operation Cap을 보유한 경우 다음으로 validator peers를 보고한다:

$ sui validator report-validator <reportee-address>

기존 report를 취소하려면 --undo-report false 인수를 추가한다.

마찬가지로 account가 delegatee인 경우 명령에 --operation-cap-id <operation-cap-id> 옵션을 추가한다.

account가 delegatee인 경우 다음을 실행한다:

$ sui validator update-gas-price --operation-cap-id <operation-cap-id> <gas-price>