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