storageincentives

package
v1.18.2 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 2023 License: BSD-3-Clause Imports: 28 Imported by: 2

Documentation

Index

Constants

View Source
const (
	DefaultBlocksPerRound = 152
	DefaultBlocksPerPhase = DefaultBlocksPerRound / 4
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Agent

type Agent struct {
	// contains filtered or unexported fields
}

func New

func New(overlay swarm.Address,
	ethAddress common.Address,
	backend ChainBackend,
	contract redistribution.Contract,
	batchExpirer postagecontract.PostageBatchExpirer,
	redistributionStatuser staking.RedistributionStatuser,
	store storer.Reserve,
	fullSyncedFunc func() bool,
	blockTime time.Duration,
	blocksPerRound,
	blocksPerPhase uint64,
	stateStore storage.StateStorer,
	chainStateGetter postage.ChainStateGetter,
	erc20Service erc20.Service,
	tranService transaction.Service,
	health Health,
	logger log.Logger,
) (*Agent, error)

func (*Agent) Close

func (a *Agent) Close() error

func (*Agent) HasEnoughFundsToPlay added in v1.13.0

func (a *Agent) HasEnoughFundsToPlay(ctx context.Context) (*big.Int, bool, error)

func (*Agent) Metrics

func (a *Agent) Metrics() []prometheus.Collector

TODO: register metric

func (*Agent) SampleWithProofs added in v1.17.0

func (a *Agent) SampleWithProofs(
	ctx context.Context,
	anchor1 []byte,
	anchor2 []byte,
	storageRadius uint8,
) (SampleWithProofs, error)

SampleWithProofs is called only by rchash API

func (*Agent) Status added in v1.12.0

func (a *Agent) Status() (*Status, error)

Status returns the node status

type ChainBackend

type ChainBackend interface {
	BlockNumber(context.Context) (uint64, error)
	HeaderByNumber(context.Context, *big.Int) (*types.Header, error)
	BalanceAt(ctx context.Context, address common.Address, block *big.Int) (*big.Int, error)
	SuggestGasPrice(ctx context.Context) (*big.Int, error)
}

type Health added in v1.16.0

type Health interface {
	IsHealthy() bool
}

type PhaseType

type PhaseType int

func (PhaseType) String

func (p PhaseType) String() string

type RedistributionState added in v1.12.0

type RedistributionState struct {
	// contains filtered or unexported fields
}

func NewRedistributionState added in v1.12.0

func NewRedistributionState(logger log.Logger, ethAddress common.Address, stateStore storage.StateStorer, erc20Service erc20.Service, contract transaction.Service) (*RedistributionState, error)

func (*RedistributionState) AddFee added in v1.12.0

func (r *RedistributionState) AddFee(ctx context.Context, txHash common.Hash)

AddFee sets the internal node status

func (*RedistributionState) CalculateWinnerReward added in v1.12.0

func (r *RedistributionState) CalculateWinnerReward(ctx context.Context) error

CalculateWinnerReward calculates the reward for the winner

func (*RedistributionState) CommitKey added in v1.14.0

func (r *RedistributionState) CommitKey(round uint64) ([]byte, bool)

func (*RedistributionState) HasRevealed added in v1.14.0

func (r *RedistributionState) HasRevealed(round uint64) bool

func (*RedistributionState) IsFrozen added in v1.17.0

func (r *RedistributionState) IsFrozen() bool

func (*RedistributionState) IsFullySynced added in v1.12.0

func (r *RedistributionState) IsFullySynced() bool

func (*RedistributionState) IsHealthy added in v1.17.2

func (r *RedistributionState) IsHealthy() bool

func (*RedistributionState) SampleData added in v1.14.0

func (r *RedistributionState) SampleData(round uint64) (SampleData, bool)

func (*RedistributionState) SetBalance added in v1.12.0

func (r *RedistributionState) SetBalance(ctx context.Context) error

func (*RedistributionState) SetCommitKey added in v1.14.0

func (r *RedistributionState) SetCommitKey(round uint64, commitKey []byte)

func (*RedistributionState) SetCurrentBlock added in v1.17.0

func (r *RedistributionState) SetCurrentBlock(block uint64)

func (*RedistributionState) SetCurrentEvent added in v1.12.0

func (r *RedistributionState) SetCurrentEvent(phase PhaseType, round uint64)

func (*RedistributionState) SetFrozen added in v1.12.0

func (r *RedistributionState) SetFrozen(isFrozen bool, round uint64)

func (*RedistributionState) SetFullySynced added in v1.17.0

func (r *RedistributionState) SetFullySynced(isSynced bool)

func (*RedistributionState) SetHasRevealed added in v1.14.0

func (r *RedistributionState) SetHasRevealed(round uint64)

func (*RedistributionState) SetHealthy added in v1.17.2

func (r *RedistributionState) SetHealthy(isHealthy bool)

func (*RedistributionState) SetLastPlayedRound added in v1.12.0

func (r *RedistributionState) SetLastPlayedRound(round uint64)

func (*RedistributionState) SetLastSelectedRound added in v1.17.0

func (r *RedistributionState) SetLastSelectedRound(round uint64)

func (*RedistributionState) SetLastWonRound added in v1.12.0

func (r *RedistributionState) SetLastWonRound(round uint64)

func (*RedistributionState) SetSampleData added in v1.14.0

func (r *RedistributionState) SetSampleData(round uint64, sd SampleData, dur time.Duration)

func (*RedistributionState) Status added in v1.12.0

func (r *RedistributionState) Status() (*Status, error)

Status returns the node status

type RoundData added in v1.14.0

type RoundData struct {
	CommitKey   []byte
	SampleData  *SampleData
	HasRevealed bool
}

type SampleData added in v1.14.0

type SampleData struct {
	Anchor1            []byte
	ReserveSampleItems []storer.SampleItem
	ReserveSampleHash  swarm.Address
	StorageRadius      uint8
}

type SampleWithProofs added in v1.17.0

type SampleWithProofs struct {
	Hash     swarm.Address                       `json:"hash"`
	Proofs   redistribution.ChunkInclusionProofs `json:"proofs"`
	Duration time.Duration                       `json:"duration"`
}

type Status added in v1.12.0

type Status struct {
	Phase             PhaseType
	IsFrozen          bool
	IsFullySynced     bool
	Round             uint64
	LastWonRound      uint64
	LastPlayedRound   uint64
	LastFrozenRound   uint64
	LastSelectedRound uint64
	Block             uint64
	Reward            *big.Int
	Fees              *big.Int
	RoundData         map[uint64]RoundData
	SampleDuration    time.Duration
	IsHealthy         bool
}

Status provide internal status of the nodes in the redistribution game

func NewStatus added in v1.14.0

func NewStatus() *Status

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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