Documentation ¶
Index ¶
- Constants
- Variables
- func BucketIndexFromReceiptLog(log *iotextypes.Log) (uint64, bool)
- type BucketIndices
- 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) 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
- type CandidateList
- type CandidateStateManager
- type Configuration
- type DepositGas
- 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) CreateGenesisStates(ctx context.Context, sm protocol.StateManager) error
- func (p *Protocol) ForceRegister(r *protocol.Registry) error
- func (p *Protocol) Handle(ctx context.Context, act action.Action, sm protocol.StateManager) (*action.Receipt, error)
- func (p *Protocol) Name() string
- func (p *Protocol) ReadState(ctx context.Context, sr protocol.StateReader, method []byte, args ...[]byte) ([]byte, 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, act action.Action, sr protocol.StateReader) error
- type ReceiptError
- type RegistrationConsts
- type VoteBucket
Constants ¶
const ( HandleCreateStake = "createStake" HandleUnstake = "unstake" HandleWithdrawStake = "withdrawStake" HandleChangeCandidate = "changeCandidate" HandleTransferStake = "transferStake" HandleDepositToStake = "depositToStake" HandleRestake = "restake" HandleCandidateRegister = "candidateRegister" HandleCandidateUpdate = "candidateUpdate" )
constants
const ( // StakingNameSpace is the bucket name for staking state StakingNameSpace = "Staking" // CandidateNameSpace is the bucket name for candidate state CandidateNameSpace = "Candidate" )
Variables ¶
var ( ErrTypeAssertion = errors.New("failed type assertion") TotalBucketKey = append([]byte{_const}, []byte("totalBucket")...) )
Errors
var ( ErrNilAction = errors.New("action is nil") ErrInvalidAmount = errors.New("invalid staking amount") ErrInvalidCanName = errors.New("invalid candidate name") 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") )
Errors
var (
ErrNilParameters = errors.New("parameter is nil")
)
Errors and vars
Functions ¶
func BucketIndexFromReceiptLog ¶ added in v1.0.0
func BucketIndexFromReceiptLog(log *iotextypes.Log) (uint64, bool)
BucketIndexFromReceiptLog extracts bucket index from log
Types ¶
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 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 ¶
AddSelfStake adds self stake
func (*Candidate) Deserialize ¶
Deserialize deserializes bytes to candidate
func (*Candidate) SubSelfStake ¶
SubSelfStake subtracts self stake
type CandidateCenter ¶
type CandidateCenter interface { Size() int All() CandidateList Base() CandidateCenter Delta() CandidateList SetDelta(CandidateList) error Commit() error ContainsName(string) bool ContainsOwner(address.Address) bool ContainsOperator(address.Address) bool ContainsSelfStakingBucket(uint64) bool GetByName(string) *Candidate GetByOwner(address.Address) *Candidate GetBySelfStakingIndex(uint64) *Candidate Upsert(*Candidate) error }
CandidateCenter is the candidate center
func NewCandidateCenter ¶
func NewCandidateCenter(all CandidateList) (CandidateCenter, error)
NewCandidateCenter creates an instance of candCenter
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 CandidateStateManager ¶ added in v1.0.0
type CandidateStateManager interface { protocol.StateManager // candidate-related Size() int ContainsName(string) bool ContainsOwner(address.Address) bool ContainsOperator(address.Address) bool ContainsSelfStakingBucket(uint64) bool GetByName(string) *Candidate GetByOwner(address.Address) *Candidate GetBySelfStakingIndex(uint64) *Candidate Upsert(*Candidate) error Commit() error }
CandidateStateManager is candidate manager on top of StateMangaer
func NewCandidateStateManager ¶ added in v1.0.0
func NewCandidateStateManager(sm protocol.StateManager, c CandidateCenter) (CandidateStateManager, error)
NewCandidateStateManager returns a new CandidateStateManager instance
type Configuration ¶
type Configuration struct { VoteWeightCalConsts genesis.VoteWeightCalConsts RegistrationConsts RegistrationConsts WithdrawWaitingPeriod time.Duration MinStakeAmount *big.Int BootstrapCandidates []genesis.BootstrapCandidate }
Configuration is the staking protocol configuration.
type DepositGas ¶
DepositGas deposits gas to some pool
type Protocol ¶
type Protocol struct {
// contains filtered or unexported fields
}
Protocol defines the protocol of handling staking
func NewProtocol ¶
func NewProtocol(depositGas DepositGas, cfg genesis.Staking) (*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) CreateGenesisStates ¶
CreateGenesisStates is used to setup BootstrapCandidates from genesis config.
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, act action.Action, 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, error)
ReadState read the state on blockchain via protocol
type ReceiptError ¶ added in v1.0.0
ReceiptError indicates a non-critical error with corresponding receipt status
type RegistrationConsts ¶
RegistrationConsts are the registration fee and min self stake
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 }
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