Documentation ¶
Overview ¶
Package staking is a generated GoMock package.
Index ¶
- Constants
- Variables
- func AddrKeyWithPrefix(addr address.Address, prefix byte) []byte
- func BucketIndexFromReceiptLog(log *iotextypes.Log) (uint64, bool)
- func CalculateVoteWeight(c genesis.VoteWeightCalConsts, v *VoteBucket, selfStake bool) *big.Int
- func ProtocolAddr() address.Address
- type BucketGet
- type BucketGetByIndex
- type BucketIndices
- type BucketPool
- func (bp *BucketPool) Commit(sr protocol.StateReader) error
- func (bp *BucketPool) Copy(enableSMStorage bool) *BucketPool
- func (bp *BucketPool) Count() uint64
- func (bp *BucketPool) CreditPool(sm protocol.StateManager, amount *big.Int) error
- func (bp *BucketPool) DebitPool(sm protocol.StateManager, amount *big.Int, newBucket bool) error
- func (bp *BucketPool) Sync(sm protocol.StateManager) error
- func (bp *BucketPool) Total() *big.Int
- type BucketSet
- type BuilderConfig
- type Candidate
- func (d *Candidate) AddSelfStake(amount *big.Int) error
- func (d *Candidate) AddVote(amount *big.Int) error
- func (d *Candidate) Clone() *Candidate
- func (d *Candidate) Collision(c *Candidate) error
- func (d *Candidate) Deserialize(buf []byte) error
- func (d *Candidate) Equal(c *Candidate) bool
- func (d *Candidate) GetIdentifier() address.Address
- func (d *Candidate) Serialize() ([]byte, error)
- func (d *Candidate) SubSelfStake(amount *big.Int) error
- func (d *Candidate) SubVote(amount *big.Int) error
- func (d *Candidate) Validate() error
- type CandidateCenter
- func (m *CandidateCenter) All() CandidateList
- func (m CandidateCenter) Base() *CandidateCenter
- func (m *CandidateCenter) Commit() error
- func (m *CandidateCenter) ContainsName(name string) bool
- func (m *CandidateCenter) ContainsOperator(operator address.Address) bool
- func (m *CandidateCenter) ContainsOwner(owner address.Address) bool
- func (m *CandidateCenter) ContainsSelfStakingBucket(index uint64) bool
- func (m *CandidateCenter) Delta() CandidateList
- func (m *CandidateCenter) GetByIdentifier(identifier address.Address) *Candidate
- func (m *CandidateCenter) GetByName(name string) *Candidate
- func (m *CandidateCenter) GetByOwner(owner address.Address) *Candidate
- func (m *CandidateCenter) GetBySelfStakingIndex(index uint64) *Candidate
- func (m *CandidateCenter) LegacyCommit() error
- func (m *CandidateCenter) SetDelta(l CandidateList) error
- func (m *CandidateCenter) Size() int
- func (m *CandidateCenter) Sync(sm protocol.StateManager) error
- func (m *CandidateCenter) Upsert(d *Candidate) error
- type CandidateGet
- type CandidateList
- type CandidateSet
- type CandidateStateManager
- type CandidateStateReader
- type CandidatesBucketsIndexer
- func (cbi *CandidatesBucketsIndexer) GetBuckets(height uint64, offset, limit uint32) (*iotextypes.VoteBucketList, uint64, error)
- func (cbi *CandidatesBucketsIndexer) GetCandidates(height uint64, offset, limit uint32) (*iotextypes.CandidateListV2, uint64, error)
- func (cbi *CandidatesBucketsIndexer) PutBuckets(height uint64, buckets *iotextypes.VoteBucketList) error
- func (cbi *CandidatesBucketsIndexer) PutCandidates(height uint64, candidates *iotextypes.CandidateListV2) error
- func (cbi *CandidatesBucketsIndexer) Start(ctx context.Context) error
- func (cbi *CandidatesBucketsIndexer) Stop(ctx context.Context) error
- type CandidiateStateCommon
- type Configuration
- type ContractStakingBucketType
- type ContractStakingIndexer
- type ContractStakingIndexerWithBucketType
- type Endorsement
- type EndorsementStateManager
- type EndorsementStateReader
- type EndorsementStatus
- type HelperCtx
- type MockContractStakingIndexer
- func (m *MockContractStakingIndexer) Buckets(height uint64) ([]*VoteBucket, error)
- func (m *MockContractStakingIndexer) BucketsByCandidate(ownerAddr address.Address, height uint64) ([]*VoteBucket, error)
- func (m *MockContractStakingIndexer) BucketsByIndices(arg0 []uint64, arg1 uint64) ([]*VoteBucket, error)
- func (m *MockContractStakingIndexer) ContractAddress() string
- func (m *MockContractStakingIndexer) EXPECT() *MockContractStakingIndexerMockRecorder
- func (m *MockContractStakingIndexer) Height() (uint64, error)
- func (m *MockContractStakingIndexer) TotalBucketCount(height uint64) (uint64, error)
- type MockContractStakingIndexerMockRecorder
- func (mr *MockContractStakingIndexerMockRecorder) Buckets(height interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerMockRecorder) BucketsByCandidate(ownerAddr, height interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerMockRecorder) BucketsByIndices(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerMockRecorder) ContractAddress() *gomock.Call
- func (mr *MockContractStakingIndexerMockRecorder) Height() *gomock.Call
- func (mr *MockContractStakingIndexerMockRecorder) TotalBucketCount(height interface{}) *gomock.Call
- type MockContractStakingIndexerWithBucketType
- func (m *MockContractStakingIndexerWithBucketType) BucketTypes(height uint64) ([]*ContractStakingBucketType, error)
- func (m *MockContractStakingIndexerWithBucketType) Buckets(height uint64) ([]*VoteBucket, error)
- func (m *MockContractStakingIndexerWithBucketType) BucketsByCandidate(ownerAddr address.Address, height uint64) ([]*VoteBucket, error)
- func (m *MockContractStakingIndexerWithBucketType) BucketsByIndices(arg0 []uint64, arg1 uint64) ([]*VoteBucket, error)
- func (m *MockContractStakingIndexerWithBucketType) ContractAddress() string
- func (m *MockContractStakingIndexerWithBucketType) EXPECT() *MockContractStakingIndexerWithBucketTypeMockRecorder
- func (m *MockContractStakingIndexerWithBucketType) Height() (uint64, error)
- func (m *MockContractStakingIndexerWithBucketType) TotalBucketCount(height uint64) (uint64, error)
- type MockContractStakingIndexerWithBucketTypeMockRecorder
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) BucketTypes(height interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) Buckets(height interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) BucketsByCandidate(ownerAddr, height interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) BucketsByIndices(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) ContractAddress() *gomock.Call
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) Height() *gomock.Call
- func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) TotalBucketCount(height interface{}) *gomock.Call
- type PatchStore
- type Protocol
- func (p *Protocol) ActiveCandidates(ctx context.Context, sr protocol.StateReader, height uint64) (state.CandidateList, error)
- func (p *Protocol) Commit(ctx context.Context, sm protocol.StateManager) error
- func (p *Protocol) ConstructExecution(ctx context.Context, act *action.MigrateStake, nonce, gas uint64, ...) (action.Envelope, error)
- func (p *Protocol) CreateGenesisStates(ctx context.Context, sm protocol.StateManager) error
- func (p *Protocol) CreatePreStates(ctx context.Context, sm protocol.StateManager) error
- func (p *Protocol) ForceRegister(r *protocol.Registry) error
- func (p *Protocol) Handle(ctx context.Context, elp action.Envelope, sm protocol.StateManager) (*action.Receipt, error)
- func (p *Protocol) Name() string
- func (p *Protocol) PreCommit(ctx context.Context, sm protocol.StateManager) error
- func (p *Protocol) ReadState(ctx context.Context, sr protocol.StateReader, method []byte, args ...[]byte) ([]byte, uint64, error)
- func (p *Protocol) Register(r *protocol.Registry) error
- func (p *Protocol) Start(ctx context.Context, sr protocol.StateReader) (interface{}, error)
- func (p *Protocol) Validate(ctx context.Context, elp action.Envelope, sr protocol.StateReader) error
- type ReadState
- type ReceiptError
- type RegistrationConsts
- type ReviseConfig
- type ViewData
- type VoteBucket
- type VoteReviser
Constants ¶
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" )
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
const ( HandleCreateStake = "createStake" HandleUnstake = "unstake" HandleWithdrawStake = "withdrawStake" HandleChangeCandidate = "changeCandidate" HandleTransferStake = "transferStake" HandleDepositToStake = "depositToStake" HandleRestake = "restake" HandleCandidateRegister = "candidateRegister" HandleCandidateUpdate = "candidateUpdate" )
constants
const (
// CandsMapNS is the bucket name to store candidate map
CandsMapNS = "CandsMap"
)
Variables ¶
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 )
var ( ErrWithdrawnBucket = errors.New("the bucket is already withdrawn") ErrEndorsementNotExist = errors.New("the endorsement does not exist") TotalBucketKey = append([]byte{_const}, []byte("totalBucket")...) )
Errors
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") ErrDurationTooHigh = errors.New("stake duration cannot exceed 1050 days") )
Errors
var (
ErrNilParameters = errors.New("parameter is nil")
)
Errors and vars
Functions ¶
func AddrKeyWithPrefix ¶
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 ¶
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 ¶
AddSelfStake adds self stake
func (*Candidate) Deserialize ¶
Deserialize deserializes bytes to candidate
func (*Candidate) GetIdentifier ¶
TODO: rename to ID GetIdentifier returns the identifier
func (*Candidate) SubSelfStake ¶
SubSelfStake subtracts self stake
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 ¶
func (m *CandidateCenter) Sync(sm protocol.StateManager) error
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
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 ¶
func (bt *ContractStakingBucketType) Clone() *ContractStakingBucketType
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 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 protocol.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 ¶
func (m *MockContractStakingIndexer) EXPECT() *MockContractStakingIndexerMockRecorder
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
func (mr *MockContractStakingIndexerMockRecorder) Height() *gomock.Call
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 ¶
func (m *MockContractStakingIndexerWithBucketType) BucketTypes(height uint64) ([]*ContractStakingBucketType, error)
BucketTypes mocks base method.
func (*MockContractStakingIndexerWithBucketType) Buckets ¶
func (m *MockContractStakingIndexerWithBucketType) Buckets(height uint64) ([]*VoteBucket, error)
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 ¶
func (m *MockContractStakingIndexerWithBucketType) EXPECT() *MockContractStakingIndexerWithBucketTypeMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockContractStakingIndexerWithBucketType) Height ¶ added in v2.0.6
func (m *MockContractStakingIndexerWithBucketType) Height() (uint64, error)
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 ¶
func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) ContractAddress() *gomock.Call
ContractAddress indicates an expected call of ContractAddress.
func (*MockContractStakingIndexerWithBucketTypeMockRecorder) Height ¶ added in v2.0.6
func (mr *MockContractStakingIndexerWithBucketTypeMockRecorder) Height() *gomock.Call
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 ¶
func (store *PatchStore) Read(height uint64) (CandidateList, CandidateList, CandidateList, error)
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 ¶
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) ConstructExecution ¶
func (*Protocol) CreateGenesisStates ¶
CreateGenesisStates is used to setup BootstrapCandidates from genesis config.
func (*Protocol) CreatePreStates ¶
CreatePreStates updates state manager
func (*Protocol) ForceRegister ¶
ForceRegister registers the protocol with a unique ID and force replacing the previous protocol if it exists
func (*Protocol) Handle ¶
func (p *Protocol) Handle(ctx context.Context, elp action.Envelope, sm protocol.StateManager) (*action.Receipt, error)
Handle handles a staking message
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
type ReadState ¶
type ReadState interface {
// contains filtered or unexported methods
}
ReadState related to read bucket and candidate by request
type ReceiptError ¶
ReceiptError indicates a non-critical error with corresponding receipt status
type RegistrationConsts ¶
RegistrationConsts are the registration fee and min self stake
type ReviseConfig ¶
type ReviseConfig struct { VoteWeight genesis.VoteWeightCalConsts ReviseHeights []uint64 CorrectCandsHeight uint64 SelfStakeBucketReviseHeight uint64 CorrectCandSelfStakeHeight 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 ¶
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.
Source Files ¶
- bucket_index.go
- bucket_pool.go
- bucket_validation.go
- builder.go
- candidate.go
- candidate_buckets_indexer.go
- candidate_center.go
- candidate_center_extra.go
- candidate_statemanager.go
- candidate_statereader.go
- contractstake_bucket_type.go
- contractstake_indexer.go
- contractstake_indexer_mock.go
- endorsement.go
- endorsement_statemanager.go
- handler_candidate_endorsement.go
- handler_candidate_selfstake.go
- handler_candidate_transfer_ownership.go
- handler_stake_migrate.go
- handlers.go
- patchstore.go
- protocol.go
- read_state.go
- receipt_log.go
- staking_statereader.go
- validations.go
- vote_bucket.go
- vote_reviser.go