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

IRISHUB-404:fix the cycle import #216

Merged
merged 2 commits into from
Sep 14, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
234 changes: 21 additions & 213 deletions Gopkg.lock

Large diffs are not rendered by default.

22 changes: 12 additions & 10 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,33 @@ import (
"encoding/json"
"io"
"os"

bam "github.com/irisnet/irishub/baseapp"
abci "github.com/tendermint/tendermint/abci/types"
cmn "github.com/tendermint/tendermint/libs/common"
dbm "github.com/tendermint/tendermint/libs/db"
"github.com/tendermint/tendermint/libs/log"
tmtypes "github.com/tendermint/tendermint/types"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/wire"
"github.com/cosmos/cosmos-sdk/x/auth"
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/irisnet/irishub/modules/gov"
"github.com/cosmos/cosmos-sdk/x/ibc"
"github.com/irisnet/irishub/modules/gov/params"
"github.com/irisnet/irishub/modules/iparams"
"github.com/irisnet/irishub/modules/upgrade"
"github.com/spf13/viper"
"github.com/irisnet/irishub/modules/parameter"
"fmt"
"github.com/cosmos/cosmos-sdk/x/slashing"
"strings"
"github.com/cosmos/cosmos-sdk/x/ibc"
"github.com/cosmos/cosmos-sdk/x/stake"
"github.com/irisnet/irishub/modules/upgrade"

"errors"
"fmt"
"github.com/cosmos/cosmos-sdk/server"
"github.com/spf13/viper"
tmcli "github.com/tendermint/tendermint/libs/cli"
"github.com/tendermint/tendermint/node"
sm "github.com/tendermint/tendermint/state"
bc "github.com/tendermint/tendermint/blockchain"
"strings"
"github.com/cosmos/cosmos-sdk/x/params"
)

Expand Down Expand Up @@ -144,6 +143,8 @@ func NewIrisApp(logger log.Logger, db dbm.DB, traceStore io.Writer, baseAppOptio
app.SetFeePreprocessHandler(bam.NewFeePreprocessHandler(app.feeManager))
app.MountStoresIAVL(app.keyMain, app.keyAccount, app.keyIBC, app.keyStake, app.keySlashing, app.keyGov, app.keyFeeCollection, app.keyParams, app.keyIparams, app.keyUpgrade)
app.SetRunMsg(app.runMsgs)


Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

go fmt

var err error
if viper.GetBool(FlagReplay) {
err = app.LoadVersion(lastHeight, app.keyMain)
Expand All @@ -155,7 +156,8 @@ func NewIrisApp(logger log.Logger, db dbm.DB, traceStore io.Writer, baseAppOptio
}

upgrade.RegisterModuleList(app.Router())

govparams.DepositProcedureParameter.SetReadWriter(app.paramsKeeper.Setter())
parameter.RegisterGovParamMapping(&govparams.DepositProcedureParameter)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

create another function in app.go to handle all the params setup & register

return app
}

Expand Down Expand Up @@ -226,7 +228,7 @@ func (app *IrisApp) initChainer(ctx sdk.Context, req abci.RequestInitChain) abci

gov.InitGenesis(ctx, app.govKeeper, gov.GenesisState{
StartingProposalID: 1,
DepositProcedure: gov.DepositProcedure{
DepositProcedure: govparams.DepositProcedure{
MinDeposit: sdk.Coins{minDeposit},
MaxDepositPeriod: 1440,
},
Expand Down
10 changes: 7 additions & 3 deletions modules/gov/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,19 @@ package gov

import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/irisnet/irishub/modules/parameter"
"github.com/irisnet/irishub/modules/gov/params"
)

// GenesisState - all staking state that must be provided at genesis
type GenesisState struct {
StartingProposalID int64 `json:"starting_proposalID"`
DepositProcedure DepositProcedure `json:"deposit_period"`
DepositProcedure govparams.DepositProcedure `json:"deposit_period"`
VotingProcedure VotingProcedure `json:"voting_period"`
TallyingProcedure TallyingProcedure `json:"tallying_procedure"`
}

func NewGenesisState(startingProposalID int64, dp DepositProcedure, vp VotingProcedure, tp TallyingProcedure) GenesisState {
func NewGenesisState(startingProposalID int64, dp govparams.DepositProcedure, vp VotingProcedure, tp TallyingProcedure) GenesisState {
return GenesisState{
StartingProposalID: startingProposalID,
DepositProcedure: dp,
Expand All @@ -28,9 +30,11 @@ func InitGenesis(ctx sdk.Context, k Keeper,data GenesisState) {
// TODO: Handle this with #870
panic(err)
}
k.setDepositProcedure(ctx, data.DepositProcedure)
//k.setDepositProcedure(ctx, data.DepositProcedure)
parameter.InitGenesisParameter(&govparams.DepositProcedureParameter, ctx, data.DepositProcedure)
k.setVotingProcedure(ctx, data.VotingProcedure)
k.setTallyingProcedure(ctx, data.TallyingProcedure)

}

// WriteGenesis - output genesis parameters
Expand Down
39 changes: 12 additions & 27 deletions modules/gov/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"github.com/cosmos/cosmos-sdk/wire"
"github.com/cosmos/cosmos-sdk/x/bank"
"github.com/irisnet/irishub/modules/iparams"
"github.com/irisnet/irishub/modules/gov/params"
"strconv"
"strings"
)
Expand Down Expand Up @@ -211,27 +212,11 @@ func (keeper Keeper) activateVotingPeriod(ctx sdk.Context, proposal Proposal) {
// Procedures

// Returns the current Deposit Procedure from the global param store
func (keeper Keeper) GetDepositProcedure(ctx sdk.Context) DepositProcedure {
return DepositProcedure{
MinDeposit: keeper.getDepositProcedureDeposit(ctx),
MaxDepositPeriod: keeper.getDepositProcedureMaxDepositPeriod(ctx),
}
func (keeper Keeper) GetDepositProcedure(ctx sdk.Context) govparams.DepositProcedure {
govparams.DepositProcedureParameter.LoadValue(ctx)
return govparams.DepositProcedureParameter.Value
}

func (keeper Keeper) getDepositProcedureMaxDepositPeriod(ctx sdk.Context) (MaxDepositPeriod int64) {
var maxDepositPeriod string
if keeper.ps.Get(ctx, ParamStoreKeyDepositProcedureMaxDepositPeriod, &maxDepositPeriod) == nil {
MaxDepositPeriod, _ = strconv.ParseInt(maxDepositPeriod, 10, 64)
}
return
}

func (keeper Keeper) getDepositProcedureDeposit(ctx sdk.Context) (Deposit sdk.Coins) {
var data string
keeper.ps.Get(ctx, ParamStoreKeyDepositProcedureDeposit, &data)
Deposit, _ = sdk.ParseCoins(data)
return
}

// Returns the current Voting Procedure from the global param store
func (keeper Keeper) GetVotingProcedure(ctx sdk.Context) VotingProcedure {
Expand Down Expand Up @@ -267,14 +252,14 @@ func (keeper Keeper) getTallyingProcedure(ctx sdk.Context, key string) sdk.Rat {

}

func (keeper Keeper) setDepositProcedure(ctx sdk.Context, depositProcedure DepositProcedure) {
minDeposit := depositProcedure.MinDeposit.String()
keeper.ps.Set(ctx, ParamStoreKeyDepositProcedureDeposit, &minDeposit)

maxDepositPeriod := strconv.FormatInt(depositProcedure.MaxDepositPeriod, 10)
keeper.ps.Set(ctx, ParamStoreKeyDepositProcedureMaxDepositPeriod, &maxDepositPeriod)

}
//func (keeper Keeper) setDepositProcedure(ctx sdk.Context, depositProcedure DepositProcedure) {
// minDeposit := depositProcedure.MinDeposit.String()
// keeper.ps.Set(ctx, ParamStoreKeyDepositProcedureDeposit, &minDeposit)
//
// maxDepositPeriod := strconv.FormatInt(depositProcedure.MaxDepositPeriod, 10)
// keeper.ps.Set (ctx, ParamStoreKeyDepositProcedureMaxDepositPeriod, &maxDepositPeriod)
//
//}

func (keeper Keeper) setVotingProcedure(ctx sdk.Context, votingProcedure VotingProcedure) {
votingPeriod := strconv.FormatInt(votingProcedure.VotingPeriod, 10)
Expand Down
12 changes: 12 additions & 0 deletions modules/gov/params/errors.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package govparams

import (
sdk "github.com/cosmos/cosmos-sdk/types"
)
const (
DefaultCodespace sdk.CodespaceType = 5
CodeInvalidMinDeposit sdk.CodeType = 100
CodeInvalidMinDepositDenom sdk.CodeType = 101
CodeInvalidMinDepositAmount sdk.CodeType = 102
CodeInvalidDepositPeriod sdk.CodeType = 103
)
21 changes: 13 additions & 8 deletions modules/gov/params/gov_params.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,27 @@ import (
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/params"
"github.com/irisnet/irishub/modules/gov"
)

var DepositProcedureParameter DepositProcedureParam

// Procedure around Deposits for governance
type DepositProcedure struct {
MinDeposit sdk.Coins `json:"min_deposit"` // Minimum deposit for a proposal to enter voting period.
MaxDepositPeriod int64 `json:"max_deposit_period"` // Maximum period for Atom holders to deposit on a proposal. Initial value: 2 months
}

type DepositProcedureParam struct {
Value gov.DepositProcedure
Value DepositProcedure
psetter params.Setter
pgetter params.Getter
}

func (param *DepositProcedureParam) InitGenesis(genesisState interface{}) {
if value, ok := genesisState.(gov.DepositProcedure); ok {
if value, ok := genesisState.(DepositProcedure); ok {
param.Value = value
} else {
param.Value = gov.DepositProcedure{
param.Value = DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 10)},
MaxDepositPeriod: 1440}
}
Expand Down Expand Up @@ -66,19 +71,19 @@ func (param *DepositProcedureParam) Valid(jsonStr string) sdk.Error {
if err = json.Unmarshal([]byte(jsonStr), &param.Value); err == nil {

if param.Value.MinDeposit[0].Denom != "iris" {
return sdk.NewError(gov.DefaultCodespace, gov.CodeInvalidMinDepositDenom, fmt.Sprintf("It should be iris "))
return sdk.NewError(DefaultCodespace, CodeInvalidMinDepositDenom, fmt.Sprintf("It should be iris "))
}

if param.Value.MinDeposit[0].Amount.GT(sdk.NewInt(10)) && param.Value.MinDeposit[0].Amount.LT(sdk.NewInt(20000)) {
return sdk.NewError(gov.DefaultCodespace, gov.CodeInvalidMinDepositAmount, fmt.Sprintf("MinDepositAmount should be larger than 10 and less than 20000"))
return sdk.NewError(DefaultCodespace, CodeInvalidMinDepositAmount, fmt.Sprintf("MinDepositAmount should be larger than 10 and less than 20000"))
}

if param.Value.MaxDepositPeriod > 20 && param.Value.MaxDepositPeriod < 20000 {
return sdk.NewError(gov.DefaultCodespace, gov.CodeInvalidDepositPeriod, fmt.Sprintf("MaxDepositPeriod should be larger than 20 and less than 20000"))
return sdk.NewError(DefaultCodespace, CodeInvalidDepositPeriod, fmt.Sprintf("MaxDepositPeriod should be larger than 20 and less than 20000"))
}

return nil

}
return sdk.NewError(gov.DefaultCodespace, gov.CodeInvalidMinDeposit, fmt.Sprintf("Json is not valid"))
return sdk.NewError(DefaultCodespace, CodeInvalidMinDeposit, fmt.Sprintf("Json is not valid"))
}
5 changes: 2 additions & 3 deletions modules/gov/params/gov_params_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/wire"
"github.com/cosmos/cosmos-sdk/x/params"
"github.com/irisnet/irishub/modules/gov"
"github.com/stretchr/testify/require"
abci "github.com/tendermint/tendermint/abci/types"
dbm "github.com/tendermint/tendermint/libs/db"
Expand All @@ -27,11 +26,11 @@ func TestDepositProcedureParam(t *testing.T) {
ctx := defaultContext(skey)
paramKeeper := params.NewKeeper(wire.NewCodec(), skey)

p1 := gov.DepositProcedure{
p1 := DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 10)},
MaxDepositPeriod: 1440}

p2 := gov.DepositProcedure{
p2 := DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 30)},
MaxDepositPeriod: 1440}

Expand Down
6 changes: 0 additions & 6 deletions modules/gov/procedures.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
)

// Procedure around Deposits for governance
type DepositProcedure struct {
MinDeposit sdk.Coins `json:"min_deposit"` // Minimum deposit for a proposal to enter voting period.
MaxDepositPeriod int64 `json:"max_deposit_period"` // Maximum period for Atom holders to deposit on a proposal. Initial value: 2 months
}

// Procedure around Tallying votes in governance
type TallyingProcedure struct {
Threshold sdk.Rat `json:"threshold"` // Minimum propotion of Yes votes for proposal to pass. Initial value: 0.5
Expand Down
3 changes: 2 additions & 1 deletion modules/gov/test_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/irisnet/irishub/modules/iparams"
"github.com/irisnet/irishub/types"
"fmt"
"github.com/irisnet/irishub/modules/gov/params"
)

// initialize the mock application for this module
Expand Down Expand Up @@ -74,7 +75,7 @@ func getInitChainer(mapp *mock.App, keeper Keeper, stakeKeeper stake.Keeper) sdk
minDeposit,_ := ct.ConvertToMinCoin(fmt.Sprintf("%d%s",10,"iris"))
InitGenesis(ctx, keeper, GenesisState{
StartingProposalID: 1,
DepositProcedure: DepositProcedure{
DepositProcedure: govparams.DepositProcedure{
MinDeposit: sdk.Coins{minDeposit},
MaxDepositPeriod: 1440,
},
Expand Down
3 changes: 2 additions & 1 deletion modules/gov/wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package gov

import (
"github.com/cosmos/cosmos-sdk/wire"
"github.com/irisnet/irishub/modules/gov/params"
)

// Register concrete types on wire codec
Expand All @@ -15,7 +16,7 @@ func RegisterWire(cdc *wire.Codec) {
cdc.RegisterConcrete(&TextProposal{}, "gov/TextProposal", nil)

//////////////////// iris begin ///////////////////////////
cdc.RegisterConcrete(DepositProcedure{},"cosmos-sdk/DepositProcedure",nil)
cdc.RegisterConcrete(govparams.DepositProcedure{},"cosmos-sdk/DepositProcedure",nil)
cdc.RegisterConcrete(TallyingProcedure{},"cosmos-sdk/TallyingProcedure",nil)
cdc.RegisterConcrete(VotingProcedure{},"cosmos-sdk/VotingProcedure",nil)
cdc.RegisterConcrete(&ParameterProposal{}, "gov/ParameterProposal", nil)
Expand Down
19 changes: 9 additions & 10 deletions modules/parameter/helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/wire"
"github.com/cosmos/cosmos-sdk/x/params"
"github.com/irisnet/irishub/modules/gov"
govParam "github.com/irisnet/irishub/modules/gov/params"
"github.com/irisnet/irishub/modules/gov/params"
"github.com/stretchr/testify/require"
abci "github.com/tendermint/tendermint/abci/types"
dbm "github.com/tendermint/tendermint/libs/db"
Expand All @@ -29,23 +28,23 @@ func TestInitGenesisParameter(t *testing.T) {
ctx := defaultContext(skey)
paramKeeper := params.NewKeeper(wire.NewCodec(), skey)

p1 := gov.DepositProcedure{
p1 := govparams.DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 10)},
MaxDepositPeriod: 1440}

p2 := gov.DepositProcedure{
p2 := govparams.DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 20)},
MaxDepositPeriod: 1440}

govParam.DepositProcedureParameter.SetReadWriter(paramKeeper.Setter())
govparams.DepositProcedureParameter.SetReadWriter(paramKeeper.Setter())

InitGenesisParameter(&govParam.DepositProcedureParameter, ctx,nil)
InitGenesisParameter(&govparams.DepositProcedureParameter, ctx,nil)

require.Equal(t, p1, govParam.DepositProcedureParameter.Value)
require.Equal(t, p1, govparams.DepositProcedureParameter.Value)

require.Equal(t, govParam.DepositProcedureParameter.ToJson(), "{\"min_deposit\":[{\"denom\":\"iris\",\"amount\":\"10\"}],\"max_deposit_period\":1440}")
require.Equal(t, govparams.DepositProcedureParameter.ToJson(), "{\"min_deposit\":[{\"denom\":\"iris\",\"amount\":\"10\"}],\"max_deposit_period\":1440}")

InitGenesisParameter(&govParam.DepositProcedureParameter, ctx, p2)
InitGenesisParameter(&govparams.DepositProcedureParameter, ctx, p2)

require.Equal(t, p1, govParam.DepositProcedureParameter.Value)
require.Equal(t, p1, govparams.DepositProcedureParameter.Value)
}
23 changes: 11 additions & 12 deletions modules/parameter/paramMap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/wire"
"github.com/cosmos/cosmos-sdk/x/params"
"github.com/irisnet/irishub/modules/gov"
govParam "github.com/irisnet/irishub/modules/gov/params"
"github.com/irisnet/irishub/modules/gov/params"
"github.com/stretchr/testify/require"
"testing"
)
Expand All @@ -16,22 +15,22 @@ func TestRegisterParamMapping(t *testing.T) {
ctx := defaultContext(skey)
paramKeeper := params.NewKeeper(wire.NewCodec(), skey)

p1 := gov.DepositProcedure{
p1 := govparams.DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 10)},
MaxDepositPeriod: 1440}

p2 := gov.DepositProcedure{
p2 := govparams.DepositProcedure{
MinDeposit: sdk.Coins{sdk.NewInt64Coin("iris", 30)},
MaxDepositPeriod: 1440}

govParam.DepositProcedureParameter.SetReadWriter(paramKeeper.Setter())
RegisterGovParamMapping(&govParam.DepositProcedureParameter)
InitGenesisParameter(&govParam.DepositProcedureParameter, ctx, nil)
govparams.DepositProcedureParameter.SetReadWriter(paramKeeper.Setter())
RegisterGovParamMapping(&govparams.DepositProcedureParameter)
InitGenesisParameter(&govparams.DepositProcedureParameter, ctx, nil)

require.Equal(t, paramMapping[govParam.DepositProcedureParameter.GetStoreKey()].ToJson(), "{\"min_deposit\":[{\"denom\":\"iris\",\"amount\":\"10\"}],\"max_deposit_period\":1440}")
require.Equal(t, p1, govParam.DepositProcedureParameter.Value)
require.Equal(t, paramMapping[govparams.DepositProcedureParameter.GetStoreKey()].ToJson(), "{\"min_deposit\":[{\"denom\":\"iris\",\"amount\":\"10\"}],\"max_deposit_period\":1440}")
require.Equal(t, p1, govparams.DepositProcedureParameter.Value)

paramMapping[govParam.DepositProcedureParameter.GetStoreKey()].Update(ctx, "{\"min_deposit\":[{\"denom\":\"iris\",\"amount\":\"30\"}],\"max_deposit_period\":1440}")
govParam.DepositProcedureParameter.LoadValue(ctx)
require.Equal(t, p2, govParam.DepositProcedureParameter.Value)
paramMapping[govparams.DepositProcedureParameter.GetStoreKey()].Update(ctx, "{\"min_deposit\":[{\"denom\":\"iris\",\"amount\":\"30\"}],\"max_deposit_period\":1440}")
govparams.DepositProcedureParameter.LoadValue(ctx)
require.Equal(t, p2, govparams.DepositProcedureParameter.Value)
}
2 changes: 1 addition & 1 deletion modules/parameter/parameter.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ type SignalParameter interface {
type GovParameter interface {
Parameter

Valid(json string) error
Valid(json string) sdk.Error

Update(ctx sdk.Context, json string)

Expand Down