0g-chain/x/swap/genesis.go
Kevin Davis d45fa58f5c
Swap Genesis State (#960)
* wip: add swap state persistent to genesis

* separate pool record constructors; add tests for json and yaml encoding
of record structs

* beef up validation checks for state records

* fix integration with master - renamed method

* add test coverage for basic state array validations

* extra test around pool record reserve and id ordering to ensure no
regressions in the future

* add validations to ensure pool records and share records are unique
within the collection types

* test genesis json and yaml encoding

* validate in genesis that the total shares owned for each pool is equal
to the total shares of each pool

* update alias

* nit lint

* test genesis init and export

* add migration todo

Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
2021-07-15 09:42:30 -05:00

33 lines
797 B
Go

package swap
import (
"fmt"
"github.com/kava-labs/kava/x/swap/types"
sdk "github.com/cosmos/cosmos-sdk/types"
)
// InitGenesis initializes story state from genesis file
func InitGenesis(ctx sdk.Context, k Keeper, gs types.GenesisState) {
if err := gs.Validate(); err != nil {
panic(fmt.Sprintf("failed to validate %s genesis state: %s", ModuleName, err))
}
k.SetParams(ctx, gs.Params)
for _, pr := range gs.PoolRecords {
k.SetPool(ctx, pr)
}
for _, sh := range gs.ShareRecords {
k.SetDepositorShares(ctx, sh)
}
}
// ExportGenesis exports the genesis state
func ExportGenesis(ctx sdk.Context, k Keeper) types.GenesisState {
params := k.GetParams(ctx)
pools := k.GetAllPools(ctx)
shares := k.GetAllDepositorShares(ctx)
return types.NewGenesisState(params, pools, shares)
}