staking

package
v1.14.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2024 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Overview

Package staking is a generated GoMock package.

Index

Constants

View Source
const (
	// StakingCandidatesNamespace is a namespace to store candidates with epoch start height
	StakingCandidatesNamespace = "stakingCandidates"
	// StakingBucketsNamespace is a namespace to store vote buckets with epoch start height
	StakingBucketsNamespace = "stakingBuckets"
	// StakingMetaNamespace is a namespace to store metadata
	StakingMetaNamespace = "stakingMeta"
)
View Source
const (
	// EndorseExpired means the endorsement is expired
	EndorseExpired = EndorsementStatus(iota)
	// UnEndorsing means the endorser has submitted unendorsement, but it is not expired yet
	UnEndorsing
	// Endorsed means the endorsement is valid
	Endorsed
)

EndorsementStatus

View Source
const (
	HandleCreateStake       = "createStake"
	HandleUnstake           = "unstake"
	HandleWithdrawStake     = "withdrawStake"
	HandleChangeCandidate   = "changeCandidate"
	HandleTransferStake     = "transferStake"
	HandleDepositToStake    = "depositToStake"
	HandleRestake           = "restake"
	HandleCandidateRegister = "candidateRegister"
	HandleCandidateUpdate   = "candidateUpdate"
)

constants

View Source
const (

	// CandsMapNS is the bucket name to store candidate map
	CandsMapNS = "CandsMap"
)

Variables

View Source
var (
	ErrWithdrawnBucket     = errors.New("the bucket is already withdrawn")
	ErrEndorsementNotExist = errors.New("the endorsement does not exist")
	TotalBucketKey         = append([]byte{_const}, []byte("totalBucket")...)
)

Errors

View Source
var (
	ErrInvalidOwner        = errors.New("invalid owner address")
	ErrInvalidOperator     = errors.New("invalid operator address")
	ErrInvalidReward       = errors.New("invalid reward address")
	ErrInvalidSelfStkIndex = errors.New("invalid self-staking bucket index")
	ErrMissingField        = errors.New("missing data field")
	ErrTypeAssertion       = errors.New("failed type assertion")
)

Errors

View Source
var (
	ErrNilParameters = errors.New("parameter is nil")
)

Errors and vars

Functions

func AddrKeyWithPrefix added in v1.8.1

func AddrKeyWithPrefix(addr address.Address, prefix byte) []byte

AddrKeyWithPrefix returns address key with prefix

func BucketIndexFromReceiptLog added in v1.0.0

func BucketIndexFromReceiptLog(log *iotextypes.Log) (uint64, bool)

BucketIndexFromReceiptLog extracts bucket index from log

func CalculateVoteWeight added in v1.12.0

func CalculateVoteWeight(c genesis.VoteWeightCalConsts, v *VoteBucket, selfStake bool) *big.Int

CalculateVoteWeight calculates the vote weight

func ProtocolAddr added in v1.7.1

func ProtocolAddr() address.Address

ProtocolAddr returns the address generated from protocol id

Types

type BucketGet added in v1.8.0

type BucketGet interface {
	BucketGetByIndex
	// contains filtered or unexported methods
}

BucketGet related to obtaining bucket

type BucketGetByIndex added in v1.8.0

type BucketGetByIndex interface {
	// contains filtered or unexported methods
}

BucketGetByIndex related to obtaining bucket by index

type BucketIndices

type BucketIndices []uint64

BucketIndices defines the array of bucket index for a

func (*BucketIndices) Deserialize

func (bis *BucketIndices) Deserialize(data []byte) error

Deserialize deserializes bytes into bucket indices

func (*BucketIndices) LoadProto

func (bis *BucketIndices) LoadProto(bucketIndicesPb *stakingpb.BucketIndices) error

LoadProto converts protobuf to bucket indices

func (*BucketIndices) Proto

func (bis *BucketIndices) Proto() *stakingpb.BucketIndices

Proto converts bucket indices to protobuf

func (*BucketIndices) Serialize

func (bis *BucketIndices) Serialize() ([]byte, error)

Serialize serializes bucket indices into bytes

type BucketPool added in v1.1.0

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

BucketPool implements the bucket pool

func (*BucketPool) Commit added in v1.1.0

func (bp *BucketPool) Commit(sr protocol.StateReader) error

Commit is called upon workingset commit

func (*BucketPool) Copy added in v1.1.0

func (bp *BucketPool) Copy(enableSMStorage bool) *BucketPool

Copy returns a copy of the bucket pool

func (*BucketPool) Count added in v1.1.0

func (bp *BucketPool) Count() uint64

Count returns the total number of buckets in bucket pool

func (*BucketPool) CreditPool added in v1.1.0

func (bp *BucketPool) CreditPool(sm protocol.StateManager, amount *big.Int) error

CreditPool subtracts staked amount out of the pool

func (*BucketPool) DebitPool added in v1.1.0

func (bp *BucketPool) DebitPool(sm protocol.StateManager, amount *big.Int, newBucket bool) error

DebitPool adds staked amount into the pool

func (*BucketPool) Sync added in v1.1.0

func (bp *BucketPool) Sync(sm protocol.StateManager) error

Sync syncs the data from state manager

func (*BucketPool) Total added in v1.1.0

func (bp *BucketPool) Total() *big.Int

Total returns the total amount staked in bucket pool

type BucketSet added in v1.8.0

type BucketSet interface {
	// contains filtered or unexported methods
}

BucketSet related to setting bucket

type BuilderConfig added in v1.8.4

type BuilderConfig struct {
	Staking                  genesis.Staking
	PersistStakingPatchBlock uint64
	StakingPatchDir          string
}

BuilderConfig returns the configuration of the builder

type Candidate

type Candidate struct {
	Owner              address.Address
	Operator           address.Address
	Reward             address.Address
	Name               string
	Votes              *big.Int
	SelfStakeBucketIdx uint64
	SelfStake          *big.Int
}

Candidate represents the candidate

func (*Candidate) AddSelfStake

func (d *Candidate) AddSelfStake(amount *big.Int) error

AddSelfStake adds self stake

func (*Candidate) AddVote

func (d *Candidate) AddVote(amount *big.Int) error

AddVote adds vote

func (*Candidate) Clone

func (d *Candidate) Clone() *Candidate

Clone returns a copy

func (*Candidate) Collision added in v1.0.0

func (d *Candidate) Collision(c *Candidate) error

Collision checks collsion of 2 candidates

func (*Candidate) Deserialize

func (d *Candidate) Deserialize(buf []byte) error

Deserialize deserializes bytes to candidate

func (*Candidate) Equal added in v1.0.0

func (d *Candidate) Equal(c *Candidate) bool

Equal tests equality of 2 candidates

func (*Candidate) Serialize

func (d *Candidate) Serialize() ([]byte, error)

Serialize serializes candidate to bytes

func (*Candidate) SubSelfStake

func (d *Candidate) SubSelfStake(amount *big.Int) error

SubSelfStake subtracts self stake

func (*Candidate) SubVote

func (d *Candidate) SubVote(amount *big.Int) error

SubVote subtracts vote

func (*Candidate) Validate added in v1.0.0

func (d *Candidate) Validate() error

Validate does the sanity check

type CandidateCenter

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

CandidateCenter is a struct to manage the candidates

func NewCandidateCenter

func NewCandidateCenter(all CandidateList) (*CandidateCenter, error)

NewCandidateCenter creates an instance of CandidateCenter

func (*CandidateCenter) All

func (m *CandidateCenter) All() CandidateList

All returns all candidates in candidate center

func (CandidateCenter) Base added in v1.0.0

func (m CandidateCenter) Base() *CandidateCenter

Base returns the confirmed base state

func (*CandidateCenter) Commit added in v1.0.0

func (m *CandidateCenter) Commit() error

Commit writes the change into base

func (*CandidateCenter) ContainsName

func (m *CandidateCenter) ContainsName(name string) bool

ContainsName returns true if the map contains the candidate by name

func (*CandidateCenter) ContainsOperator

func (m *CandidateCenter) ContainsOperator(operator address.Address) bool

ContainsOperator returns true if the map contains the candidate by operator

func (*CandidateCenter) ContainsOwner

func (m *CandidateCenter) ContainsOwner(owner address.Address) bool

ContainsOwner returns true if the map contains the candidate by owner

func (*CandidateCenter) ContainsSelfStakingBucket

func (m *CandidateCenter) ContainsSelfStakingBucket(index uint64) bool

ContainsSelfStakingBucket returns true if the map contains the self staking bucket index

func (*CandidateCenter) Delta added in v1.0.0

func (m *CandidateCenter) Delta() CandidateList

Delta exports the pending changes

func (*CandidateCenter) GetByName

func (m *CandidateCenter) GetByName(name string) *Candidate

GetByName returns the candidate by name

func (*CandidateCenter) GetByOwner

func (m *CandidateCenter) GetByOwner(owner address.Address) *Candidate

GetByOwner returns the candidate by owner

func (*CandidateCenter) GetBySelfStakingIndex

func (m *CandidateCenter) GetBySelfStakingIndex(index uint64) *Candidate

GetBySelfStakingIndex returns the candidate by self-staking index

func (*CandidateCenter) LegacyCommit added in v1.9.0

func (m *CandidateCenter) LegacyCommit() error

LegacyCommit writes the change into base with legacy logic

func (*CandidateCenter) SetDelta added in v1.0.0

func (m *CandidateCenter) SetDelta(l CandidateList) error

SetDelta sets the delta

func (*CandidateCenter) Size

func (m *CandidateCenter) Size() int

Size returns number of candidates

func (*CandidateCenter) Sync added in v1.1.0

Sync syncs the data from state manager

func (*CandidateCenter) Upsert

func (m *CandidateCenter) Upsert(d *Candidate) error

Upsert adds a candidate into map, overwrites if already exist

type CandidateGet added in v1.8.0

type CandidateGet interface {
	// contains filtered or unexported methods
}

CandidateGet related to obtaining Candidate

type CandidateList

type CandidateList []*Candidate

CandidateList is a list of candidates which is sortable

func (*CandidateList) Deserialize

func (l *CandidateList) Deserialize(buf []byte) error

Deserialize deserializes bytes to list of candidates

func (CandidateList) Len

func (l CandidateList) Len() int

func (CandidateList) Less

func (l CandidateList) Less(i, j int) bool

func (CandidateList) Serialize added in v1.0.0

func (l CandidateList) Serialize() ([]byte, error)

Serialize serializes candidate to bytes

func (CandidateList) Swap

func (l CandidateList) Swap(i, j int)

type CandidateSet added in v1.8.0

type CandidateSet interface {
	// contains filtered or unexported methods
}

CandidateSet related to setting candidates

type CandidateStateManager added in v1.0.0

type CandidateStateManager interface {
	BucketSet
	BucketGetByIndex
	CandidateSet
	// candidate and bucket pool related
	DirtyView() *ViewData
	ContainsName(string) bool
	ContainsOwner(address.Address) bool
	ContainsOperator(address.Address) bool
	ContainsSelfStakingBucket(uint64) bool
	GetByName(string) *Candidate
	GetByOwner(address.Address) *Candidate
	Upsert(*Candidate) error
	CreditBucketPool(*big.Int) error
	DebitBucketPool(*big.Int, bool) error
	Commit(context.Context) error
	SM() protocol.StateManager
	SR() protocol.StateReader
}

CandidateStateManager is candidate state manager on top of StateManager

func NewCandidateStateManager added in v1.0.0

func NewCandidateStateManager(sm protocol.StateManager, enableSMStorage bool) (CandidateStateManager, error)

NewCandidateStateManager returns a new CandidateStateManager instance

type CandidateStateReader added in v1.1.0

type CandidateStateReader interface {
	BucketGet
	CandidateGet
	ReadState
	Height() uint64
	SR() protocol.StateReader
	BaseView() *ViewData
	NewBucketPool(enableSMStorage bool) (*BucketPool, error)
	GetCandidateByName(string) *Candidate
	GetCandidateByOwner(address.Address) *Candidate
	AllCandidates() CandidateList
	TotalStakedAmount() *big.Int
	ActiveBucketsCount() uint64
	ContainsSelfStakingBucket(index uint64) bool
}

CandidateStateReader contains candidate center and bucket pool

func ConstructBaseView added in v1.1.0

func ConstructBaseView(sr protocol.StateReader) (CandidateStateReader, error)

ConstructBaseView returns a candidate state reader that reflects the base view it will be used read-only

type CandidatesBucketsIndexer added in v1.1.0

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

CandidatesBucketsIndexer is an indexer to store candidates by given height

func NewStakingCandidatesBucketsIndexer added in v1.1.0

func NewStakingCandidatesBucketsIndexer(kv db.KVStoreForRangeIndex) (*CandidatesBucketsIndexer, error)

NewStakingCandidatesBucketsIndexer creates a new StakingCandidatesIndexer

func (*CandidatesBucketsIndexer) GetBuckets added in v1.1.0

func (cbi *CandidatesBucketsIndexer) GetBuckets(height uint64, offset, limit uint32) (*iotextypes.VoteBucketList, uint64, error)

GetBuckets gets vote buckets from indexer given epoch start height

func (*CandidatesBucketsIndexer) GetCandidates added in v1.1.0

func (cbi *CandidatesBucketsIndexer) GetCandidates(height uint64, offset, limit uint32) (*iotextypes.CandidateListV2, uint64, error)

GetCandidates gets candidates from indexer given epoch start height

func (*CandidatesBucketsIndexer) PutBuckets added in v1.1.0

func (cbi *CandidatesBucketsIndexer) PutBuckets(height uint64, buckets *iotextypes.VoteBucketList) error

PutBuckets puts vote buckets into indexer

func (*CandidatesBucketsIndexer) PutCandidates added in v1.1.0

func (cbi *CandidatesBucketsIndexer) PutCandidates(height uint64, candidates *iotextypes.CandidateListV2) error

PutCandidates puts candidates into indexer

func (*CandidatesBucketsIndexer) Start added in v1.1.0

Start starts the indexer

func (*CandidatesBucketsIndexer) Stop added in v1.1.0

Stop stops the indexer

type CandidiateStateCommon added in v1.14.0

type CandidiateStateCommon interface {
	ContainsSelfStakingBucket(uint64) bool
	SR() protocol.StateReader
}

CandidiateStateCommon is the common interface for candidate state manager and reader

type Configuration

type Configuration struct {
	VoteWeightCalConsts              genesis.VoteWeightCalConsts
	RegistrationConsts               RegistrationConsts
	WithdrawWaitingPeriod            time.Duration
	MinStakeAmount                   *big.Int
	BootstrapCandidates              []genesis.BootstrapCandidate
	PersistStakingPatchBlock         uint64
	EndorsementWithdrawWaitingBlocks uint64
}

Configuration is the staking protocol configuration.

type ContractStakingBucketType added in v1.11.0

type ContractStakingBucketType struct {
	Amount      *big.Int
	Duration    uint64 // block numbers
	ActivatedAt uint64 // block height
}

ContractStakingBucketType defines the type of contract staking bucket

func (*ContractStakingBucketType) Clone added in v1.11.0

Clone clones the bucket type

func (*ContractStakingBucketType) Deserialize added in v1.11.0

func (bt *ContractStakingBucketType) Deserialize(b []byte) error

Deserialize deserializes the bucket type

func (*ContractStakingBucketType) Serialize added in v1.11.0

func (bt *ContractStakingBucketType) Serialize() []byte

Serialize serializes the bucket type

type ContractStakingIndexer added in v1.11.0

type ContractStakingIndexer interface {
	// CandidateVotes returns the total staked votes of a candidate
	// candidate identified by owner address
	CandidateVotes(ctx context.Context, ownerAddr address.Address, height uint64) (*big.Int, error)
	// Buckets returns active buckets
	Buckets(height uint64) ([]*VoteBucket, error)
	// BucketsByIndices returns active buckets by indices
	BucketsByIndices([]uint64, uint64) ([]*VoteBucket, error)
	// BucketsByCandidate returns active buckets by candidate
	BucketsByCandidate(ownerAddr address.Address, height uint64) ([]*VoteBucket, error)
	// TotalBucketCount returns the total number of buckets including burned buckets
	TotalBucketCount(height uint64) (uint64, error)
	// BucketTypes returns the active bucket types
	BucketTypes(height uint64) ([]*ContractStakingBucketType, error)
}

ContractStakingIndexer defines the interface of contract staking reader

type DepositGas

type DepositGas func(ctx context.Context, sm protocol.StateManager, amount *big.Int) (*action.TransactionLog, error)

DepositGas deposits gas to some pool

type Endorsement added in v1.13.0

type Endorsement struct {
	ExpireHeight uint64
}

Endorsement is a struct that contains the expire height of the Endorsement

func (*Endorsement) Deserialize added in v1.13.0

func (e *Endorsement) Deserialize(buf []byte) error

Deserialize deserializes bytes to endorsement

func (*Endorsement) Serialize added in v1.13.0

func (e *Endorsement) Serialize() ([]byte, error)

Serialize serializes endorsement to bytes

func (*Endorsement) Status added in v1.13.0

func (e *Endorsement) Status(height uint64) EndorsementStatus

Status returns the status of the endorsement

type EndorsementStateManager added in v1.14.0

type EndorsementStateManager struct {
	protocol.StateManager
	*EndorsementStateReader
}

EndorsementStateManager defines the interface of endorsement state manager

func NewEndorsementStateManager added in v1.14.0

func NewEndorsementStateManager(sm protocol.StateManager) *EndorsementStateManager

NewEndorsementStateManager creates a new endorsement state manager

func (*EndorsementStateManager) Put added in v1.14.0

func (esm *EndorsementStateManager) Put(bucketIndex uint64, endorse *Endorsement) error

Put puts the endorsement of a bucket

type EndorsementStateReader added in v1.14.0

type EndorsementStateReader struct {
	protocol.StateReader
}

EndorsementStateReader defines the interface of endorsement state reader

func NewEndorsementStateReader added in v1.14.0

func NewEndorsementStateReader(sr protocol.StateReader) *EndorsementStateReader

NewEndorsementStateReader creates a new endorsement state reader

func (*EndorsementStateReader) Get added in v1.14.0

func (esr *EndorsementStateReader) Get(bucketIndex uint64) (*Endorsement, error)

Get gets the endorsement of a bucket

func (*EndorsementStateReader) Status added in v1.14.0

func (esr *EndorsementStateReader) Status(bucketIndex, height uint64) (EndorsementStatus, error)

Status returns the status of the endorsement of a bucket at a certain height If the endorsement does not exist, it returns EndorseExpired

type EndorsementStatus added in v1.13.0

type EndorsementStatus uint8

EndorsementStatus is a uint8 that represents the status of the endorsement

func (EndorsementStatus) String added in v1.14.0

func (s EndorsementStatus) String() string

String returns a human-readable string of the endorsement status

type MockContractStakingIndexer added in v1.11.0

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

MockContractStakingIndexer is a mock of ContractStakingIndexer interface.

func NewMockContractStakingIndexer added in v1.11.0

func NewMockContractStakingIndexer(ctrl *gomock.Controller) *MockContractStakingIndexer

NewMockContractStakingIndexer creates a new mock instance.

func (*MockContractStakingIndexer) BucketTypes added in v1.11.0

BucketTypes mocks base method.

func (*MockContractStakingIndexer) Buckets added in v1.11.0

func (m *MockContractStakingIndexer) Buckets(height uint64) ([]*VoteBucket, error)

Buckets mocks base method.

func (*MockContractStakingIndexer) BucketsByCandidate added in v1.11.0

func (m *MockContractStakingIndexer) BucketsByCandidate(ownerAddr address.Address, height uint64) ([]*VoteBucket, error)

BucketsByCandidate mocks base method.

func (*MockContractStakingIndexer) BucketsByIndices added in v1.11.0

func (m *MockContractStakingIndexer) BucketsByIndices(arg0 []uint64, arg1 uint64) ([]*VoteBucket, error)

BucketsByIndices mocks base method.

func (*MockContractStakingIndexer) CandidateVotes added in v1.11.0

func (m *MockContractStakingIndexer) CandidateVotes(ctx context.Context, ownerAddr address.Address, height uint64) (*big.Int, error)

CandidateVotes mocks base method.

func (*MockContractStakingIndexer) EXPECT added in v1.11.0

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockContractStakingIndexer) TotalBucketCount added in v1.11.0

func (m *MockContractStakingIndexer) TotalBucketCount(height uint64) (uint64, error)

TotalBucketCount mocks base method.

type MockContractStakingIndexerMockRecorder added in v1.11.0

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

MockContractStakingIndexerMockRecorder is the mock recorder for MockContractStakingIndexer.

func (*MockContractStakingIndexerMockRecorder) BucketTypes added in v1.11.0

func (mr *MockContractStakingIndexerMockRecorder) BucketTypes(height interface{}) *gomock.Call

BucketTypes indicates an expected call of BucketTypes.

func (*MockContractStakingIndexerMockRecorder) Buckets added in v1.11.0

func (mr *MockContractStakingIndexerMockRecorder) Buckets(height interface{}) *gomock.Call

Buckets indicates an expected call of Buckets.

func (*MockContractStakingIndexerMockRecorder) BucketsByCandidate added in v1.11.0

func (mr *MockContractStakingIndexerMockRecorder) BucketsByCandidate(ownerAddr, height interface{}) *gomock.Call

BucketsByCandidate indicates an expected call of BucketsByCandidate.

func (*MockContractStakingIndexerMockRecorder) BucketsByIndices added in v1.11.0

func (mr *MockContractStakingIndexerMockRecorder) BucketsByIndices(arg0, arg1 interface{}) *gomock.Call

BucketsByIndices indicates an expected call of BucketsByIndices.

func (*MockContractStakingIndexerMockRecorder) CandidateVotes added in v1.11.0

func (mr *MockContractStakingIndexerMockRecorder) CandidateVotes(ctx, ownerAddr, height interface{}) *gomock.Call

CandidateVotes indicates an expected call of CandidateVotes.

func (*MockContractStakingIndexerMockRecorder) TotalBucketCount added in v1.11.0

func (mr *MockContractStakingIndexerMockRecorder) TotalBucketCount(height interface{}) *gomock.Call

TotalBucketCount indicates an expected call of TotalBucketCount.

type PatchStore added in v1.8.4

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

PatchStore is the patch store of staking protocol

func NewPatchStore added in v1.8.4

func NewPatchStore(dir string) *PatchStore

NewPatchStore creates a new staking patch store

func (*PatchStore) Read added in v1.8.4

Read reads CandidateList by name and CandidateList by operator of given height

type Protocol

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

Protocol defines the protocol of handling staking

func FindProtocol added in v1.8.0

func FindProtocol(registry *protocol.Registry) *Protocol

FindProtocol return a registered protocol from registry

func NewProtocol

func NewProtocol(
	depositGas DepositGas,
	cfg *BuilderConfig,
	candBucketsIndexer *CandidatesBucketsIndexer,
	contractStakingIndexer ContractStakingIndexer,
	correctCandsHeight uint64,
	reviseHeights ...uint64,
) (*Protocol, error)

NewProtocol instantiates the protocol of staking

func (*Protocol) ActiveCandidates

func (p *Protocol) ActiveCandidates(ctx context.Context, sr protocol.StateReader, height uint64) (state.CandidateList, error)

ActiveCandidates returns all active candidates in candidate center

func (*Protocol) Commit added in v1.0.0

func (p *Protocol) Commit(ctx context.Context, sm protocol.StateManager) error

Commit commits the last change

func (*Protocol) CreateGenesisStates

func (p *Protocol) CreateGenesisStates(
	ctx context.Context,
	sm protocol.StateManager,
) error

CreateGenesisStates is used to setup BootstrapCandidates from genesis config.

func (*Protocol) CreatePreStates added in v1.1.0

func (p *Protocol) CreatePreStates(ctx context.Context, sm protocol.StateManager) error

CreatePreStates updates state manager

func (*Protocol) ForceRegister

func (p *Protocol) ForceRegister(r *protocol.Registry) error

ForceRegister registers the protocol with a unique ID and force replacing the previous protocol if it exists

func (*Protocol) Handle

Handle handles a staking message

func (*Protocol) Name added in v1.0.0

func (p *Protocol) Name() string

Name returns the name of protocol

func (*Protocol) PreCommit added in v1.8.4

func (p *Protocol) PreCommit(ctx context.Context, sm protocol.StateManager) error

PreCommit preforms pre-commit

func (*Protocol) ReadState

func (p *Protocol) ReadState(ctx context.Context, sr protocol.StateReader, method []byte, args ...[]byte) ([]byte, uint64, error)

ReadState read the state on blockchain via protocol

func (*Protocol) Register

func (p *Protocol) Register(r *protocol.Registry) error

Register registers the protocol with a unique ID

func (*Protocol) Start

func (p *Protocol) Start(ctx context.Context, sr protocol.StateReader) (interface{}, error)

Start starts the protocol

func (*Protocol) Validate

func (p *Protocol) Validate(ctx context.Context, act action.Action, sr protocol.StateReader) error

Validate validates a staking message

type ReadState added in v1.8.0

type ReadState interface {
	// contains filtered or unexported methods
}

ReadState related to read bucket and candidate by request

type ReceiptError added in v1.0.0

type ReceiptError interface {
	Error() string
	ReceiptStatus() uint64
}

ReceiptError indicates a non-critical error with corresponding receipt status

type RegistrationConsts

type RegistrationConsts struct {
	Fee          *big.Int
	MinSelfStake *big.Int
}

RegistrationConsts are the registration fee and min self stake

type ViewData added in v1.1.0

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

ViewData is the data that need to be stored in protocol's view

func CreateBaseView added in v1.1.0

func CreateBaseView(sr protocol.StateReader, enableSMStorage bool) (*ViewData, uint64, error)

CreateBaseView creates the base view from state reader

type VoteBucket

type VoteBucket struct {
	Index            uint64
	Candidate        address.Address
	Owner            address.Address
	StakedAmount     *big.Int
	StakedDuration   time.Duration
	CreateTime       time.Time
	StakeStartTime   time.Time
	UnstakeStartTime time.Time
	AutoStake        bool
	ContractAddress  string // Corresponding contract address; Empty if it's native staking
	// only used for contract staking buckets
	StakedDurationBlockNumber uint64
	CreateBlockHeight         uint64
	StakeStartBlockHeight     uint64
	UnstakeStartBlockHeight   uint64
}

VoteBucket represents a vote

func NewVoteBucket

func NewVoteBucket(cand, owner address.Address, amount *big.Int, duration uint32, ctime time.Time, autoStake bool) *VoteBucket

NewVoteBucket creates a new vote bucket

func (*VoteBucket) Deserialize

func (vb *VoteBucket) Deserialize(buf []byte) error

Deserialize deserializes bytes into bucket

func (*VoteBucket) Serialize

func (vb *VoteBucket) Serialize() ([]byte, error)

Serialize serializes bucket into bytes

type VoteReviser added in v1.1.0

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

VoteReviser is used to recalculate candidate votes.

func NewVoteReviser added in v1.1.0

func NewVoteReviser(c genesis.VoteWeightCalConsts, correctCandsHeight uint64, reviseHeights ...uint64) *VoteReviser

NewVoteReviser creates a VoteReviser.

func (*VoteReviser) NeedRevise added in v1.1.0

func (vr *VoteReviser) NeedRevise(height uint64) bool

NeedRevise returns true if height needs revise

func (*VoteReviser) Revise added in v1.1.0

func (vr *VoteReviser) Revise(csm CandidateStateManager, height uint64) error

Revise recalculate candidate votes on preset revising height.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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