Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Energy module #565

Merged
merged 3 commits into from
Nov 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import (
"github.com/cybercongress/go-cyber/util"
bandwidth "github.com/cybercongress/go-cyber/x/bandwidth"
cyberbank "github.com/cybercongress/go-cyber/x/cyberbank"
"github.com/cybercongress/go-cyber/x/energy"
link "github.com/cybercongress/go-cyber/x/link"
"github.com/cybercongress/go-cyber/x/rank"
)
Expand Down Expand Up @@ -97,7 +98,7 @@ var (
link.AppModuleBasic{},
bandwidth.AppModuleBasic{},
rank.AppModuleBasic{},

energy.AppModuleBasic{},
wasm.AppModuleBasic{},
)

Expand All @@ -108,6 +109,7 @@ var (
staking.BondedPoolName: {supply.Burner, supply.Staking},
staking.NotBondedPoolName: {supply.Burner, supply.Staking},
gov.ModuleName: {supply.Burner},
energy.EnergyPoolName: nil,
}
)

Expand Down Expand Up @@ -140,7 +142,7 @@ type CyberdApp struct {
graphKeeper link.GraphKeeper
indexKeeper *link.IndexKeeper
rankKeeper *rank.StateKeeper

energyKeeper energy.Keeper
wasmKeeper wasm.Keeper

latestBlockHeight int64
Expand Down Expand Up @@ -186,6 +188,7 @@ func NewCyberdApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest
app.subspaces[gov.ModuleName] = app.paramsKeeper.Subspace(gov.DefaultParamspace).WithKeyTable(gov.ParamKeyTable())
app.subspaces[bandwidth.ModuleName] = app.paramsKeeper.Subspace(bandwidth.DefaultParamspace)
app.subspaces[rank.ModuleName] = app.paramsKeeper.Subspace(rank.DefaultParamspace)
app.subspaces[energy.ModuleName] = app.paramsKeeper.Subspace(energy.DefaultParamspace)
app.subspaces[wasm.ModuleName] = app.paramsKeeper.Subspace(wasm.DefaultParamspace)

app.accountKeeper = auth.NewAccountKeeper(
Expand Down Expand Up @@ -248,7 +251,7 @@ func NewCyberdApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest
dbKeys.wasm,
app.subspaces[wasm.ModuleName],
app.accountKeeper,
app.bankKeeper,
app.bankKeeper, // TODO test and put cyberbank
app.stakingKeeper,
app.distrKeeper,
wasmRouter,
Expand All @@ -274,6 +277,8 @@ func NewCyberdApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest
app.cyberbank = cyberbank.NewIndexedKeeper(
cyberbank.NewWrap(&app.bankKeeper, &stakingKeeper, app.supplyKeeper), app.accountKeeper,
)
app.energyKeeper = energy.NewKeeper(cdc, dbKeys.energy, app.supplyKeeper, app.cyberbank, app.accountKeeper, app.subspaces[energy.ModuleName])
app.cyberbank.SetEnergyKeeper(&app.energyKeeper)
app.cyberbank.Proxy.AddHook(bandwidth.CollectAddressesWithStakeChange())

app.bandwidthMeter = bandwidth.NewBandwidthMeter(
Expand Down Expand Up @@ -304,7 +309,7 @@ func NewCyberdApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest
cyberbank.NewAppModule(app.cyberbank),
link.NewAppModule(app.graphKeeper, app.indexKeeper, app.accountKeeper),
rank.NewAppModule(app.rankKeeper),

energy.NewAppModule(app.energyKeeper),
wasm.NewAppModule(app.wasmKeeper),
)

Expand All @@ -318,7 +323,7 @@ func NewCyberdApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest
app.mm.SetOrderInitGenesis(
distr.ModuleName, staking.ModuleName, auth.ModuleName, bank.ModuleName,
slashing.ModuleName, gov.ModuleName, mint.ModuleName, supply.ModuleName, crisis.ModuleName, bandwidth.ModuleName,
genutil.ModuleName, cyberbank.ModuleName, rank.ModuleName, evidence.ModuleName, wasm.ModuleName,
genutil.ModuleName, cyberbank.ModuleName, rank.ModuleName, evidence.ModuleName, wasm.ModuleName, energy.ModuleName,
)

app.mm.RegisterInvariants(&app.crisisKeeper)
Expand All @@ -328,7 +333,7 @@ func NewCyberdApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest
dbKeys.main, dbKeys.auth, dbKeys.links,
dbKeys.rank, dbKeys.stake, dbKeys.slashing, dbKeys.gov, dbKeys.params,
dbKeys.distr, dbKeys.bandwidth, dbKeys.tParams,
dbKeys.tStake, dbKeys.mint, dbKeys.supply, dbKeys.upgrade, dbKeys.evidence, dbKeys.wasm,
dbKeys.tStake, dbKeys.mint, dbKeys.supply, dbKeys.upgrade, dbKeys.evidence, dbKeys.wasm, dbKeys.energy,
)

app.SetInitChainer(app.InitChainer)
Expand Down
6 changes: 5 additions & 1 deletion app/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (

ctypes "github.com/cybercongress/go-cyber/types"
"github.com/cybercongress/go-cyber/x/bandwidth"
"github.com/cybercongress/go-cyber/x/energy"
"github.com/cybercongress/go-cyber/x/rank"
)

Expand All @@ -46,6 +47,7 @@ type GenesisState struct {
Evidence evidence.GenesisState `json:"evidence"`
BandwidthData bandwidth.GenesisState `json:"bandwidth"`
RankData rank.GenesisState `json:"rank"`
EnergyData energy.GenesisState `json:"energy"`
WasmData wasm.GenesisState `json:"wasm"`
}

Expand All @@ -63,7 +65,7 @@ func NewGenesisState(
mintData mint.GenesisState, distrData distr.GenesisState,
govData gov.GenesisState, supplyData supply.GenesisState,
slashingData slashing.GenesisState, bandwidthData bandwidth.GenesisState,
rankData rank.GenesisState, crisisData crisis.GenesisState,
rankData rank.GenesisState, energyData energy.GenesisState, crisisData crisis.GenesisState,
evidenceData evidence.GenesisState, wasmData wasm.GenesisState,
) GenesisState {

Expand All @@ -78,6 +80,7 @@ func NewGenesisState(
GovData: govData,
BandwidthData: bandwidthData,
RankData: rankData,
EnergyData: energyData,
Crisis: crisisData,
Evidence: evidenceData,
WasmData: wasmData,
Expand Down Expand Up @@ -167,6 +170,7 @@ func NewDefaultGenesisState() GenesisState {
RankData: rank.GenesisState{
Params: rank.DefaultParams(),
},
EnergyData: energy.DefaultGenesisState(),
Crisis: crisis.GenesisState{
ConstantFee: sdk.NewCoin(ctypes.CYB, sdk.NewInt(ctypes.Giga*10)),
},
Expand Down
10 changes: 6 additions & 4 deletions app/keys.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package app

import (
"github.com/CosmWasm/wasmd/x/wasm"
bam "github.com/cosmos/cosmos-sdk/baseapp"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/auth"
distr "github.com/cosmos/cosmos-sdk/x/distribution"
"github.com/cosmos/cosmos-sdk/x/evidence"
"github.com/cosmos/cosmos-sdk/x/gov"
"github.com/cosmos/cosmos-sdk/x/mint"
"github.com/cosmos/cosmos-sdk/x/params"
"github.com/cosmos/cosmos-sdk/x/slashing"
"github.com/cosmos/cosmos-sdk/x/staking"
"github.com/cosmos/cosmos-sdk/x/supply"
"github.com/cosmos/cosmos-sdk/x/upgrade"
"github.com/cosmos/cosmos-sdk/x/evidence"
"github.com/CosmWasm/wasmd/x/wasm"

"github.com/cybercongress/go-cyber/x/bandwidth"
"github.com/cybercongress/go-cyber/x/energy"
"github.com/cybercongress/go-cyber/x/link"
"github.com/cybercongress/go-cyber/x/rank"
)
Expand All @@ -36,7 +37,7 @@ type cyberdAppDbKeys struct {
links *sdk.KVStoreKey
rank *sdk.KVStoreKey
bandwidth *sdk.KVStoreKey

energy *sdk.KVStoreKey
wasm *sdk.KVStoreKey

tStake *sdk.TransientStoreKey
Expand All @@ -60,6 +61,7 @@ func NewCyberdAppDbKeys() cyberdAppDbKeys {
links: sdk.NewKVStoreKey(link.StoreKey),
rank: sdk.NewKVStoreKey(rank.StoreKey),
bandwidth:sdk.NewKVStoreKey(bandwidth.StoreKey),
energy: sdk.NewKVStoreKey(energy.StoreKey),
wasm: sdk.NewKVStoreKey(wasm.StoreKey),

tStake: sdk.NewTransientStoreKey(staking.TStoreKey),
Expand All @@ -70,7 +72,7 @@ func NewCyberdAppDbKeys() cyberdAppDbKeys {
func (k cyberdAppDbKeys) GetStoreKeys() []*sdk.KVStoreKey {
return []*sdk.KVStoreKey{
k.main, k.auth, k.links, k.rank, k.stake, k.supply, k.gov,
k.slashing, k.params, k.distr, k.bandwidth, k.mint, k.upgrade, k.evidence, k.wasm,
k.slashing, k.params, k.distr, k.bandwidth, k.mint, k.upgrade, k.evidence, k.wasm, k.energy,
}
}

Expand Down
14 changes: 7 additions & 7 deletions app/rpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,20 +49,20 @@ func (app *CyberdApp) Search(cid string, page, perPage int) ([]RankedCid, int, e
func (app *CyberdApp) Backlinks(cid string, page, perPage int) ([]RankedCid, int, error) {

ctx := app.RpcContext()
cidNumber, exists := app.cidNumKeeper.GetCidNumber(ctx, link.Cid(cid))
if !exists || cidNumber > app.rankStateKeeper.GetLastCidNum() {
cidNumber, exists := app.graphKeeper.GetCidNumber(ctx, link.Cid(cid))
if !exists || cidNumber > app.rankKeeper.GetLastCidNum() {
return nil, 0, errors.New("no such cid found")
}

rankedCidNumbers, size, err := app.rankStateKeeper.Backlinks(cidNumber, page, perPage)
rankedCidNumbers, size, err := app.rankKeeper.Backlinks(cidNumber, page, perPage)

if err != nil {
return nil, size, err
}

result := make([]RankedCid, 0, len(rankedCidNumbers))
for _, c := range rankedCidNumbers {
result = append(result, RankedCid{Cid: app.cidNumKeeper.GetCid(ctx, c.GetNumber()), Rank: c.GetRank()})
result = append(result, RankedCid{Cid: app.graphKeeper.GetCid(ctx, c.GetNumber()), Rank: c.GetRank()})
}

return result, size, nil
Expand Down Expand Up @@ -117,12 +117,12 @@ func (app *CyberdApp) AccountLinks(address sdk.AccAddress, page, perPage int) ([
acc := app.accountKeeper.GetAccount(ctx, address)

if acc != nil {
accNumber := cbd.AccNumber(acc.GetAccountNumber())
links, total, _ := app.rankStateKeeper.Accounts(uint64(accNumber), page, perPage)
accNumber := ctypes.AccNumber(acc.GetAccountNumber())
links, total, _ := app.rankKeeper.Accounts(uint64(accNumber), page, perPage)

result := make([]link.Link, 0, len(links))
for j, c := range links {
result = append(result, link.Link{From: app.cidNumKeeper.GetCid(ctx, j), To: app.cidNumKeeper.GetCid(ctx, c)})
result = append(result, link.Link{From: app.graphKeeper.GetCid(ctx, j), To: app.graphKeeper.GetCid(ctx, c)})
}
return result, total, nil
} else {
Expand Down
21 changes: 21 additions & 0 deletions x/cyberbank/exported/exported.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package exported

import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkbank "github.com/cosmos/cosmos-sdk/x/bank"

//ctypes "github.com/cybercongress/go-cyber/types"
"github.com/cybercongress/go-cyber/x/cyberbank/types"
)

type Keeper interface {
sdkbank.Keeper

AddHook(types.CoinsTransferHook)
//GetAccountUnboundedStake(sdk.Context, sdk.AccAddress) int64
//GetAccountBoundedStake(sdk.Context, sdk.AccAddress) int64
//GetAccountTotalStake(sdk.Context, sdk.AccAddress) int64
//GetAccStakePercentage(sdk.Context, sdk.AccAddress) float64
//GetTotalSupply(sdk.Context) int64
OnCoinsTransfer(ctx sdk.Context, from sdk.AccAddress, to sdk.AccAddress)
}
22 changes: 21 additions & 1 deletion x/cyberbank/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,30 @@ func (k *IndexedKeeper) InitGenesis(ctx sdk.Context) {
}

func (k *IndexedKeeper) EndBlocker(ctx sdk.Context) {

for _, addr := range k.accountToUpdate {
stake := k.Proxy.GetAccountTotalStake(ctx, addr)
stake := k.GetAccountTotalStake(ctx, addr)

// sandbox debugging
//fmt.Printf("[%s] %s \n", addr.String(), strconv.FormatUint(uint64(stake), 10))

//accNum := k.accountKeeper.GetAccount(ctx, addr).GetAccountNumber()
//k.userNewTotalStake[accNum] = uint64(stake)
//account := k.accountKeeper.GetAccount(ctx, addr)
//if account != nil {
// accNum := account.GetAccountNumber()
// k.userNewTotalStake[accNum] = uint64(stake)
//}
accountNumber := k.accountKeeper.GetAccount(ctx, addr).GetAccountNumber()
k.userNewTotalStake[accountNumber] = uint64(stake)
}

//sandbox debugging
//for _, account := range k.accountKeeper.GetAllAccounts(ctx) {
// stakeBank := uint64(k.GetAccountTotalStake(ctx, account.GetAddress()))
// stakeIndex := uint64(k.userNewTotalStake[ account.GetAccountNumber() ])
// fmt.Printf("STAKE: account: %s index: %s bank: %s \n", account.GetAddress(), strconv.FormatUint(stakeIndex, 10), strconv.FormatUint(stakeBank,10))
//}

k.accountToUpdate = make([]sdk.AccAddress, 0)
}
33 changes: 21 additions & 12 deletions x/cyberbank/keeper/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package keeper
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/cosmos/cosmos-sdk/x/staking"
"github.com/cosmos/cosmos-sdk/x/supply"

ctypes "github.com/cybercongress/go-cyber/types"
Expand All @@ -14,16 +13,17 @@ var _ bank.Keeper = (*Proxy)(nil)

type Proxy struct {
bk bank.Keeper
sk staking.Keeper
sp supply.Keeper
sk types.StakingKeeper
sp types.SupplyKeeper
ek types.EnergyKeeper

coinsTransferHooks []types.CoinsTransferHook
}

func Wrap(bk *bank.Keeper, sk *staking.Keeper, sp supply.Keeper) *Proxy {
func Wrap(bk *bank.Keeper, sk types.StakingKeeper, sp supply.Keeper) *Proxy {
return &Proxy{
bk: *bk,
sk: *sk,
sk: sk,
sp: sp,
coinsTransferHooks: make([]types.CoinsTransferHook, 0),
}
Expand All @@ -33,7 +33,11 @@ func (p *Proxy) AddHook(hook types.CoinsTransferHook) {
p.coinsTransferHooks = append(p.coinsTransferHooks, hook)
}

func (p *Proxy) onCoinsTransfer(ctx sdk.Context, from sdk.AccAddress, to sdk.AccAddress) {
func (k *Proxy) SetEnergyKeeper(ek types.EnergyKeeper) {
k.ek = ek
}

func (p *Proxy) OnCoinsTransfer(ctx sdk.Context, from sdk.AccAddress, to sdk.AccAddress) {
for _, hook := range p.coinsTransferHooks {
hook(ctx, from, to)
}
Expand Down Expand Up @@ -69,7 +73,12 @@ func (k Proxy) GetAccountStakePercentage(ctx sdk.Context, addr sdk.AccAddress) f
}

func (k Proxy) GetAccountTotalStake(ctx sdk.Context, addr sdk.AccAddress) int64 {
return k.GetAccountUnboundedStake(ctx, addr) + k.GetAccountBoundedStake(ctx, addr)
return k.GetAccountUnboundedStake(ctx, addr) + k.GetAccountBoundedStake(ctx, addr) + k.GetAccountPower(ctx, addr)
}

func (k Proxy) GetAccountPower(ctx sdk.Context, addr sdk.AccAddress) int64 {
power := k.ek.GetRoutedToEnergy(ctx, addr)
return power.Int64()
}

// -----------------------------------------------------------------
Expand All @@ -82,23 +91,23 @@ func (p Proxy) InputOutputCoins(ctx sdk.Context, inputs []bank.Input, outputs []
func (p Proxy) SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error {
err := p.bk.SendCoins(ctx, fromAddr, toAddr, amt)
if err == nil {
p.onCoinsTransfer(ctx, fromAddr, toAddr)
p.OnCoinsTransfer(ctx, fromAddr, toAddr)
}
return err
}

func (p Proxy) SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, error) {
coins, err := p.bk.SubtractCoins(ctx, addr, amt)
if err == nil {
p.onCoinsTransfer(ctx, nil, addr)
p.OnCoinsTransfer(ctx, nil, addr)
}
return coins, err
}

func (p Proxy) AddCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, error) {
coins, err := p.bk.AddCoins(ctx, addr, amt)
if err == nil {
p.onCoinsTransfer(ctx, nil, addr)
p.OnCoinsTransfer(ctx, nil, addr)
}
return coins, err
}
Expand All @@ -118,15 +127,15 @@ func (p Proxy) BlacklistedAddr(addr sdk.AccAddress) bool {
func (p Proxy) DelegateCoins(ctx sdk.Context, delegatorAddr, moduleAccAddr sdk.AccAddress, amt sdk.Coins) error {
err := p.bk.DelegateCoins(ctx, delegatorAddr, moduleAccAddr, amt)
if err == nil {
p.onCoinsTransfer(ctx, delegatorAddr, nil)
p.OnCoinsTransfer(ctx, delegatorAddr, nil)
}
return err
}

func (p Proxy) UndelegateCoins(ctx sdk.Context, moduleAccAddr, delegatorAddr sdk.AccAddress, amt sdk.Coins) error {
err := p.bk.UndelegateCoins(ctx, moduleAccAddr, delegatorAddr, amt)
if err == nil {
p.onCoinsTransfer(ctx, nil, delegatorAddr)
p.OnCoinsTransfer(ctx, nil, delegatorAddr)
}
return err
}
Expand Down
Loading