state

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Oct 4, 2018 License: MIT Imports: 24 Imported by: 22

Documentation

Index

Constants

View Source
const (
	CandidateStatusOffline = 0x01
	CandidateStatusOnline  = 0x02
)
View Source
const UnbondPeriod = 518400

Variables

View Source
var (
	ValidatorMaxAbsentWindow = 24
	ValidatorMaxAbsentTimes  = 12
)
View Source
var (
	BalanceChangeChan = make(chan BalanceChangeStruct, 10)
)

Functions

func EmitBalanceChange

func EmitBalanceChange(address types.Address, coin types.CoinSymbol, balance *big.Int)

Types

type Account

type Account struct {
	Nonce   uint64
	Balance Balances
	Root    types.Hash // merkle root of the storage trie
}

Account is the Ethereum consensus representation of accounts. These objects are stored in the main account trie.

type Balance

type Balance struct {
	Coin   types.CoinSymbol
	Amount *big.Int
}

type BalanceChangeStruct

type BalanceChangeStruct struct {
	Address           types.Address
	Coin              types.CoinSymbol
	Balance           *big.Int
	BalanceInBasecoin *big.Int
}

func (BalanceChangeStruct) MarshalJSON

func (s BalanceChangeStruct) MarshalJSON() ([]byte, error)

type Balances

type Balances struct {
	Data map[types.CoinSymbol]*big.Int
}

func (*Balances) DecodeRLP

func (b *Balances) DecodeRLP(s *rlp.Stream) error

func (Balances) EncodeRLP

func (b Balances) EncodeRLP(w io.Writer) error

type BitArray added in v0.4.0

type BitArray struct {
	Bits  uint     `json:"bits"`  // NOTE: persisted via reflect, must be exported
	Elems []uint64 `json:"elems"` // NOTE: persisted via reflect, must be exported
	// contains filtered or unexported fields
}

BitArray is a thread-safe implementation of a bit array.

func NewBitArray added in v0.4.0

func NewBitArray(bits int) *BitArray

NewBitArray returns a new bit array. It returns nil if the number of bits is zero.

func (*BitArray) And added in v0.4.0

func (bA *BitArray) And(o *BitArray) *BitArray

And returns a bit array resulting from a bitwise AND of the two bit arrays. If the two bit-arrys have different lengths, this truncates the larger of the two bit-arrays from the right. Thus the size of the return value is the minimum of the two provided bit arrays.

func (*BitArray) Bytes added in v0.4.0

func (bA *BitArray) Bytes() []byte

Bytes returns the byte representation of the bits within the bitarray.

func (*BitArray) Copy added in v0.4.0

func (bA *BitArray) Copy() *BitArray

Copy returns a copy of the provided bit array.

func (*BitArray) GetIndex added in v0.4.0

func (bA *BitArray) GetIndex(i int) bool

GetIndex returns the bit at index i within the bit array. The behavior is undefined if i >= bA.Bits

func (*BitArray) IsEmpty added in v0.4.0

func (bA *BitArray) IsEmpty() bool

IsEmpty returns true iff all bits in the bit array are 0

func (*BitArray) IsFull added in v0.4.0

func (bA *BitArray) IsFull() bool

IsFull returns true iff all bits in the bit array are 1.

func (*BitArray) MarshalJSON added in v0.4.0

func (bA *BitArray) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface by marshaling bit array using a custom format: a string of '-' or 'x' where 'x' denotes the 1 bit.

func (*BitArray) Not added in v0.4.0

func (bA *BitArray) Not() *BitArray

Not returns a bit array resulting from a bitwise Not of the provided bit array.

func (*BitArray) Or added in v0.4.0

func (bA *BitArray) Or(o *BitArray) *BitArray

Or returns a bit array resulting from a bitwise OR of the two bit arrays. If the two bit-arrys have different lengths, Or right-pads the smaller of the two bit-arrays with zeroes. Thus the size of the return value is the maximum of the two provided bit arrays.

func (*BitArray) SetIndex added in v0.4.0

func (bA *BitArray) SetIndex(i int, v bool) bool

SetIndex sets the bit at index i within the bit array. The behavior is undefined if i >= bA.Bits

func (*BitArray) Size added in v0.4.0

func (bA *BitArray) Size() uint

Size returns the number of bits in the bitarray

func (*BitArray) String added in v0.4.0

func (bA *BitArray) String() string

String returns a string representation of BitArray: BA{<bit-string>}, where <bit-string> is a sequence of 'x' (1) and '_' (0). The <bit-string> includes spaces and newlines to help people. For a simple sequence of 'x' and '_' characters with no spaces or newlines, see the MarshalJSON() method. Example: "BA{_x_}" or "nil-BitArray" for nil.

func (*BitArray) StringIndented added in v0.4.0

func (bA *BitArray) StringIndented(indent string) string

StringIndented returns the same thing as String(), but applies the indent at every 10th bit, and twice at every 50th bit.

func (*BitArray) Sub added in v0.4.0

func (bA *BitArray) Sub(o *BitArray) *BitArray

Sub subtracts the two bit-arrays bitwise, without carrying the bits. This is essentially bA.And(o.Not()). If bA is longer than o, o is right padded with zeroes.

func (*BitArray) UnmarshalJSON added in v0.4.0

func (bA *BitArray) UnmarshalJSON(bz []byte) error

UnmarshalJSON implements json.Unmarshaler interface by unmarshaling a custom JSON description.

func (*BitArray) Update added in v0.4.0

func (bA *BitArray) Update(o *BitArray)

Update sets the bA's bits to be that of the other bit array. The copying begins from the begin of both bit arrays.

type Candidate

type Candidate struct {
	CandidateAddress types.Address
	TotalBipStake    *big.Int
	PubKey           types.Pubkey
	Commission       uint
	Stakes           []Stake
	CreatedAtBlock   uint
	Status           byte
	// contains filtered or unexported fields
}

func (Candidate) GetAddress added in v0.2.0

func (candidate Candidate) GetAddress() [20]byte

func (Candidate) GetStakeOfAddress

func (candidate Candidate) GetStakeOfAddress(addr types.Address, coin types.CoinSymbol) *Stake

func (Candidate) String

func (candidate Candidate) String() string

type Candidates

type Candidates []Candidate

type Coin

type Coin struct {
	Name           string
	Symbol         types.CoinSymbol
	Volume         *big.Int
	Crr            uint
	ReserveBalance *big.Int
	Creator        types.Address
}

func (Coin) String

func (coin Coin) String() string

type FrozenFund

type FrozenFund struct {
	Address      types.Address
	CandidateKey []byte
	Coin         types.CoinSymbol
	Value        *big.Int
}

frozen funds are only for BaseCoin

type FrozenFunds

type FrozenFunds struct {
	BlockHeight uint64
	List        []FrozenFund
}

func (FrozenFunds) String

func (f FrozenFunds) String() string

type ImmutableTree added in v0.4.1

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

func (*ImmutableTree) DeleteVersion added in v0.4.1

func (t *ImmutableTree) DeleteVersion(version int64) error

func (*ImmutableTree) Get added in v0.4.1

func (t *ImmutableTree) Get(key []byte) (index int64, value []byte)

func (*ImmutableTree) GetImmutable added in v0.4.1

func (t *ImmutableTree) GetImmutable() *ImmutableTree

func (*ImmutableTree) Hash added in v0.4.1

func (t *ImmutableTree) Hash() []byte

func (*ImmutableTree) Load added in v0.4.1

func (t *ImmutableTree) Load() (int64, error)

func (*ImmutableTree) LoadVersion added in v0.4.1

func (t *ImmutableTree) LoadVersion(targetVersion int64) (int64, error)

func (*ImmutableTree) Remove added in v0.4.1

func (t *ImmutableTree) Remove(key []byte) ([]byte, bool)

func (*ImmutableTree) SaveVersion added in v0.4.1

func (t *ImmutableTree) SaveVersion() ([]byte, int64, error)

func (*ImmutableTree) Set added in v0.4.1

func (t *ImmutableTree) Set(key, value []byte) bool

func (*ImmutableTree) Version added in v0.4.1

func (t *ImmutableTree) Version() int64

type MutableTree added in v0.4.1

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

func NewMutableTree added in v0.4.1

func NewMutableTree(db dbm.DB) *MutableTree

func (*MutableTree) DeleteVersion added in v0.4.1

func (t *MutableTree) DeleteVersion(version int64) error

func (*MutableTree) Get added in v0.4.1

func (t *MutableTree) Get(key []byte) (index int64, value []byte)

func (*MutableTree) GetImmutable added in v0.4.1

func (t *MutableTree) GetImmutable() *ImmutableTree

func (*MutableTree) Hash added in v0.4.1

func (t *MutableTree) Hash() []byte

func (*MutableTree) Load added in v0.4.1

func (t *MutableTree) Load() (int64, error)

func (*MutableTree) LoadVersion added in v0.4.1

func (t *MutableTree) LoadVersion(targetVersion int64) (int64, error)

func (*MutableTree) Remove added in v0.4.1

func (t *MutableTree) Remove(key []byte) ([]byte, bool)

func (*MutableTree) SaveVersion added in v0.4.1

func (t *MutableTree) SaveVersion() ([]byte, int64, error)

func (*MutableTree) Set added in v0.4.1

func (t *MutableTree) Set(key, value []byte) bool

func (*MutableTree) Version added in v0.4.1

func (t *MutableTree) Version() int64

type Stake

type Stake struct {
	Owner    types.Address
	Coin     types.CoinSymbol
	Value    *big.Int
	BipValue *big.Int
}

func (*Stake) CalcBipValue added in v0.3.0

func (s *Stake) CalcBipValue(context *StateDB) *big.Int

func (*Stake) MarshalJSON

func (s *Stake) MarshalJSON() ([]byte, error)

type StakeCache added in v0.3.0

type StakeCache struct {
	TotalValue *big.Int
	BipValue   *big.Int
}

type StateDB

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

func New

func New(height int64, db dbm.DB) (*StateDB, error)

func NewForCheck added in v0.4.1

func NewForCheck(s *StateDB) *StateDB

func (*StateDB) AddAccumReward

func (s *StateDB) AddAccumReward(pubkey types.Pubkey, reward *big.Int)

func (*StateDB) AddBalance

func (s *StateDB) AddBalance(addr types.Address, coinSymbol types.CoinSymbol, amount *big.Int)

AddBalance adds amount to the account associated with addr

func (*StateDB) AddCoinReserve

func (s *StateDB) AddCoinReserve(symbol types.CoinSymbol, value *big.Int)

func (*StateDB) AddCoinVolume

func (s *StateDB) AddCoinVolume(symbol types.CoinSymbol, value *big.Int)

func (*StateDB) CandidateExists

func (s *StateDB) CandidateExists(key types.Pubkey) bool

func (*StateDB) Clear added in v0.4.1

func (s *StateDB) Clear()

func (*StateDB) CoinExists

func (s *StateDB) CoinExists(symbol types.CoinSymbol) bool

func (*StateDB) Commit

func (s *StateDB) Commit(deleteEmptyObjects bool) (root []byte, version int64, err error)

Commit writes the state to the underlying in-memory trie database.

func (*StateDB) CreateCandidate

func (s *StateDB) CreateCandidate(
	address types.Address,
	pubkey types.Pubkey,
	commission uint,
	currentBlock uint,
	coin types.CoinSymbol,
	initialStake *big.Int) *stateCandidates

func (*StateDB) CreateCoin

func (s *StateDB) CreateCoin(
	symbol types.CoinSymbol,
	name string,
	volume *big.Int,
	crr uint,
	reserve *big.Int,
	creator types.Address) *stateCoin

func (*StateDB) CreateValidator added in v0.2.0

func (s *StateDB) CreateValidator(
	address types.Address,
	pubkey types.Pubkey,
	commission uint,
	currentBlock uint,
	coin types.CoinSymbol,
	initialStake *big.Int) *stateValidators

func (*StateDB) Delegate

func (s *StateDB) Delegate(sender types.Address, pubkey []byte, coin types.CoinSymbol, value *big.Int)

func (*StateDB) GetBalance

func (s *StateDB) GetBalance(addr types.Address, coinSymbol types.CoinSymbol) *big.Int

Retrieve the balance from the given address or 0 if object not found

func (*StateDB) GetBalances

func (s *StateDB) GetBalances(addr types.Address) Balances

func (*StateDB) GetCandidates added in v0.2.0

func (s *StateDB) GetCandidates(count int, block int64) []Candidate

func (*StateDB) GetNonce

func (s *StateDB) GetNonce(addr types.Address) uint64

func (*StateDB) GetOrNewStateFrozenFunds

func (s *StateDB) GetOrNewStateFrozenFunds(blockHeight uint64) *stateFrozenFund

func (*StateDB) GetOrNewStateObject

func (s *StateDB) GetOrNewStateObject(addr types.Address) *stateObject

Retrieve a state object or create a new state object if nil

func (*StateDB) GetStateCandidate

func (s *StateDB) GetStateCandidate(key types.Pubkey) *Candidate

func (*StateDB) GetStateCandidates added in v0.2.0

func (s *StateDB) GetStateCandidates() (stateCandidates *stateCandidates)

func (*StateDB) GetStateCoin

func (s *StateDB) GetStateCoin(symbol types.CoinSymbol) *stateCoin

func (*StateDB) GetStateFrozenFunds

func (s *StateDB) GetStateFrozenFunds(blockHeight uint64) *stateFrozenFund

func (*StateDB) GetStateValidators added in v0.2.0

func (s *StateDB) GetStateValidators() (stateValidators *stateValidators)

func (*StateDB) IsCheckUsed

func (s *StateDB) IsCheckUsed(check *check.Check) bool

func (*StateDB) MarkStateCandidateDirty

func (s *StateDB) MarkStateCandidateDirty()

func (*StateDB) MarkStateCoinDirty

func (s *StateDB) MarkStateCoinDirty(symbol types.CoinSymbol)

func (*StateDB) MarkStateFrozenFundsDirty

func (s *StateDB) MarkStateFrozenFundsDirty(blockHeight uint64)

func (*StateDB) MarkStateObjectDirty

func (s *StateDB) MarkStateObjectDirty(addr types.Address)

MarkStateObjectDirty adds the specified object to the dirty map to avoid costly state object cache iteration to find a handful of modified ones.

func (*StateDB) MarkStateValidatorsDirty added in v0.2.0

func (s *StateDB) MarkStateValidatorsDirty()

func (*StateDB) PayRewards

func (s *StateDB) PayRewards(height int64)

func (*StateDB) PunishByzantineValidator added in v0.2.0

func (s *StateDB) PunishByzantineValidator(currentBlock uint64, address [20]byte)

func (*StateDB) PunishFrozenFundsWithAddress added in v0.3.0

func (s *StateDB) PunishFrozenFundsWithAddress(fromBlock uint64, toBlock uint64, address [20]byte)

func (*StateDB) RecalculateTotalStakeValues

func (s *StateDB) RecalculateTotalStakeValues()

func (*StateDB) RemoveCurrentValidator added in v0.3.0

func (s *StateDB) RemoveCurrentValidator(pubkey types.Pubkey)

func (*StateDB) SetBalance

func (s *StateDB) SetBalance(addr types.Address, coinSymbol types.CoinSymbol, amount *big.Int)

func (*StateDB) SetCandidateOffline

func (s *StateDB) SetCandidateOffline(pubkey []byte)

func (*StateDB) SetCandidateOnline

func (s *StateDB) SetCandidateOnline(pubkey []byte)

func (*StateDB) SetNewValidators added in v0.2.0

func (s *StateDB) SetNewValidators(candidates []Candidate)

func (*StateDB) SetNonce

func (s *StateDB) SetNonce(addr types.Address, nonce uint64)

func (*StateDB) SetStateValidators added in v0.3.0

func (s *StateDB) SetStateValidators(validators *stateValidators)

func (*StateDB) SetValidatorAbsent

func (s *StateDB) SetValidatorAbsent(height int64, address [20]byte)

func (*StateDB) SetValidatorPresent

func (s *StateDB) SetValidatorPresent(height int64, address [20]byte)

func (*StateDB) SubBalance

func (s *StateDB) SubBalance(addr types.Address, coinSymbol types.CoinSymbol, amount *big.Int)

SubBalance subtracts amount from the account associated with addr

func (*StateDB) SubCoinReserve

func (s *StateDB) SubCoinReserve(symbol types.CoinSymbol, value *big.Int)

func (*StateDB) SubCoinVolume

func (s *StateDB) SubCoinVolume(symbol types.CoinSymbol, value *big.Int)

func (*StateDB) SubStake

func (s *StateDB) SubStake(sender types.Address, pubkey []byte, coin types.CoinSymbol, value *big.Int)

func (*StateDB) UseCheck

func (s *StateDB) UseCheck(check *check.Check)

type Tree added in v0.4.1

type Tree interface {
	Get(key []byte) (index int64, value []byte)
	Set(key, value []byte) bool
	Remove(key []byte) ([]byte, bool)
	LoadVersion(targetVersion int64) (int64, error)
	Load() (int64, error)
	SaveVersion() ([]byte, int64, error)
	DeleteVersion(version int64) error
	GetImmutable() *ImmutableTree
	Version() int64
	Hash() []byte
}

type Validator added in v0.2.0

type Validator struct {
	CandidateAddress types.Address
	TotalBipStake    *big.Int
	PubKey           types.Pubkey
	Commission       uint
	AccumReward      *big.Int
	AbsentTimes      *BitArray
	// contains filtered or unexported fields
}

func (*Validator) CountAbsentTimes added in v0.4.0

func (validator *Validator) CountAbsentTimes() int

func (Validator) GetAddress added in v0.2.0

func (validator Validator) GetAddress() [20]byte

func (*Validator) IsToDrop added in v0.3.0

func (validator *Validator) IsToDrop() bool

func (Validator) String added in v0.2.0

func (validator Validator) String() string

type Validators added in v0.2.0

type Validators []Validator

Jump to

Keyboard shortcuts

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