github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/types/delegator.go (about) 1 package types 2 3 import ( 4 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 5 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 6 "github.com/fibonacci-chain/fbc/x/staking/exported" 7 ) 8 9 var _ exported.DelegatorI = &Delegator{} 10 11 // Delegator is the struct of delegator info 12 type Delegator struct { 13 DelegatorAddress sdk.AccAddress `json:"delegator_address" yaml:"delegator_address"` 14 ValidatorAddresses []sdk.ValAddress `json:"validator_address" yaml:"validator_address"` 15 Shares sdk.Dec `json:"shares" yaml:"shares"` 16 Tokens sdk.Dec `json:"tokens" yaml:"tokens"` // self-delegated tokens 17 IsProxy bool `json:"is_proxy" yaml:"is_proxy"` 18 TotalDelegatedTokens sdk.Dec `json:"total_delegated_tokens" yaml:"total_delegated_tokens"` // total tokens delegated by other delegators 19 ProxyAddress sdk.AccAddress `json:"proxy_address" yaml:"proxy_address"` 20 } 21 22 // NewDelegator creates a new Delegator object 23 func NewDelegator(delAddr sdk.AccAddress) Delegator { 24 return Delegator{ 25 delAddr, 26 nil, 27 sdk.ZeroDec(), 28 sdk.ZeroDec(), 29 false, 30 sdk.ZeroDec(), 31 nil, 32 } 33 } 34 35 // GetShareAddedValidatorAddresses gets validator address that the delegator added shares to for other module 36 func (d Delegator) GetShareAddedValidatorAddresses() []sdk.ValAddress { 37 return d.ValidatorAddresses 38 } 39 40 // GetLastAddedShares gets the last shares added to validators of a delegator for other module 41 func (d Delegator) GetLastAddedShares() sdk.Dec { 42 return d.Shares 43 } 44 45 // RegProxy registers or deregisters the identity of proxy 46 func (d *Delegator) RegProxy(reg bool) { 47 d.IsProxy = reg 48 if reg { 49 d.UnbindProxy() 50 } 51 } 52 53 // BindProxy sets relationship between a delegator and proxy 54 func (d *Delegator) BindProxy(proxyAddr sdk.AccAddress) { 55 d.ProxyAddress = proxyAddr 56 d.IsProxy = false 57 } 58 59 // UnbindProxy clears the proxy address on a delegator 60 func (d *Delegator) UnbindProxy() { 61 d.ProxyAddress = nil 62 } 63 64 // HasProxy tells whether the delegator has bound a proxy 65 func (d Delegator) HasProxy() bool { 66 return d.ProxyAddress != nil 67 } 68 69 // MustUnMarshalDelegator must return a delegator entity by unmarshalling 70 func MustUnMarshalDelegator(cdc *codec.Codec, value []byte) (delegator Delegator) { 71 cdc.MustUnmarshalBinaryLengthPrefixed(value, &delegator) 72 return 73 }