staking

package
v2.0.6 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2024 License: Apache-2.0 Imports: 39 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 (
	// StakingContractJSONABI is the abi json of staking contract
	//go:embed contract_staking_abi_v2.json
	StakingContractJSONABI string
	// StakingContractABI is the abi of staking contract
	StakingContractABI abi.ABI
)
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

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

AddrKeyWithPrefix returns address key with prefix

func BucketIndexFromReceiptLog

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

BucketIndexFromReceiptLog extracts bucket index from log

func CalculateVoteWeight

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

CalculateVoteWeight calculates the vote weight

func ProtocolAddr

func ProtocolAddr() address.Address

ProtocolAddr returns the address generated from protocol id

Types

type BucketGet

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

BucketGet related to obtaining bucket

type BucketGetByIndex

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

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

BucketPool implements the bucket pool

func (*BucketPool) Commit

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

Commit is called upon workingset commit

func (*BucketPool) Copy

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

Copy returns a copy of the bucket pool

func (*BucketPool) Count

func (bp *BucketPool) Count() uint64

Count returns the total number of buckets in bucket pool

func (*BucketPool) CreditPool

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

CreditPool subtracts staked amount out of the pool

func (*BucketPool) DebitPool

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

DebitPool adds staked amount into the pool

func (*BucketPool) Sync

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

Sync syncs the data from state manager

func (*BucketPool) Total

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

Total returns the total amount staked in bucket pool

type BucketSet

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

BucketSet related to setting bucket

type BuilderConfig

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

BuilderConfig returns the configuration of the builder

type Candidate

type Candidate struct {
	Owner              address.Address
	Operator           address.Address
	Reward             address.Address
	Identifier         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

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

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

Equal tests equality of 2 candidates

func (*Candidate) GetIdentifier

func (d *Candidate) GetIdentifier() address.Address

TODO: rename to ID GetIdentifier returns the identifier

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

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

func (m CandidateCenter) Base() *CandidateCenter

Base returns the confirmed base state

func (*CandidateCenter) Commit

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

func (m *CandidateCenter) Delta() CandidateList

Delta exports the pending changes

func (*CandidateCenter) GetByIdentifier

func (m *CandidateCenter) GetByIdentifier(identifier address.Address) *Candidate

GetByIdentifier returns the candidate by identifier

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

func (m *CandidateCenter) LegacyCommit() error

LegacyCommit writes the change into base with legacy logic

func (*CandidateCenter) SetDelta

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

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

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

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

Serialize serializes candidate to bytes

func (CandidateList) Swap

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

type CandidateSet

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

CandidateSet related to setting candidates

type CandidateStateManager

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
	GetByIdentifier(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

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

NewCandidateStateManager returns a new CandidateStateManager instance

type CandidateStateReader

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
	GetByIdentifier(address.Address) *Candidate
}

CandidateStateReader contains candidate center and bucket pool

func ConstructBaseView

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

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

CandidatesBucketsIndexer is an indexer to store candidates by given height

func NewStakingCandidatesBucketsIndexer

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

NewStakingCandidatesBucketsIndexer creates a new StakingCandidatesIndexer

func (*CandidatesBucketsIndexer) GetBuckets

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

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

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

PutBuckets puts vote buckets into indexer

func (*CandidatesBucketsIndexer) PutCandidates

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

PutCandidates puts candidates into indexer

func (*CandidatesBucketsIndexer) Start

Start starts the indexer

func (*CandidatesBucketsIndexer) Stop

Stop stops the indexer

type CandidiateStateCommon

type CandidiateStateCommon interface {
	ContainsSelfStakingBucket(uint64) bool
	GetByIdentifier(address.Address) *Candidate
	SR() protocol.StateReader
	BucketGetByIndex
}

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
	MigrateContractAddress           string
}

Configuration is the staking protocol configuration.

type ContractStakingBucketType

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

Clone clones the bucket type

func (*ContractStakingBucketType) Deserialize

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

Deserialize deserializes the bucket type

func (*ContractStakingBucketType) Serialize

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

Serialize serializes the bucket type

type ContractStakingIndexer

type ContractStakingIndexer interface {
	Height() (uint64, 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)
	// ContractAddress returns the contract address
	ContractAddress() string
}

ContractStakingIndexer defines the interface of contract staking reader

func NewDelayTolerantIndexer added in v2.0.6

func NewDelayTolerantIndexer(indexer ContractStakingIndexer, duration time.Duration) ContractStakingIndexer

NewDelayTolerantIndexer creates a delay tolerant indexer

type ContractStakingIndexerWithBucketType

type ContractStakingIndexerWithBucketType interface {
	ContractStakingIndexer
	// BucketTypes returns the active bucket types
	BucketTypes(height uint64) ([]*ContractStakingBucketType, error)
}

ContractStakingIndexerWithBucketType defines the interface of contract staking reader with bucket type

func NewDelayTolerantIndexerWithBucketType added in v2.0.6

func NewDelayTolerantIndexerWithBucketType(indexer ContractStakingIndexerWithBucketType, duration time.Duration) ContractStakingIndexerWithBucketType

NewDelayTolerantIndexerWithBucketType creates a delay tolerant indexer with bucket type

type DepositGas added in v2.0.6

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

DepositGas deposits gas to some pool

type Endorsement

type Endorsement struct {
	// ExpireHeight is the height an endorsement is expired in legacy mode and it is the earliest height that can revoke the endorsement in new mode
	ExpireHeight uint64
}

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

func (*Endorsement) Deserialize

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

Deserialize deserializes bytes to endorsement

func (*Endorsement) LegacyStatus

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

func (*Endorsement) Serialize

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

Serialize serializes endorsement to bytes

func (*Endorsement) Status

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

Status returns the status of the endorsement

type EndorsementStateManager

type EndorsementStateManager struct {
	protocol.StateManager
	*EndorsementStateReader
}

EndorsementStateManager defines the interface of endorsement state manager

func NewEndorsementStateManager

func NewEndorsementStateManager(sm protocol.StateManager) *EndorsementStateManager

NewEndorsementStateManager creates a new endorsement state manager

func (*EndorsementStateManager) Delete

func (esm *EndorsementStateManager) Delete(bucketIndex uint64) error

Delete deletes the endorsement of a bucket

func (*EndorsementStateManager) Put

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

Put puts the endorsement of a bucket

type EndorsementStateReader

type EndorsementStateReader struct {
	protocol.StateReader
}

EndorsementStateReader defines the interface of endorsement state reader

func NewEndorsementStateReader

func NewEndorsementStateReader(sr protocol.StateReader) *EndorsementStateReader

NewEndorsementStateReader creates a new endorsement state reader

func (*EndorsementStateReader) Get

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

Get gets the endorsement of a bucket

func (*EndorsementStateReader) Status

func (esr *EndorsementStateReader) Status(ctx protocol.FeatureCtx, 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

type EndorsementStatus uint8

EndorsementStatus is a uint8 that represents the status of the endorsement

func (EndorsementStatus) String

func (s EndorsementStatus) String() string

String returns a human-readable string of the endorsement status

type HelperCtx

type HelperCtx struct {
	BlockInterval func(uint64) time.Duration
	DepositGas    DepositGas
}

HelperCtx is the helper context for staking protocol

type MockContractStakingIndexer

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

MockContractStakingIndexer is a mock of ContractStakingIndexer interface.

func NewMockContractStakingIndexer

func NewMockContractStakingIndexer(ctrl *gomock.Controller) *MockContractStakingIndexer

NewMockContractStakingIndexer creates a new mock instance.

func (*MockContractStakingIndexer) Buckets

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

Buckets mocks base method.

func (*MockContractStakingIndexer) BucketsByCandidate

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

BucketsByCandidate mocks base method.

func (*MockContractStakingIndexer) BucketsByIndices

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

BucketsByIndices mocks base method.

func (*MockContractStakingIndexer) ContractAddress

func (m *MockContractStakingIndexer) ContractAddress() string

ContractAddress mocks base method.

func (*MockContractStakingIndexer) EXPECT

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

func (*MockContractStakingIndexer) Height added in v2.0.6

func (m *MockContractStakingIndexer) Height() (uint64, error)

Height mocks base method.

func (*MockContractStakingIndexer) TotalBucketCount

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

TotalBucketCount mocks base method.

type MockContractStakingIndexerMockRecorder

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

MockContractStakingIndexerMockRecorder is the mock recorder for MockContractStakingIndexer.

func (*MockContractStakingIndexerMockRecorder) Buckets

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

Buckets indicates an expected call of Buckets.

func (*MockContractStakingIndexerMockRecorder) BucketsByCandidate

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

BucketsByCandidate indicates an expected call of BucketsByCandidate.

func (*MockContractStakingIndexerMockRecorder) BucketsByIndices

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

BucketsByIndices indicates an expected call of BucketsByIndices.

func (*MockContractStakingIndexerMockRecorder) ContractAddress

func (mr *MockContractStakingIndexerMockRecorder) ContractAddress() *gomock.Call

ContractAddress indicates an expected call of ContractAddress.

func (*MockContractStakingIndexerMockRecorder) Height added in v2.0.6

Height indicates an expected call of Height.

func (*MockContractStakingIndexerMockRecorder) TotalBucketCount

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

TotalBucketCount indicates an expected call of TotalBucketCount.

type MockContractStakingIndexerWithBucketType

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

MockContractStakingIndexerWithBucketType is a mock of ContractStakingIndexerWithBucketType interface.

func NewMockContractStakingIndexerWithBucketType

func NewMockContractStakingIndexerWithBucketType(ctrl *gomock.Controller) *MockContractStakingIndexerWithBucketType

NewMockContractStakingIndexerWithBucketType creates a new mock instance.

func (*MockContractStakingIndexerWithBucketType) BucketTypes

BucketTypes mocks base method.

func (*MockContractStakingIndexerWithBucketType) Buckets

Buckets mocks base method.

func (*MockContractStakingIndexerWithBucketType) BucketsByCandidate

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

BucketsByCandidate mocks base method.

func (*MockContractStakingIndexerWithBucketType) BucketsByIndices

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

BucketsByIndices mocks base method.

func (*MockContractStakingIndexerWithBucketType) ContractAddress

func (m *MockContractStakingIndexerWithBucketType) ContractAddress() string

ContractAddress mocks base method.

func (*MockContractStakingIndexerWithBucketType) EXPECT

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

func (*MockContractStakingIndexerWithBucketType) Height added in v2.0.6

Height mocks base method.

func (*MockContractStakingIndexerWithBucketType) TotalBucketCount

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

TotalBucketCount mocks base method.

type MockContractStakingIndexerWithBucketTypeMockRecorder

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

MockContractStakingIndexerWithBucketTypeMockRecorder is the mock recorder for MockContractStakingIndexerWithBucketType.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) BucketTypes

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

BucketTypes indicates an expected call of BucketTypes.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) Buckets

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

Buckets indicates an expected call of Buckets.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) BucketsByCandidate

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

BucketsByCandidate indicates an expected call of BucketsByCandidate.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) BucketsByIndices

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

BucketsByIndices indicates an expected call of BucketsByIndices.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) ContractAddress

ContractAddress indicates an expected call of ContractAddress.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) Height added in v2.0.6

Height indicates an expected call of Height.

func (*MockContractStakingIndexerWithBucketTypeMockRecorder) TotalBucketCount

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

TotalBucketCount indicates an expected call of TotalBucketCount.

type PatchStore

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

PatchStore is the patch store of staking protocol

func NewPatchStore

func NewPatchStore(dir string) *PatchStore

NewPatchStore creates a new staking patch store

func (*PatchStore) Read

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

func FindProtocol(registry *protocol.Registry) *Protocol

FindProtocol return a registered protocol from registry

func NewProtocol

func NewProtocol(
	helperCtx HelperCtx,
	cfg *BuilderConfig,
	candBucketsIndexer *CandidatesBucketsIndexer,
	contractStakingIndexer ContractStakingIndexerWithBucketType,
	contractStakingIndexerV2 ContractStakingIndexer,
) (*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

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

Commit commits the last change

func (*Protocol) ConstructExecution

func (p *Protocol) ConstructExecution(ctx context.Context, act *action.MigrateStake, sr protocol.StateReader) (*action.Execution, error)

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

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

func (p *Protocol) Name() string

Name returns the name of protocol

func (*Protocol) PreCommit

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

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

ReadState related to read bucket and candidate by request

type ReceiptError

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 ReviseConfig

type ReviseConfig struct {
	VoteWeight                  genesis.VoteWeightCalConsts
	ReviseHeights               []uint64
	CorrectCandsHeight          uint64
	SelfStakeBucketReviseHeight uint64
}

VoteReviser is used to recalculate candidate votes.

type ViewData

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

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

func CreateBaseView

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

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

VoteReviser is used to recalculate candidate votes.

func NewVoteReviser

func NewVoteReviser(cfg ReviseConfig) *VoteReviser

NewVoteReviser creates a VoteReviser.

func (*VoteReviser) NeedRevise

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

NeedRevise returns true if height needs revise

func (*VoteReviser) Revise

func (vr *VoteReviser) Revise(ctx protocol.FeatureCtx, csm CandidateStateManager, height uint64) error

Revise recalculate candidate votes on preset revising height.

Directories

Path Synopsis
v1
v2
v3

Jump to

Keyboard shortcuts

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