BfcStaking
Description
바이프로스트 노드의 핵심 DPoS (위임 지분 증명) 합의 메커니즘은 pallet_bfc_staking
에 정의되어 있습니다. pallet_bfc_staking
은 검증자 (validator)와 지명자 (nominator)의 개념을 정의하고 이들의 자체 스테이킹 (self-bonds) 및 지명 (nominations)을 관리하는 사용자 정의 팔렛입니다. 또한 라운드 (rounds) 개념과 라운드 내의 로직도 정의합니다.
Extrinsics
set_staking_expectations(expectations: Range<BalanceOf>
)
interface:
api.tx.bfcStaking.setStakingExpectations
summary: 총 스테이킹 기대치를 설정합니다. 이 기대치는 해당 라운드의 발행량을 결정합니다. 오리진은 루트 (root)여야 합니다.
set_inflation(schedule: Range<Perbill>
)
interface:
api.tx.bfcStaking.setInflation
summary: 라운드별 인플레이션을 도출하기 위한 연간 인플레이션율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_max_full_selected(new: u32
)
interface:
api.tx.bfcStaking.setMaxFullSelected
summary: 라운드당 선택되는 풀 검증자 후보의 최대 수를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_basic_full_selected(new: u32
)
interface:
api.tx.bfcStaking.setMaxBasicSelected
summary: 라운드당 선택되는 기본 검증자 후보의 최대 수를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_min_total_selected(new: u32
)
interface:
api.tx.bfcStaking.setMinTotalSelected
summary: 라운드당 선택되는 검증자 후보의 최소 수를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_default_validator_commission(new: Perbill
, tier: TierType
)
interface:
api.tx.bfcStaking.setDefaultValidatorCommission
summary: 주어진 티어(tier)의 모든 검증자에 대한 기본 수수료율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_max_validator_commission(new: Perbill
, tier: TierType
)
interface:
api.tx.bfcStaking.setMaxValidatorCommission
summary: 주어진 티어(tier)의 모든 검증자에 대한 최대 수수료율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_validator_commission(new: Perbill
)
interface:
api.tx.bfcStaking.setValidatorCommission
summary: 주어진 검증자의 수수료율을 설정합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
set_validator_tier(more: BalanceOf
, new: TierType
, relayer?: AccountId
)
interface:
api.tx.bfcStaking.setValidatorTier
summary: 검증자 후보 티어(tier)를 수정합니다. 실제 상태 반영은 다음 라운드에 적용됩니다. 오리진은 스태시 계정(stash account)이어야 합니다.
set_blocks_per_round(new: u32
)
interface:
api.tx.bfcStaking.setBlocksPerRound
summary: 라운드당 블록 수를 설정합니다. 새로운 라운드 길이는 다음 블록에서 즉시 업데이트됩니다. 이는 라운드당 인플레이션 설정도 업데이트합니다. 오리진은 루트 (root)여야 합니다.
set_storage_cache_lifetime(new: u32
)
interface:
api.tx.bfcStaking.setStorageCacheLifetime
summary: StorageCacheLifetime 라운드 길이를 설정합니다. 오리진은 루트 (root)여야 합니다.
join_candidates(controller: AccountId
, relayer?: AccountId
, bond: BalanceOf
, candidate_count: u32
)
interface:
api.tx.bfcStaking.joinCandidates
summary: 검증자 후보 집합에 합류합니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
schedule_leave_candidates(candidate_count: u32
)
interface:
api.tx.bfcStaking.scheduleLeaveCandidates
summary: 후보 집합을 떠날 것을 요청합니다. 성공 시, 해당 계정은 검증자로 선택되는 것을 방지하기 위해 후보 풀에서 즉시 제거됩니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
execute_leave_candidates(candidate_nomination_count: u32
)
interface:
api.tx.bfcStaking.executeLeaveCandidates
summary: 후보 떠나기 요청을 실행합니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
cancel_leave_candidates(candidate_count: u32
)
interface:
api.tx.bfcStaking.cancelLeaveCandidates
summary: 후보 떠나기 보류 중인 요청을 취소합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
set_controller(new: AccountId
)
interface:
api.tx.bfcStaking.setController
summary: 본딩된 컨트롤러 계정을 (재)설정합니다. 오리진은 본딩된 스태시 계정 (stash account)이어야 합니다. 실제 변경 사항은 다음 라운드 업데이트에 적용됩니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
set_candidate_reward_dst(new_reward_dst: RewardDestination
)
interface:
api.tx.bfcStaking.setCandidateRewardDst
summary: 검증자 후보 보상 목적지를 설정합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
set_nominator_reward_dst(new_reward_dst: RewardDestination
)
interface:
api.tx.bfcStaking.setNominatorRewardDst
summary: 지명자 보상 목적지를 설정합니다.
go_offline()
interface:
api.tx.bfcStaking.goOffline
summary: 언본딩 (unbonding) 없이 일시적으로 검증자 후보 집합을 떠납니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
go_online()
interface:
api.tx.bfcStaking.goOnline
summary: 이전에 강제 퇴출되거나 오프라인 상태였던 경우 검증자 후보 집합에 다시 합류합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
candidate_bond_more(more: BalanceOf
)
interface:
api.tx.bfcStaking.candidateBondMore
summary: 검증자 후보의 자체 본딩을 더 늘립니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
schedule_candidate_bond_less(less: BalanceOf
)
interface:
api.tx.bfcStaking.scheduleCandidateBondLess
summary: 검증자 후보가 자체 본딩을 줄이도록 요청합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
execute_candidate_bond_less()
interface:
api.tx.bfcStaking.executeCandidateBondLess
summary: 검증자 후보 자체 본딩 조정을 위한 보류 중인 요청을 실행합니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
cancel_candidate_bond_less()
interface:
api.tx.bfcStaking.cancelCandidateBondLess
summary: 검증자 후보 자체 본딩 조정을 위한 보류 중인 요청을 취소합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
nominate(candidate: AccountId
, amount: BalanceOf
, candidate_nomination_count: u32
, nomination_count: u32
)
interface:
api.tx.bfcStaking.nominate
summary: 주어진 후보자를 지명합니다.
schedule_leave_nominators()
interface:
api.tx.bfcStaking.scheduleLeaveNominators
summary: 지명자 (nominator) 집합을 떠날 것을 요청합니다.
execute_leave_nominators(nomination_count: u32
)
interface:
api.tx.bfcStaking.executeLeaveNominators
summary: 지명자 집합을 떠나고 진행 중인 모든 지명을 철회할 권한을 실행합니다.
cancel_leave_nominators()
interface:
api.tx.bfcStaking.cancelLeaveNominators
summary: 지명자 집합을 떠나기 위한 보류 중인 요청을 취소합니다.
schedule_revoke_nomination(validator: AccountId
)
interface:
api.tx.bfcStaking.scheduleRevokeNomination
summary: 기존 지명을 철회할 것을 요청합니다.
nominator_bond_more(candidate: AccountId
, more: BalanceOf
)
interface:
api.tx.bfcStaking.nominatorBondMore
summary: 특정 검증자 후보에게 더 많은 본딩을 합니다.
schedule_nominator_bond_less(candidate: AccountId
, less: BalanceOf
)
interface:
api.tx.bfcStaking.scheduleNominatorBondLess
summary: 특정 검증자 후보에게 더 적은 본딩을 요청합니다.
execute_nomination_request(candidate: AccountId
)
interface:
api.tx.bfcStaking.executeNominationRequest
summary: 기존 지명을 변경하기 위한 보류 중인 요청을 실행합니다.
cancel_nomination_request(candidate: AccountId
)
interface:
api.tx.bfcStaking.cancelNominationRequest
summary: 기존 지명 변경 요청을 취소합니다.
Storage Values
Session(): SessionIndex
interface:
api.query.bfcStaking.session
summary: 현재 라운드의 현재 세션 인덱스.
Round(): RoundInfo<T::BlockNumber>
interface:
api.query.bfcStaking.round
summary: 현재 라운드 인덱스 및 특정 정보.
StorageCacheLifetime(): u32
interface:
api.query.bfcStaking.storageCacheLifetime
summary: 스토리지 데이터가 캐시될 수 있는 최대 스토리지 수명.
DefaultFullValidatorCommission(): Perbill
interface:
api.query.bfcStaking.defaultFullValidatorCommission
summary: 풀 검증자를 위한 기본 수수료율.
DefaultBasicValidatorCommission(): Perbill
interface:
api.query.bfcStaking.defaultBasicValidatorCommission
summary: 기본 검증자를 위한 기본 수수료율.
MaxFullValidatorCommission(): Perbill
interface:
api.query.bfcStaking.maxFullValidatorCommission
summary: 풀 검증자를 위한 최대 수수료율.
MaxBasicValidatorCommission(): Perbill
interface:
api.query.bfcStaking.maxBasicValidatorCommission
summary: 기본 검증자를 위한 최대 수수료율.
MaxTotalSelected(): u32
interface:
api.query.bfcStaking.maxTotalSelected
summary: 매 라운드마다 선택되는 최대 노드 후보 수.
MaxFullSelected(): u32
interface:
api.query.bfcStaking.maxFullSelected
summary: 매 라운드마다 선택되는 최대 풀 노드 후보 수.
MaxBasicSelected(): u32
interface:
api.query.bfcStaking.maxBasicSelected
summary: 매 라운드마다 선택되는 최대 기본 노드 후보 수.
MinTotalSelected(): u32
interface:
api.query.bfcStaking.minTotalSelected
summary: 매 라운드마다 선택되는 최소 후보 수.
ProductivityPerBlock(): Perbill
interface:
api.query.bfcStaking.productivityPerBlock
summary: 현재 라운드에서 블록 생산당 생산성 비율.
NominatorState(AccountId
): Option<Nominator<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.nominatorState
summary: 계정이 지명자인 경우 해당 계정과 연결된 지명자 상태를 가져오고, 그렇지 않으면 None.
CandidateInfo(AccountId
): Option<CandidateMetadata<AccountId, BalanceOf, BlockNumberOf>>
interface:
api.query.bfcStaking.candidateInfo
summary: 계정이 후보자인 경우 해당 계정과 연결된 검증자 후보 정보를 가져오고, 그렇지 않으면 None.
BondedStash(AccountId
): Option<AccountId>
interface:
api.query.bfcStaking.bondedStash
summary: 모든 잠긴 "스태시" 계정에서 컨트롤러 계정으로의 매핑.
TopNominations(AccountId
): Option<Nominations<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.topNominations
summary: 검증자 후보를 위한 상위 지명.
BottomNominations(AccountId
): Option<Nominations<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.bottomNominations
summary: 검증자 후보를 위한 하위 지명.
SelectedCandidates(): Vec<AccountId>
interface:
api.query.bfcStaking.selectedCandidates
summary: 현재 라운드를 위해 선택된 활성 검증자 세트 (풀 및 기본).
SelectedFullCandidates(): Vec<AccountId>
interface:
api.query.bfcStaking.selectedFullCandidates
summary: 현재 라운드를 위해 선택된 활성 풀 검증자 세트.
SelectedBasicCandidates(): Vec<AccountId>
interface:
api.query.bfcStaking.selectedBasicCandidates
summary: 현재 라운드를 위해 선택된 활성 기본 검증자 세트.
CachedSelectedCandidates(): Vec<(RoundIndex, Vec<AccountId>)>
interface:
api.query.bfcStaking.cachedSelectedCandidates
summary: 전 라운드에서 선택된 캐시된 활성 검증자 세트.
Majority(): u32
interface:
api.query.bfcStaking.majority
summary: 현재 활성 검증자 세트의 Majority.
CachedMajority(): Vec<(RoundIndex, u32)>
interface:
api.query.bfcStaking.cachedMajority
summary: 이전 라운드에서 선택된 활성 검증자 세트를 기반으로 캐시된 Majority.
Total(): BalanceOf
interface:
api.query.bfcStaking.total
summary: 이 스테이킹 팔렛(pallet)에 의해 잠긴 총 자본.
CandidatePool(): Vec<Bond<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.candidatePool
summary: 검증자 후보 풀, 각 후보는 총 투표력을 가짐.
AtStake(RoundIndex
): ValidatorSnapshot<AccountId, BalanceOf>
interface:
api.query.bfcStaking.atStake
summary: 라운드 시작 시 검증자 지명 스테이크 스냅샷.
TotalAtStake(RoundIndex
): Option<TotalSnapshot<BalanceOf>>
interface:
api.query.bfcStaking.totalAtStake
summary: 라운드 시작 시 네트워크 상태 스냅샷.
DelayedPayouts(RoundIndex
): Option<DelayedPayout<BalanceOf>>
interface:
api.query.bfcStaking.delayedPayouts
summary: 지연된 보상 지급.
DelayedControllerSets(RoundIndex
): Vec<DelayedControllerSet<AccountId>>
interface:
api.query.bfcStaking.delayedControllerSets
summary: 지연된 새 컨트롤러 계정 설정 요청.
Staked(RoundIndex
): BalanceOf
interface:
api.query.bfcStaking.staked
summary: 라운드에서 선택된 후보자에 대해 집계된 총 스테이크.
InflationConfig(): InflationInfo<BalanceOf>
interface:
api.query.bfcStaking.inflationConfig
summary: 인플레이션 설정.
Points(RoundIndex
): RewardPoint
interface:
api.query.bfcStaking.points
summary: 라운드에서 블록 생산에 대해 검증자에게 부여된 총 점수.
AwardedPts(AccountId
): RewardPoint
interface:
api.query.bfcStaking.awardedPts
summary: 라운드당 각 검증자에 대한 점수.
AwardedTokens(): BalanceOf
interface:
api.query.bfcStaking.awardedTokens
summary: 제네시스(genesis) 이후 검증자와 지명자에게 부여된 토큰.
Constants
DefaultBlocksPerSession: u32
interface:
api.consts.bfcStaking.defaultBlocksPerSession
summary: 제네시스 (genesis) 시점의 기본 세션당 블록 수.
DefaultBlocksPerRound: u32
interface:
api.consts.bfcStaking.defaultBlocksPerRound
summary: 제네시스 (genesis) 시점의 기본 라운드당 블록 수.
MinBlocksPerRound: u32
interface:
api.consts.bfcStaking.minBlocksPerRound
summary: 제네시스 (genesis) 시점의 기본 최소 라운드당 블록 수.
StorageCacheLifetimeInRounds: u32
interface:
api.consts.bfcStaking.storageCacheLifetimeInRounds
summary: 특정 스토리지 데이터가 캐시될 수 있는 라운드 기준 최대 수명.
LeaveCandidatesDelay: RoundIndex
interface:
api.consts.bfcStaking.leaveCandidatesDelay
summary: 후보자가 종료 요청을 실행하기 전에 본딩된 상태로 유지되는 라운드 수.
CandidateBondLessDelay: RoundIndex
interface:
api.consts.bfcStaking.candidateBondLessDelay
summary: 후보자가 자체 본딩을 줄이도록 요청한 후 실행 가능해지기까지 기다려야 하는 라운드 수.
LeaveNominatorsDelay: RoundIndex
interface:
api.consts.bfcStaking.leaveNominatorsDelay
summary: 지명자가 종료 요청을 실행하기 전에 본딩된 상태로 유지되는 라운드 수.
RevokeNominationDelay: RoundIndex
interface:
api.consts.bfcStaking.revokeNominationDelay
summary: 지명 철회 요청을 실행하기 전에 지명이 본딩된 상태로 유지되는 라운드 수.
NominationBondLessDelay: RoundIndex
interface:
api.consts.bfcStaking.nominationBondLessDelay
summary: 지명 감소 요청이 실행 가능해지기까지 기다려야 하는 라운드 수.
RewardPaymentDelay: RoundIndex
interface:
api.consts.bfcStaking.rewardPaymentDelay
summary: 블록 저자에게 보상이 지급되는 시점까지의 라운드 수.
DefaultMaxSelectedFullCandidates: u32
interface:
api.consts.bfcStaking.defaultMaxSelectedFullCandidates
summary: 매 라운드마다 선택되는 기본 최대 풀 노드 후보 수.
DefaultMaxSelectedBasicCandidates: u32
interface:
api.consts.bfcStaking.defaultMaxSelectedBasicCandidates
summary: 매 라운드마다 선택되는 기본 최대 기본 노드 후보 수.
DefaultMinSelectedCandidates: u32
interface:
api.consts.bfcStaking.defaultMinSelectedCandidates
summary: 매 라운드마다 선택되는 기본 최소 후보 수 (풀 및 기본).
MaxTopNominationsPerCandidate: u32
interface:
api.consts.bfcStaking.maxTopNominationsPerCandidate
summary: 후보자당 집계되는 최대 상위 지명 수.
MaxBottomNominationsPerCandidate: u32
interface:
api.consts.bfcStaking.maxBottomNominationsPerCandidate
summary: 후보자당 집계되는 최대 하위 지명 수.
MaxNominationsPerNominator: u32
interface:
api.consts.bfcStaking.maxNominationsPerNominator
summary: 지명자당 최대 지명 수.
DefaultFullValidatorCommission: Perbill
interface:
api.consts.bfcStaking.defaultFullValidatorCommission
summary:풀 검증자를 위한 기본 수수료율.
DefaultBasicValidatorCommission: Perbill
interface:
api.consts.bfcStaking.defaultBasicValidatorCommission
summary: 기본 검증자를 위한 기본 수수료율.
MaxFullValidatorCommission: Perbill
interface:
api.consts.bfcStaking.maxFullValidatorCommission
summary: 풀 검증자를 위해 사용 가능한 최대 수수료율.
MaxBasicValidatorCommission: Perbill
interface:
api.consts.bfcStaking.maxBasicValidatorCommission
summary: 기본 검증자를 위해 사용 가능한 최대 수수료율.
MinFullValidatorStk: BalanceOf
interface:
api.consts.bfcStaking.minFullValidatorStk
summary: 라운드의
SelectedCandidates
에 포함되기 위한 모든 풀 노드 후보에게 요구되는 최소 스테이크.
MinBasicValidatorStk: BalanceOf
interface:
api.consts.bfcStaking.minBasicValidatorStk
summary: 라운드의
SelectedCandidates
에 포함되기 위한 모든 기본 노드 후보에게 요구되는 최소 스테이크.
MinFullCandidateStk: BalanceOf
interface:
api.consts.bfcStaking.minFullCandidateStk
summary: 풀 검증자 후보가 되기 위한 모든 계정에게 요구되는 최소 스테이크.
MinBasicCandidateStk: BalanceOf
interface:
api.consts.bfcStaking.minBasicCandidateStk
summary: 기본 검증자 후보가 되기 위한 모든 계정에게 요구되는 최소 스테이크.
MinNominatorStk: BalanceOf
interface:
api.consts.bfcStaking.minNominatorStk
summary: 온체인에 등록된 모든 계정이 지명자가 되기 위한 최소 스테이크.
Last updated