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를 호출하여 등록합니다. 이 페이지에서는 등록 단계를 다룹니다. 노드 자체에 대해서는 노드 설치하기노드 구성을 참조하세요.

사전 요구사항

  • 메인넷(Chain ID 988)에서 완전히 동기화된 풀 노드. 노드 설치하기 참조.
  • ~/.stabled/config/config.toml에서 double_sign_check_height2 또는 그 이상으로 설정됨.
  • 프리컴파일 호출에 사용되는 cast를 위한 Foundry 설치.
  • 검증자의 EVM 주소에 USDT0로 입금된 스테이킹 금액.

진행하기 전에 노드가 따라잡았는지 확인하세요. catching_up은 반드시 false여야 합니다.

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

1단계: 검증자 키 준비

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

# Create the validator operator account
stabled keys add validator
 
# Consensus public key (base64) — save this
stabled comet show-validator | jq .key
 
# Derive the validator's EVM address (0x form)
stabled keys parse $(stabled keys show validator -a)
"AbCd...base64PubKey...=="
# ...
# then, evm address is 0xCAEA59C7476C87D0FF6BE6F04DA207601D5BE7D0

2단계: 환경 설정

# Staking precompile contract address
export STAKING_ADDRESS="0x0000000000000000000000000000000000000800"
 
# Mainnet EVM RPC
export RPC_URL="https://rpc.stable.xyz"
 
# Your operator private key and validator EVM address
export PRIVATE_KEY="your_private_key_here"
export VALIDATOR_ADDRESS="0xYourValidatorAddress"
 
# Consensus pubkey from Step 1
export PUBKEY="AbCd...base64PubKey...=="
 
# Self-delegation amount in wei (18 decimals). 1000000000000000000 = 1 token
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 (success)

커미션 튜플은 (rate, maxRate, maxChangeRate)이며, 각각 18자리 소수로 스케일됩니다. 예제는 10% 비율(100000000000000000), 20% 상한선, 그리고 1% 최대 일일 변경률을 설정합니다. maxRatemaxChangeRate는 생성 시 고정되며 나중에 수정할 수 없습니다. 성공적인 호출은 CreateValidator 이벤트를 발생시킵니다. 모든 필드에 대해서는 스테이킹 프리컴파일 레퍼런스를 참조하세요.

4단계: 검증

스테이킹 프리컴파일에서 다시 읽어 검증자가 등록되고 본딩되었는지 확인한 다음, 블록에 서명하고 있는지 확인하세요.

# Read your validator's on-chain record
cast call "$STAKING_ADDRESS" \
  "validator(address)" "$VALIDATOR_ADDRESS" \
  --rpc-url "$RPC_URL"
 
# Confirm the node reports validator info
curl -s localhost:26657/status | jq '.result.validator_info'
# validator() returns the moniker, tokens, commission, and a bonded status (3)
# validator_info shows your consensus address with non-zero voting power

자기 위임 추가

생성 후 자신의 검증자에 더 많은 스테이크를 본딩하려면, 동일한 프리컴파일에서 delegate를 호출하세요.

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

등록 후

검증자를 건강하게 유지하고 네트워크 업그레이드에 대비하세요:

다음 권장 사항