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.setStakingExpectationssummary: 총 스테이킹 기대치를 설정합니다. 이 기대치는 해당 라운드의 발행량을 결정합니다. 오리진은 루트 (root)여야 합니다.
set_inflation(schedule: Range<Perbill>)
interface:
api.tx.bfcStaking.setInflationsummary: 라운드별 인플레이션을 도출하기 위한 연간 인플레이션율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_max_full_selected(new: u32)
interface:
api.tx.bfcStaking.setMaxFullSelectedsummary: 라운드당 선택되는 풀 검증자 후보의 최대 수를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_basic_full_selected(new: u32)
interface:
api.tx.bfcStaking.setMaxBasicSelectedsummary: 라운드당 선택되는 기본 검증자 후보의 최대 수를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_min_total_selected(new: u32)
interface:
api.tx.bfcStaking.setMinTotalSelectedsummary: 라운드당 선택되는 검증자 후보의 최소 수를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_default_validator_commission(new: Perbill, tier: TierType)
interface:
api.tx.bfcStaking.setDefaultValidatorCommissionsummary: 주어진 티어(tier)의 모든 검증자에 대한 기본 수수료율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_max_validator_commission(new: Perbill, tier: TierType)
interface:
api.tx.bfcStaking.setMaxValidatorCommissionsummary: 주어진 티어(tier)의 모든 검증자에 대한 최대 수수료율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_validator_commission(new: Perbill)
interface:
api.tx.bfcStaking.setValidatorCommissionsummary: 주어진 검증자의 수수료율을 설정합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
set_validator_tier(more: BalanceOf, new: TierType, relayer?: AccountId)
interface:
api.tx.bfcStaking.setValidatorTiersummary: 검증자 후보 티어(tier)를 수정합니다. 실제 상태 반영은 다음 라운드에 적용됩니다. 오리진은 스태시 계정(stash account)이어야 합니다.
set_blocks_per_round(new: u32)
interface:
api.tx.bfcStaking.setBlocksPerRoundsummary: 라운드당 블록 수를 설정합니다. 새로운 라운드 길이는 다음 블록에서 즉시 업데이트됩니다. 이는 라운드당 인플레이션 설정도 업데이트합니다. 오리진은 루트 (root)여야 합니다.
set_storage_cache_lifetime(new: u32)
interface:
api.tx.bfcStaking.setStorageCacheLifetimesummary: StorageCacheLifetime 라운드 길이를 설정합니다. 오리진은 루트 (root)여야 합니다.
join_candidates(controller: AccountId, relayer?: AccountId, bond: BalanceOf, candidate_count: u32)
interface:
api.tx.bfcStaking.joinCandidatessummary: 검증자 후보 집합에 합류합니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
schedule_leave_candidates(candidate_count: u32)
interface:
api.tx.bfcStaking.scheduleLeaveCandidatessummary: 후보 집합을 떠날 것을 요청합니다. 성공 시, 해당 계정은 검증자로 선택되는 것을 방지하기 위해 후보 풀에서 즉시 제거됩니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
execute_leave_candidates(candidate_nomination_count: u32)
interface:
api.tx.bfcStaking.executeLeaveCandidatessummary: 후보 떠나기 요청을 실행합니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
cancel_leave_candidates(candidate_count: u32)
interface:
api.tx.bfcStaking.cancelLeaveCandidatessummary: 후보 떠나기 보류 중인 요청을 취소합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
set_controller(new: AccountId)
interface:
api.tx.bfcStaking.setControllersummary: 본딩된 컨트롤러 계정을 (재)설정합니다. 오리진은 본딩된 스태시 계정 (stash account)이어야 합니다. 실제 변경 사항은 다음 라운드 업데이트에 적용됩니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
set_candidate_reward_dst(new_reward_dst: RewardDestination)
interface:
api.tx.bfcStaking.setCandidateRewardDstsummary: 검증자 후보 보상 목적지를 설정합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
set_nominator_reward_dst(new_reward_dst: RewardDestination)
interface:
api.tx.bfcStaking.setNominatorRewardDstsummary: 지명자 보상 목적지를 설정합니다.
go_offline()
interface:
api.tx.bfcStaking.goOfflinesummary: 언본딩 (unbonding) 없이 일시적으로 검증자 후보 집합을 떠납니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
go_online()
interface:
api.tx.bfcStaking.goOnlinesummary: 이전에 강제 퇴출되거나 오프라인 상태였던 경우 검증자 후보 집합에 다시 합류합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
candidate_bond_more(more: BalanceOf)
interface:
api.tx.bfcStaking.candidateBondMoresummary: 검증자 후보의 자체 본딩을 더 늘립니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
schedule_candidate_bond_less(less: BalanceOf)
interface:
api.tx.bfcStaking.scheduleCandidateBondLesssummary: 검증자 후보가 자체 본딩을 줄이도록 요청합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
execute_candidate_bond_less()
interface:
api.tx.bfcStaking.executeCandidateBondLesssummary: 검증자 후보 자체 본딩 조정을 위한 보류 중인 요청을 실행합니다. 오리진은 스태시 계정 (stash account)이어야 합니다.
cancel_candidate_bond_less()
interface:
api.tx.bfcStaking.cancelCandidateBondLesssummary: 검증자 후보 자체 본딩 조정을 위한 보류 중인 요청을 취소합니다. 오리진은 컨트롤러 계정 (controller account)이어야 합니다.
nominate(candidate: AccountId, amount: BalanceOf, candidate_nomination_count: u32, nomination_count: u32)
interface:
api.tx.bfcStaking.nominatesummary: 주어진 후보자를 지명합니다.
schedule_leave_nominators()
interface:
api.tx.bfcStaking.scheduleLeaveNominatorssummary: 지명자 (nominator) 집합을 떠날 것을 요청합니다.
execute_leave_nominators(nomination_count: u32)
interface:
api.tx.bfcStaking.executeLeaveNominatorssummary: 지명자 집합을 떠나고 진행 중인 모든 지명을 철회할 권한을 실행합니다.
cancel_leave_nominators()
interface:
api.tx.bfcStaking.cancelLeaveNominatorssummary: 지명자 집합을 떠나기 위한 보류 중인 요청을 취소합니다.
schedule_revoke_nomination(validator: AccountId)
interface:
api.tx.bfcStaking.scheduleRevokeNominationsummary: 기존 지명을 철회할 것을 요청합니다.
nominator_bond_more(candidate: AccountId, more: BalanceOf)
interface:
api.tx.bfcStaking.nominatorBondMoresummary: 특정 검증자 후보에게 더 많은 본딩을 합니다.
schedule_nominator_bond_less(candidate: AccountId, less: BalanceOf)
interface:
api.tx.bfcStaking.scheduleNominatorBondLesssummary: 특정 검증자 후보에게 더 적은 본딩을 요청합니다.
execute_nomination_request(candidate: AccountId)
interface:
api.tx.bfcStaking.executeNominationRequestsummary: 기존 지명을 변경하기 위한 보류 중인 요청을 실행합니다.
cancel_nomination_request(candidate: AccountId)
interface:
api.tx.bfcStaking.cancelNominationRequestsummary: 기존 지명 변경 요청을 취소합니다.
Storage Values
Session(): SessionIndex
interface:
api.query.bfcStaking.sessionsummary: 현재 라운드의 현재 세션 인덱스.
Round(): RoundInfo<T::BlockNumber>
interface:
api.query.bfcStaking.roundsummary: 현재 라운드 인덱스 및 특정 정보.
StorageCacheLifetime(): u32
interface:
api.query.bfcStaking.storageCacheLifetimesummary: 스토리지 데이터가 캐시될 수 있는 최대 스토리지 수명.
DefaultFullValidatorCommission(): Perbill
interface:
api.query.bfcStaking.defaultFullValidatorCommissionsummary: 풀 검증자를 위한 기본 수수료율.
DefaultBasicValidatorCommission(): Perbill
interface:
api.query.bfcStaking.defaultBasicValidatorCommissionsummary: 기본 검증자를 위한 기본 수수료율.
MaxFullValidatorCommission(): Perbill
interface:
api.query.bfcStaking.maxFullValidatorCommissionsummary: 풀 검증자를 위한 최대 수수료율.
MaxBasicValidatorCommission(): Perbill
interface:
api.query.bfcStaking.maxBasicValidatorCommissionsummary: 기본 검증자를 위한 최대 수수료율.
MaxTotalSelected(): u32
interface:
api.query.bfcStaking.maxTotalSelectedsummary: 매 라운드마다 선택되는 최대 노드 후보 수.
MaxFullSelected(): u32
interface:
api.query.bfcStaking.maxFullSelectedsummary: 매 라운드마다 선택되는 최대 풀 노드 후보 수.
MaxBasicSelected(): u32
interface:
api.query.bfcStaking.maxBasicSelectedsummary: 매 라운드마다 선택되는 최대 기본 노드 후보 수.
MinTotalSelected(): u32
interface:
api.query.bfcStaking.minTotalSelectedsummary: 매 라운드마다 선택되는 최소 후보 수.
ProductivityPerBlock(): Perbill
interface:
api.query.bfcStaking.productivityPerBlocksummary: 현재 라운드에서 블록 생산당 생산성 비율.
NominatorState(AccountId): Option<Nominator<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.nominatorStatesummary: 계정이 지명자인 경우 해당 계정과 연결된 지명자 상태를 가져오고, 그렇지 않으면 None.
CandidateInfo(AccountId): Option<CandidateMetadata<AccountId, BalanceOf, BlockNumberOf>>
interface:
api.query.bfcStaking.candidateInfosummary: 계정이 후보자인 경우 해당 계정과 연결된 검증자 후보 정보를 가져오고, 그렇지 않으면 None.
BondedStash(AccountId): Option<AccountId>
interface:
api.query.bfcStaking.bondedStashsummary: 모든 잠긴 "스태시" 계정에서 컨트롤러 계정으로의 매핑.
TopNominations(AccountId): Option<Nominations<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.topNominationssummary: 검증자 후보를 위한 상위 지명.
BottomNominations(AccountId): Option<Nominations<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.bottomNominationssummary: 검증자 후보를 위한 하위 지명.
SelectedCandidates(): Vec<AccountId>
interface:
api.query.bfcStaking.selectedCandidatessummary: 현재 라운드를 위해 선택된 활성 검증자 세트 (풀 및 기본).
SelectedFullCandidates(): Vec<AccountId>
interface:
api.query.bfcStaking.selectedFullCandidatessummary: 현재 라운드를 위해 선택된 활성 풀 검증자 세트.
SelectedBasicCandidates(): Vec<AccountId>
interface:
api.query.bfcStaking.selectedBasicCandidatessummary: 현재 라운드를 위해 선택된 활성 기본 검증자 세트.
CachedSelectedCandidates(): Vec<(RoundIndex, Vec<AccountId>)>
interface:
api.query.bfcStaking.cachedSelectedCandidatessummary: 전 라운드에서 선택된 캐시된 활성 검증자 세트.
Majority(): u32
interface:
api.query.bfcStaking.majoritysummary: 현재 활성 검증자 세트의 Majority.
CachedMajority(): Vec<(RoundIndex, u32)>
interface:
api.query.bfcStaking.cachedMajoritysummary: 이전 라운드에서 선택된 활성 검증자 세트를 기반으로 캐시된 Majority.
Total(): BalanceOf
interface:
api.query.bfcStaking.totalsummary: 이 스테이킹 팔렛(pallet)에 의해 잠긴 총 자본.
CandidatePool(): Vec<Bond<AccountId, BalanceOf>>
interface:
api.query.bfcStaking.candidatePoolsummary: 검증자 후보 풀, 각 후보는 총 투표력을 가짐.
AtStake(RoundIndex): ValidatorSnapshot<AccountId, BalanceOf>
interface:
api.query.bfcStaking.atStakesummary: 라운드 시작 시 검증자 지명 스테이크 스냅샷.
TotalAtStake(RoundIndex): Option<TotalSnapshot<BalanceOf>>
interface:
api.query.bfcStaking.totalAtStakesummary: 라운드 시작 시 네트워크 상태 스냅샷.
DelayedPayouts(RoundIndex): Option<DelayedPayout<BalanceOf>>
interface:
api.query.bfcStaking.delayedPayoutssummary: 지연된 보상 지급.
DelayedControllerSets(RoundIndex): Vec<DelayedControllerSet<AccountId>>
interface:
api.query.bfcStaking.delayedControllerSetssummary: 지연된 새 컨트롤러 계정 설정 요청.
Staked(RoundIndex): BalanceOf
interface:
api.query.bfcStaking.stakedsummary: 라운드에서 선택된 후보자에 대해 집계된 총 스테이크.
InflationConfig(): InflationInfo<BalanceOf>
interface:
api.query.bfcStaking.inflationConfigsummary: 인플레이션 설정.
Points(RoundIndex): RewardPoint
interface:
api.query.bfcStaking.pointssummary: 라운드에서 블록 생산에 대해 검증자에게 부여된 총 점수.
AwardedPts(AccountId): RewardPoint
interface:
api.query.bfcStaking.awardedPtssummary: 라운드당 각 검증자에 대한 점수.
AwardedTokens(): BalanceOf
interface:
api.query.bfcStaking.awardedTokenssummary: 제네시스(genesis) 이후 검증자와 지명자에게 부여된 토큰.
Constants
DefaultBlocksPerSession: u32
interface:
api.consts.bfcStaking.defaultBlocksPerSessionsummary: 제네시스 (genesis) 시점의 기본 세션당 블록 수.
DefaultBlocksPerRound: u32
interface:
api.consts.bfcStaking.defaultBlocksPerRoundsummary: 제네시스 (genesis) 시점의 기본 라운드당 블록 수.
MinBlocksPerRound: u32
interface:
api.consts.bfcStaking.minBlocksPerRoundsummary: 제네시스 (genesis) 시점의 기본 최소 라운드당 블록 수.
StorageCacheLifetimeInRounds: u32
interface:
api.consts.bfcStaking.storageCacheLifetimeInRoundssummary: 특정 스토리지 데이터가 캐시될 수 있는 라운드 기준 최대 수명.
LeaveCandidatesDelay: RoundIndex
interface:
api.consts.bfcStaking.leaveCandidatesDelaysummary: 후보자가 종료 요청을 실행하기 전에 본딩된 상태로 유지되는 라운드 수.
CandidateBondLessDelay: RoundIndex
interface:
api.consts.bfcStaking.candidateBondLessDelaysummary: 후보자가 자체 본딩을 줄이도록 요청한 후 실행 가능해지기까지 기다려야 하는 라운드 수.
LeaveNominatorsDelay: RoundIndex
interface:
api.consts.bfcStaking.leaveNominatorsDelaysummary: 지명자가 종료 요청을 실행하기 전에 본딩된 상태로 유지되는 라운드 수.
RevokeNominationDelay: RoundIndex
interface:
api.consts.bfcStaking.revokeNominationDelaysummary: 지명 철회 요청을 실행하기 전에 지명이 본딩된 상태로 유지되는 라운드 수.
NominationBondLessDelay: RoundIndex
interface:
api.consts.bfcStaking.nominationBondLessDelaysummary: 지명 감소 요청이 실행 가능해지기까지 기다려야 하는 라운드 수.
RewardPaymentDelay: RoundIndex
interface:
api.consts.bfcStaking.rewardPaymentDelaysummary: 블록 저자에게 보상이 지급되는 시점까지의 라운드 수.
DefaultMaxSelectedFullCandidates: u32
interface:
api.consts.bfcStaking.defaultMaxSelectedFullCandidatessummary: 매 라운드마다 선택되는 기본 최대 풀 노드 후보 수.
DefaultMaxSelectedBasicCandidates: u32
interface:
api.consts.bfcStaking.defaultMaxSelectedBasicCandidatessummary: 매 라운드마다 선택되는 기본 최대 기본 노드 후보 수.
DefaultMinSelectedCandidates: u32
interface:
api.consts.bfcStaking.defaultMinSelectedCandidatessummary: 매 라운드마다 선택되는 기본 최소 후보 수 (풀 및 기본).
MaxTopNominationsPerCandidate: u32
interface:
api.consts.bfcStaking.maxTopNominationsPerCandidatesummary: 후보자당 집계되는 최대 상위 지명 수.
MaxBottomNominationsPerCandidate: u32
interface:
api.consts.bfcStaking.maxBottomNominationsPerCandidatesummary: 후보자당 집계되는 최대 하위 지명 수.
MaxNominationsPerNominator: u32
interface:
api.consts.bfcStaking.maxNominationsPerNominatorsummary: 지명자당 최대 지명 수.
DefaultFullValidatorCommission: Perbill
interface:
api.consts.bfcStaking.defaultFullValidatorCommissionsummary:풀 검증자를 위한 기본 수수료율.
DefaultBasicValidatorCommission: Perbill
interface:
api.consts.bfcStaking.defaultBasicValidatorCommissionsummary: 기본 검증자를 위한 기본 수수료율.
MaxFullValidatorCommission: Perbill
interface:
api.consts.bfcStaking.maxFullValidatorCommissionsummary: 풀 검증자를 위해 사용 가능한 최대 수수료율.
MaxBasicValidatorCommission: Perbill
interface:
api.consts.bfcStaking.maxBasicValidatorCommissionsummary: 기본 검증자를 위해 사용 가능한 최대 수수료율.
MinFullValidatorStk: BalanceOf
interface:
api.consts.bfcStaking.minFullValidatorStksummary: 라운드의
SelectedCandidates에 포함되기 위한 모든 풀 노드 후보에게 요구되는 최소 스테이크.
MinBasicValidatorStk: BalanceOf
interface:
api.consts.bfcStaking.minBasicValidatorStksummary: 라운드의
SelectedCandidates에 포함되기 위한 모든 기본 노드 후보에게 요구되는 최소 스테이크.
MinFullCandidateStk: BalanceOf
interface:
api.consts.bfcStaking.minFullCandidateStksummary: 풀 검증자 후보가 되기 위한 모든 계정에게 요구되는 최소 스테이크.
MinBasicCandidateStk: BalanceOf
interface:
api.consts.bfcStaking.minBasicCandidateStksummary: 기본 검증자 후보가 되기 위한 모든 계정에게 요구되는 최소 스테이크.
MinNominatorStk: BalanceOf
interface:
api.consts.bfcStaking.minNominatorStksummary: 온체인에 등록된 모든 계정이 지명자가 되기 위한 최소 스테이크.
Last updated