api

package
v0.2.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2024 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package api defines the committee scheduler API.

Index

Constants

View Source
const (
	// RoleInvalid is an invalid role (should never appear on the wire).
	RoleInvalid Role = 0
	// RoleWorker indicates the node is a worker.
	RoleWorker Role = 1
	// RoleBackupWorker indicates the node is a backup worker.
	RoleBackupWorker Role = 2

	RoleInvalidName      = "invalid"
	RoleWorkerName       = "worker"
	RoleBackupWorkerName = "backup-worker"
)
View Source
const (
	// KindInvalid is an invalid committee.
	KindInvalid CommitteeKind = 0
	// KindComputeExecutor is an executor committee.
	KindComputeExecutor CommitteeKind = 1
	// KindStorage is a storage committee.
	KindStorage CommitteeKind = 2

	// MaxCommitteeKind is a dummy value used for iterating all committee kinds.
	MaxCommitteeKind = 3

	KindInvalidName         = "invalid"
	KindComputeExecutorName = "executor"
	KindStorageName         = "storage"
)
View Source
const ModuleName = "scheduler"

ModuleName is a unique module name for the scheduler module.

Variables

View Source
var BaseUnitsPerVotingPower quantity.Quantity

BaseUnitsPerVotingPower is the ratio of base units staked to validator power.

Functions

This section is empty.

Types

type Committee

type Committee struct {
	// Kind is the functionality a committee exists to provide.
	Kind CommitteeKind `json:"kind"`

	// Members is the committee members.
	Members []*CommitteeNode `json:"members"`

	// RuntimeID is the runtime ID that this committee is for.
	RuntimeID common.Namespace `json:"runtime_id"`

	// ValidFor is the epoch for which the committee is valid.
	ValidFor beacon.EpochTime `json:"valid_for"`
}

Committee is a per-runtime (instance) committee.

func (Committee) String

func (c Committee) String() string

String returns a string representation of a Committee.

type CommitteeKind

type CommitteeKind uint8

CommitteeKind is the functionality a committee exists to provide.

func (CommitteeKind) MarshalText

func (k CommitteeKind) MarshalText() ([]byte, error)

MarshalText encodes a CommitteeKind into text form.

func (CommitteeKind) String

func (k CommitteeKind) String() string

String returns a string representation of a CommitteeKind.

func (*CommitteeKind) UnmarshalText

func (k *CommitteeKind) UnmarshalText(text []byte) error

UnmarshalText decodes a text slice into a CommitteeKind.

type CommitteeNode

type CommitteeNode struct {
	// Role is the node's role in a committee.
	Role Role `json:"role"`

	// PublicKey is the node's public key.
	PublicKey signature.PublicKey `json:"public_key"`
}

CommitteeNode is a node participating in a committee.

type ConsensusParameters

type ConsensusParameters struct {
	// MinValidators is the minimum number of validators that MUST be
	// present in elected validator sets.
	MinValidators int `json:"min_validators"`

	// MaxValidators is the maximum number of validators that MAY be
	// present in elected validator sets.
	MaxValidators int `json:"max_validators"`

	// MaxValidatorsPerEntity is the maximum number of validators that
	// may be elected per entity in a single validator set.
	MaxValidatorsPerEntity int `json:"max_validators_per_entity"`

	// DebugBypassStake is true iff the scheduler should bypass all of
	// the staking related checks and operations.
	DebugBypassStake bool `json:"debug_bypass_stake,omitempty"`

	// DebugStaticValidators is true iff the scheduler should use
	// a static validator set instead of electing anything.
	DebugStaticValidators bool `json:"debug_static_validators,omitempty"`

	// RewardFactorEpochElectionAny is the factor for a reward
	// distributed per epoch to entities that have any node considered
	// in any election.
	RewardFactorEpochElectionAny quantity.Quantity `json:"reward_factor_epoch_election_any"`
}

ConsensusParameters are the scheduler consensus parameters.

type Genesis

type Genesis struct {
	// Parameters are the scheduler consensus parameters.
	Parameters ConsensusParameters `json:"params"`
}

Genesis is the committee scheduler genesis state.

type GetCommitteesRequest

type GetCommitteesRequest struct {
	Height    int64            `json:"height"`
	RuntimeID common.Namespace `json:"runtime_id"`
}

GetCommitteesRequest is a GetCommittees request.

type Role

type Role uint8

Role is the role a given node plays in a committee.

func (Role) MarshalText

func (r Role) MarshalText() ([]byte, error)

MarshalText encodes a Role into text form.

func (Role) String

func (r Role) String() string

String returns a string representation of a Role.

func (*Role) UnmarshalText

func (r *Role) UnmarshalText(text []byte) error

UnmarshalText decodes a text slice into a Role.

type Validator

type Validator struct {
	// ID is the validator Oasis node identifier.
	ID signature.PublicKey `json:"id"`

	// VotingPower is the validator's consensus voting power.
	VotingPower int64 `json:"voting_power"`
}

Validator is a consensus validator.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL