Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

검증인은 온체인에 등록되고 스테이크를 보증한 동기화된 전체 노드입니다. 먼저 노드를 설치하고 동기화한 다음, 스테이킹 사전 컴파일(0x0000000000000000000000000000000000000800)에서 createValidator를 호출하여 등록합니다. 이 페이지에서는 등록 단계를 다룹니다. 노드 자체에 대해서는 노드 설치노드 구성을 참조하세요.

전제 조건

  • 메인넷(체인 ID 988)에 완전히 동기화된 전체 노드. 노드 설치를 참조하세요.
  • ~/.stabled/config/config.tomldouble_sign_check_height2 이상으로 설정되어 있습니다.
  • cast에 설치된 Foundry는 사전 컴파일을 호출하는 데 사용됩니다.
  • 검증인의 EVM 주소에 USDT0으로 스테이킹 금액이 자금 지원되었습니다.

노드가 더 진행하기 전에 따라잡았는지 확인하세요. catching_upfalse여야 합니다.

curl -s localhost:26657/status | jq '.result.sync_info.catching_up'
false

1단계: 검증인 키 준비

운영자 계정을 생성한 다음 createValidator에 필요한 두 가지 값(합의 공개 키(base64)와 검증인의 EVM 주소)을 읽습니다.

# 검증인 운영자 계정 생성
stabled keys add validator
 
# 합의 공개 키 (base64) — 저장하세요.
stabled comet show-validator | jq .key
 
# 검증인의 EVM 주소 (0x 형식) 파생
stabled keys parse $(stabled keys show validator -a)
"AbCd...base64PubKey...=="
# ...
# 그러면 EVM 주소는 0xCAEA59C7476C87D0FF6BE6F04DA207601D5BE7D0입니다.

2단계: 환경 설정

# 스테이킹 사전 컴파일 계약 주소
export STAKING_ADDRESS="0x0000000000000000000000000000000000000800"
 
# 메인넷 EVM RPC
export RPC_URL="https://rpc.stable.xyz"
 
# 운영자 개인 키 및 검증인 EVM 주소
export PRIVATE_KEY="your_private_key_here"
export VALIDATOR_ADDRESS="0xYourValidatorAddress"
 
# 1단계의 합의 공개 키
export PUBKEY="AbCd...base64PubKey...=="
 
# wei 단위의 자체 위임 금액 (18 Decimal). 1000000000000000000 = 1 토큰
export AMOUNT="1000000000000000000"

3단계: 검증인 생성

스테이킹 사전 컴파일에 createValidator를 호출합니다. 이 함수는 description 튜플, commissionRates 튜플, 최소 자체 위임, 검증인 주소, 합의 공개 키 및 보증 금액을 사용합니다. 이를 cast로 인코딩하고 보냅니다.

# createValidator(
#   (moniker, identity, website, securityContact, details),
#   (rate, maxRate, maxChangeRate),
#   minSelfDelegation, validatorAddress, pubkey, value
# )
cast send "$STAKING_ADDRESS" \
  "createValidator((string,string,string,string,string),(uint256,uint256,uint256),uint256,address,string,uint256)" \
  "(\"My Validator\",\"keybase-id\",\"https://example.com\",\"security@example.com\",\"My validator description\")" \
  "(100000000000000000,200000000000000000,10000000000000000)" \
  "1000000000000000000" \
  "$VALIDATOR_ADDRESS" \
  "$PUBKEY" \
  "$AMOUNT" \
  --rpc-url "$RPC_URL" \
  --private-key "$PRIVATE_KEY"
transactionHash   0x4f...c2
status            1 (성공)

수수료 튜플은 (rate, maxRate, maxChangeRate)이며, 각 18진수로 스케일링됩니다. 예제는 10%의 비율(100000000000000000), 20%의 상한선, 1%의 최대 일일 변경률을 설정합니다. maxRatemaxChangeRate는 생성 시 고정되며 나중에 편집할 수 없습니다. 성공적인 호출은 CreateValidator 이벤트를 발생시킵니다. 모든 필드는 스테이킹 사전 컴파일 참조를 참조하세요.

4단계: 확인

검증인이 등록되고 보증되었는지 확인하려면 스테이킹 사전 컴파일에서 다시 읽은 다음 블록을 서명하고 있는지 확인합니다.

# 검증인의 온체인 기록 읽기
cast call "$STAKING_ADDRESS" \
  "validator(address)" "$VALIDATOR_ADDRESS" \
  --rpc-url "$RPC_URL"
 
# 노드가 검증인 정보를 보고하는지 확인
curl -s localhost:26657/status | jq '.result.validator_info'
# validator()는 모니커, 토큰, 수수료 및 보증 상태(3)를 반환합니다.
# validator_info는 0이 아닌 투표 권한이 있는 합의 주소를 보여줍니다.

자체 위임 추가

생성 후 자신의 검증기에 더 많은 스테이크를 보증하려면 동일한 사전 컴파일에 delegate를 호출합니다.

cast send "$STAKING_ADDRESS" \
  "delegate(address,address,uint256)" \
  "$VALIDATOR_ADDRESS" "$VALIDATOR_ADDRESS" "$AMOUNT" \
  --rpc-url "$RPC_URL" \
  --private-key "$PRIVATE_KEY"
status            1 (성공)

등록 후

검증인을 건전하게 유지하고 네트워크 업그레이드에 대비합니다.

다음 권장 사항

  • 스테이킹 사전 컴파일 참조: createValidator, delegate 및 editValidator의 전체 서명 및 구조를 찾아봅니다.
  • 노드 구성: 등록하기 전에 double_sign_check_height 및 기타 검증인에게 중요한 구성을 설정합니다.
  • 노드 모니터링: 문제를 슬래시하기 전에 문제를 파악할 수 있도록 서명, 놓친 블록 및 리소스 사용량을 추적합니다.
  • 검증인 데이터 색인: 검증인이 활성화되면 온체인에서 스테이크, 가동 시간 및 투표 기록을 읽습니다.