92 lines
2.2 KiB
Go
92 lines
2.2 KiB
Go
package stake
|
|
|
|
//// keeper of the staking store
|
|
//type Keeper struct {
|
|
//storeKey sdk.StoreKey
|
|
//cdc *wire.Codec
|
|
//coinKeeper bank.Keeper
|
|
|
|
//// codespace
|
|
//codespace sdk.CodespaceType
|
|
//}
|
|
|
|
//func NewKeeper(cdc *wire.Codec, key sdk.StoreKey, ck bank.Keeper, codespace sdk.CodespaceType) Keeper {
|
|
//keeper := Keeper{
|
|
//storeKey: key,
|
|
//cdc: cdc,
|
|
//coinKeeper: ck,
|
|
//codespace: codespace,
|
|
//}
|
|
//return keeper
|
|
//}
|
|
|
|
////_________________________________________________________________________
|
|
|
|
//// cummulative power of the non-absent prevotes
|
|
//func (k Keeper) GetTotalPrecommitVotingPower(ctx sdk.Context) sdk.Rat {
|
|
//store := ctx.KVStore(k.storeKey)
|
|
|
|
//// get absent prevote indexes
|
|
//absents := ctx.AbsentValidators()
|
|
|
|
//TotalPower := sdk.ZeroRat()
|
|
//i := int32(0)
|
|
//iterator := store.SubspaceIterator(ValidatorsBondedKey)
|
|
//for ; iterator.Valid(); iterator.Next() {
|
|
|
|
//skip := false
|
|
//for j, absentIndex := range absents {
|
|
//if absentIndex > i {
|
|
//break
|
|
//}
|
|
|
|
//// if non-voting validator found, skip adding its power
|
|
//if absentIndex == i {
|
|
//absents = append(absents[:j], absents[j+1:]...) // won't need again
|
|
//skip = true
|
|
//break
|
|
//}
|
|
//}
|
|
//if skip {
|
|
//continue
|
|
//}
|
|
|
|
//bz := iterator.Value()
|
|
//var validator Validator
|
|
//k.cdc.MustUnmarshalBinary(bz, &validator)
|
|
//TotalPower = TotalPower.Add(validator.Power)
|
|
//i++
|
|
//}
|
|
//iterator.Close()
|
|
//return TotalPower
|
|
//}
|
|
|
|
////_______________________________________________________________________
|
|
|
|
//// XXX TODO trim functionality
|
|
|
|
//// retrieve all the power changes which occur after a height
|
|
//func (k Keeper) GetPowerChangesAfterHeight(ctx sdk.Context, earliestHeight int64) (pcs []PowerChange) {
|
|
//store := ctx.KVStore(k.storeKey)
|
|
|
|
//iterator := store.SubspaceIterator(PowerChangeKey) //smallest to largest
|
|
//for ; iterator.Valid(); iterator.Next() {
|
|
//pcBytes := iterator.Value()
|
|
//var pc PowerChange
|
|
//k.cdc.MustUnmarshalBinary(pcBytes, &pc)
|
|
//if pc.Height < earliestHeight {
|
|
//break
|
|
//}
|
|
//pcs = append(pcs, pc)
|
|
//}
|
|
//iterator.Close()
|
|
//return
|
|
//}
|
|
|
|
//// set a power change
|
|
//func (k Keeper) setPowerChange(ctx sdk.Context, pc PowerChange) {
|
|
//store := ctx.KVStore(k.storeKey)
|
|
//b := k.cdc.MustMarshalBinary(pc)
|
|
//store.Set(GetPowerChangeKey(pc.Height), b)
|
|
//}
|