RelayManager
Description
바이프로스트 네트워크의 풀 노드 운영자는 릴레이어 프로그램도 추가로 운영해야 합니다. 따라서 모든 릴레이어의 상태를 신중하게 관리하고 추적하는 것은 네트워크 안정성 유지에 매우 중요합니다. 릴레이어 관리를 위한 핵심 구현은 pallet_relay_manager
에 정의되어 있습니다.
Extrinsics
set_storage_cache_lifetime(new: u32
)
interface:
api.tx.relayManager.setStorageCacheLifetime
summary:
StorageCacheLifetime
라운드 길이를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_heartbeat_offence_activation(is_active: bool
)
interface:
api.tx.relayManager.setHeartbeatOffenceActivation
summary: 릴레이어 하트비트 (heartbeat) 관리의 활성화 여부를 설정합니다. 오리진은 루트 (root)여야 합니다.
set_heartbeat_slash_fraction(new: Perbill
)
interface:
api.tx.relayManager.setHeartbeatSlashFraction
summary: 하트비트 위반에 대한 새로운 슬래시 (slash) 비율을 설정합니다. 오리진은 루트 (root)여야 합니다.
set_relayer(new: AccountId
)
interface:
api.tx.relayManager.setRelayer
summary: 본딩된 릴레이어 계정을 (재)설정합니다. 오리진은 본딩된 컨트롤러 계정 (controller account)이어야 합니다. 상태 반영은 즉시 적용됩니다.
heartbeat()
interface:
api.tx.relayManager.heartbeat
summary: 현재 세션에 대한 릴레이어 활성 (liveness) 관리를 위해 새로운 하트비트를 전송합니다. 오리진은 등록된 릴레이어 계정이어야 하며, 선택된 릴레이어만 요청할 수 있습니다.
Storage Values
StorageCacheLifetime(): u32
interface:
api.query.relayManager.storageCacheLifetime
summary: 스토리지 데이터가 캐시될 수 있는 최대 스토리지 수명.
Round(): RoundIndex
interface:
api.query.relayManager.round
summary: 현재 라운드 인덱스.
BondedController(AccountId
): Option<AccountId>
interface:
api.query.relayManager.bondedController
summary: 컨트롤러 계정을 릴레이어 계정에 매핑.
RelayerPool(): Vec<Relayer<AccountId>>
interface:
api.query.relayManager.relayerPool
summary: 현재 라운드의 릴레이어 풀 (선택된 릴레이어 및 선택되지 않은 릴레이어 포함).
RelayerState(): Option<RelayerMetadata<AccountId>>
interface:
api.query.relayManager.relayerState
summary: 특정 릴레이어의 현재 상태.
SelectedRelayers(): Vec<AccountId>
interface:
api.query.relayManager.selectedRelayers
summary: 현재 라운드를 위해 선택된 활성 릴레이어 세트.
InitialSelectedRelayers(): Vec<AccountId>
interface:
api.query.relayManager.initialSelectedRelayers
summary: 현재 라운드 시작 시 선택된 활성 릴레이어 세트.
CachedSelectedRelayers(): Vec<(RoundIndex, Vec<AccountId>)>
interface:
api.query.relayManager.cachedSelectedRelayers
summary: 이전 라운드에서 선택된 캐시된 활성 릴레이어 세트.
CachedInitialSelectedRelayers(): Vec<(RoundIndex, Vec<AccountId>)>
interface:
api.query.relayManager.cachedInitialSelectedRelayers
summary: 각 이전 라운드 시작 시 선택된 캐시된 활성 릴레이어 세트.
Majority(): u32
interface:
api.query.relayManager.majority
summary: 현재 활성 릴레이어 세트의 다수.
InitialMajority(): u32
interface:
api.query.relayManager.initialMajority
summary: 현재 라운드 시작 시 현재 활성 릴레이어 세트의 다수.
CachedMajority(): Vec<(RoundIndex, u32)>
interface:
api.query.relayManager.cachedMajority
summary: 이전 라운드에서 선택된 활성 릴레이어 세트를 기반으로 캐시된 다수.
CachedInitialMajority(): Vec<(RoundIndex, u32)>
interface:
api.query.relayManager.cachedInitialMajority
summary: 각 이전 라운드 시작 시 선택된 활성 릴레이어 세트를 기반으로 캐시된 다수.
ReceivedHeartbeats(AccountId
): bool
interface:
api.query.relayManager.receivedHeartbeats
summary: 현재 세션에서 특정 릴레이어의 수신된 하트비트.
IsHeartbeatOffenceActive(): bool
interface:
api.query.relayManager.isHeartbeatOffenceActive
summary: 릴레이어 하트비트 위반 관리의 활성화 여부.
HeartbeatSlashFraction(): Perbill
interface:
api.query.relayManager.heartbeatSlashFraction
summary: 하트비트 위반에 대한 슬래시 (slash) 비율.
Constants
StorageCacheLifetimeInRounds: u32
interface:
api.consts.relayManager.storageCacheLifetimeInRounds
summary: 스토리지 데이터가 캐시될 수 있는 라운드 기준 최대 수명.
IsHeartbeatOffenceActive: bool
interface:
api.consts.relayManager.isHeartbeatOffenceActive
summary: 릴레이어 하트비트 위반 관리의 활성화 여부.
DefaultHeartbeatSlashFraction: Perbill
interface:
api.consts.relayManager.defaultHeartbeatSlashFraction
summary: 하트비트 위반에 대한 기본 슬래시 (slash) 비율.
Last updated