diff --git a/docs/spec/supply/01_concepts.md b/docs/spec/supply/01_concepts.md index 3d71e6e4b5..79c56e2906 100644 --- a/docs/spec/supply/01_concepts.md +++ b/docs/spec/supply/01_concepts.md @@ -56,7 +56,6 @@ permissions to that specific account and perform or not the action. The available permissions are: -- `Basic`: is allowed to only transfer its coins to other accounts. -- `Minter`: allows for a module to mint a specific amount of coins as well as perform the `Basic` permissioned actions. -- `Burner`: allows for a module to burn a specific amount of coins as well as perform the `Basic` permissioned actions. +- `Minter`: allows for a module to mint a specific amount of coins. +- `Burner`: allows for a module to burn a specific amount of coins. - `Staking`: allows for a module to delegate and undelegate a specific amount of coins. diff --git a/simapp/app.go b/simapp/app.go index 0855d9e58e..4defb20085 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -145,8 +145,8 @@ func NewSimApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bo // account permissions maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, - distr.ModuleName: []string{supply.Basic}, + auth.FeeCollectorName: nil, + distr.ModuleName: nil, mint.ModuleName: []string{supply.Minter}, staking.BondedPoolName: []string{supply.Burner, supply.Staking}, staking.NotBondedPoolName: []string{supply.Burner, supply.Staking}, diff --git a/x/distribution/keeper/test_common.go b/x/distribution/keeper/test_common.go index 26aaa5f735..9b8a7ee7d0 100644 --- a/x/distribution/keeper/test_common.go +++ b/x/distribution/keeper/test_common.go @@ -121,8 +121,8 @@ func CreateTestInputAdvanced(t *testing.T, isCheckTx bool, initPower int64, accountKeeper := auth.NewAccountKeeper(cdc, keyAcc, pk.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount) bankKeeper := bank.NewBaseKeeper(accountKeeper, pk.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, - types.ModuleName: []string{supply.Basic}, + auth.FeeCollectorName: nil, + types.ModuleName: nil, staking.NotBondedPoolName: []string{supply.Burner, supply.Staking}, staking.BondedPoolName: []string{supply.Burner, supply.Staking}, } @@ -144,10 +144,10 @@ func CreateTestInputAdvanced(t *testing.T, isCheckTx bool, initPower int64, } // create module accounts - feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName, supply.Basic) + feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName) notBondedPool := supply.NewEmptyModuleAccount(staking.NotBondedPoolName, supply.Burner, supply.Staking) bondPool := supply.NewEmptyModuleAccount(staking.BondedPoolName, supply.Burner, supply.Staking) - distrAcc := supply.NewEmptyModuleAccount(types.ModuleName, supply.Basic) + distrAcc := supply.NewEmptyModuleAccount(types.ModuleName) keeper.supplyKeeper.SetModuleAccount(ctx, feeCollectorAcc) keeper.supplyKeeper.SetModuleAccount(ctx, notBondedPool) diff --git a/x/mint/internal/keeper/test_common.go b/x/mint/internal/keeper/test_common.go index c26908ce2e..09d1b1ba3f 100644 --- a/x/mint/internal/keeper/test_common.go +++ b/x/mint/internal/keeper/test_common.go @@ -58,7 +58,7 @@ func newTestInput(t *testing.T) testInput { accountKeeper := auth.NewAccountKeeper(types.ModuleCdc, keyAcc, paramsKeeper.Subspace(auth.DefaultParamspace), auth.ProtoBaseAccount) bankKeeper := bank.NewBaseKeeper(accountKeeper, paramsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, + auth.FeeCollectorName: nil, types.ModuleName: []string{supply.Minter}, staking.NotBondedPoolName: []string{supply.Burner, supply.Staking}, staking.BondedPoolName: []string{supply.Burner, supply.Staking}, @@ -72,7 +72,7 @@ func newTestInput(t *testing.T) testInput { mintKeeper := NewKeeper(types.ModuleCdc, keyMint, paramsKeeper.Subspace(types.DefaultParamspace), &stakingKeeper, supplyKeeper, auth.FeeCollectorName) // set module accounts - feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName, supply.Basic) + feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName) minterAcc := supply.NewEmptyModuleAccount(types.ModuleName, supply.Minter) notBondedPool := supply.NewEmptyModuleAccount(staking.NotBondedPoolName, supply.Burner) bondPool := supply.NewEmptyModuleAccount(staking.BondedPoolName, supply.Burner) diff --git a/x/slashing/app_test.go b/x/slashing/app_test.go index 82ba0659e0..acdc1e7e93 100644 --- a/x/slashing/app_test.go +++ b/x/slashing/app_test.go @@ -37,7 +37,7 @@ func getMockApp(t *testing.T) (*mock.App, staking.Keeper, Keeper) { bankKeeper := bank.NewBaseKeeper(mapp.AccountKeeper, mapp.ParamsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, + auth.FeeCollectorName: nil, staking.NotBondedPoolName: []string{supply.Burner, supply.Staking}, staking.BondedPoolName: []string{supply.Burner, supply.Staking}, } @@ -69,7 +69,7 @@ func getEndBlocker(keeper staking.Keeper) sdk.EndBlocker { func getInitChainer(mapp *mock.App, keeper staking.Keeper, accountKeeper types.AccountKeeper, supplyKeeper types.SupplyKeeper) sdk.InitChainer { return func(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { // set module accounts - feeCollector := supply.NewEmptyModuleAccount(auth.FeeCollectorName, supply.Basic) + feeCollector := supply.NewEmptyModuleAccount(auth.FeeCollectorName) notBondedPool := supply.NewEmptyModuleAccount(types.NotBondedPoolName, supply.Burner, supply.Staking) bondPool := supply.NewEmptyModuleAccount(types.BondedPoolName, supply.Burner, supply.Staking) diff --git a/x/slashing/test_common.go b/x/slashing/test_common.go index 1a27a0d1f7..ac498e5a79 100644 --- a/x/slashing/test_common.go +++ b/x/slashing/test_common.go @@ -78,7 +78,7 @@ func createTestInput(t *testing.T, defaults Params) (sdk.Context, bank.Keeper, s bk := bank.NewBaseKeeper(accountKeeper, paramsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, + auth.FeeCollectorName: nil, staking.NotBondedPoolName: []string{supply.Burner, supply.Staking}, staking.BondedPoolName: []string{supply.Burner, supply.Staking}, } @@ -91,7 +91,7 @@ func createTestInput(t *testing.T, defaults Params) (sdk.Context, bank.Keeper, s genesis := staking.DefaultGenesisState() // set module accounts - feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName, supply.Basic) + feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName) notBondedPool := supply.NewEmptyModuleAccount(staking.NotBondedPoolName, supply.Burner, supply.Staking) bondPool := supply.NewEmptyModuleAccount(staking.BondedPoolName, supply.Burner, supply.Staking) diff --git a/x/staking/app_test.go b/x/staking/app_test.go index cb4921e314..9a8e291e2e 100644 --- a/x/staking/app_test.go +++ b/x/staking/app_test.go @@ -27,7 +27,7 @@ func getMockApp(t *testing.T) (*mock.App, Keeper) { bankKeeper := bank.NewBaseKeeper(mApp.AccountKeeper, mApp.ParamsKeeper.Subspace(bank.DefaultParamspace), bank.DefaultCodespace) maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, + auth.FeeCollectorName: nil, types.NotBondedPoolName: []string{supply.Burner, supply.Staking}, types.BondedPoolName: []string{supply.Burner, supply.Staking}, } @@ -60,7 +60,7 @@ func getInitChainer(mapp *mock.App, keeper Keeper, accountKeeper types.AccountKe mapp.InitChainer(ctx, req) // set module accounts - feeCollector := supply.NewEmptyModuleAccount(auth.FeeCollectorName, supply.Basic) + feeCollector := supply.NewEmptyModuleAccount(auth.FeeCollectorName) notBondedPool := supply.NewEmptyModuleAccount(types.NotBondedPoolName, supply.Burner, supply.Staking) bondPool := supply.NewEmptyModuleAccount(types.BondedPoolName, supply.Burner, supply.Staking) diff --git a/x/staking/keeper/test_common.go b/x/staking/keeper/test_common.go index 3310815095..3defdfe898 100644 --- a/x/staking/keeper/test_common.go +++ b/x/staking/keeper/test_common.go @@ -125,7 +125,7 @@ func CreateTestInput(t *testing.T, isCheckTx bool, initPower int64) (sdk.Context ) maccPerms := map[string][]string{ - auth.FeeCollectorName: []string{supply.Basic}, + auth.FeeCollectorName: nil, types.NotBondedPoolName: []string{supply.Burner, supply.Staking}, types.BondedPoolName: []string{supply.Burner, supply.Staking}, } @@ -141,7 +141,7 @@ func CreateTestInput(t *testing.T, isCheckTx bool, initPower int64) (sdk.Context keeper.SetParams(ctx, types.DefaultParams()) // set module accounts - feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName, supply.Basic) + feeCollectorAcc := supply.NewEmptyModuleAccount(auth.FeeCollectorName) notBondedPool := supply.NewEmptyModuleAccount(types.NotBondedPoolName, supply.Burner, supply.Staking) bondPool := supply.NewEmptyModuleAccount(types.BondedPoolName, supply.Burner, supply.Staking) diff --git a/x/supply/alias.go b/x/supply/alias.go index 77ee6f8b29..9bc7f5f135 100644 --- a/x/supply/alias.go +++ b/x/supply/alias.go @@ -15,7 +15,6 @@ const ( StoreKey = types.StoreKey RouterKey = types.RouterKey QuerierRoute = types.QuerierRoute - Basic = types.Basic Minter = types.Minter Burner = types.Burner Staking = types.Staking diff --git a/x/supply/internal/keeper/bank_test.go b/x/supply/internal/keeper/bank_test.go index 187ccf4a67..e1701b653b 100644 --- a/x/supply/internal/keeper/bank_test.go +++ b/x/supply/internal/keeper/bank_test.go @@ -12,10 +12,10 @@ import ( const initialPower = int64(100) var ( - holderAcc = types.NewEmptyModuleAccount(types.Basic, types.Basic) + holderAcc = types.NewEmptyModuleAccount(holder) burnerAcc = types.NewEmptyModuleAccount(types.Burner, types.Burner) minterAcc = types.NewEmptyModuleAccount(types.Minter, types.Minter) - multiPermAcc = types.NewEmptyModuleAccount(multiPerm, types.Basic, types.Burner, types.Minter) + multiPermAcc = types.NewEmptyModuleAccount(multiPerm, types.Burner, types.Minter, types.Staking) randomPermAcc = types.NewEmptyModuleAccount(randomPerm, "random") initTokens = sdk.TokensFromConsensusPower(initialPower) @@ -44,7 +44,7 @@ func TestSendCoins(t *testing.T) { keeper.SetModuleAccount(ctx, burnerAcc) ak.SetAccount(ctx, baseAcc) - err = keeper.SendCoinsFromModuleToModule(ctx, "", types.Basic, initCoins) + err = keeper.SendCoinsFromModuleToModule(ctx, "", holderAcc.GetName(), initCoins) require.Error(t, err) require.Panics(t, func() { @@ -54,12 +54,12 @@ func TestSendCoins(t *testing.T) { err = keeper.SendCoinsFromModuleToAccount(ctx, "", baseAcc.GetAddress(), initCoins) require.Error(t, err) - err = keeper.SendCoinsFromModuleToAccount(ctx, types.Basic, baseAcc.GetAddress(), initCoins.Add(initCoins)) + err = keeper.SendCoinsFromModuleToAccount(ctx, holderAcc.GetName(), baseAcc.GetAddress(), initCoins.Add(initCoins)) require.Error(t, err) - err = keeper.SendCoinsFromModuleToModule(ctx, types.Basic, types.Burner, initCoins) + err = keeper.SendCoinsFromModuleToModule(ctx, holderAcc.GetName(), types.Burner, initCoins) require.NoError(t, err) - require.Equal(t, sdk.Coins(nil), getCoinsByName(ctx, keeper, types.Basic)) + require.Equal(t, sdk.Coins(nil), getCoinsByName(ctx, keeper, holderAcc.GetName())) require.Equal(t, initCoins, getCoinsByName(ctx, keeper, types.Burner)) err = keeper.SendCoinsFromModuleToAccount(ctx, types.Burner, baseAcc.GetAddress(), initCoins) diff --git a/x/supply/internal/keeper/test_common.go b/x/supply/internal/keeper/test_common.go index 285492510c..5370d0c160 100644 --- a/x/supply/internal/keeper/test_common.go +++ b/x/supply/internal/keeper/test_common.go @@ -25,6 +25,7 @@ import ( var ( multiPerm = "multiple permissions account" randomPerm = "random permission" + holder = "holder" ) // nolint: deadcode unused @@ -78,10 +79,10 @@ func createTestInput(t *testing.T, isCheckTx bool, initPower int64, nAccs int64) createTestAccs(ctx, int(nAccs), initialCoins, &ak) maccPerms := map[string][]string{ - types.Basic: []string{types.Basic}, + holder: nil, types.Minter: []string{types.Minter}, types.Burner: []string{types.Burner}, - multiPerm: []string{types.Basic, types.Minter, types.Burner}, + multiPerm: []string{types.Minter, types.Burner, types.Staking}, randomPerm: []string{"random"}, } keeper := NewKeeper(cdc, keySupply, ak, bk, DefaultCodespace, maccPerms) diff --git a/x/supply/internal/types/account_test.go b/x/supply/internal/types/account_test.go index 214c847a76..d7015c8f2a 100644 --- a/x/supply/internal/types/account_test.go +++ b/x/supply/internal/types/account_test.go @@ -13,7 +13,7 @@ import ( func TestModuleAccountMarshalYAML(t *testing.T) { name := "test" - moduleAcc := NewEmptyModuleAccount(name, Basic, Minter, Burner) + moduleAcc := NewEmptyModuleAccount(name, Minter, Burner, Staking) moduleAddress := sdk.AccAddress(crypto.AddressHash([]byte(name))) bs, err := yaml.Marshal(moduleAcc) require.NoError(t, err) @@ -29,7 +29,7 @@ func TestModuleAccountMarshalYAML(t *testing.T) { - %s - %s - %s -`, moduleAddress, name, Basic, Minter, Burner) +`, moduleAddress, name, Minter, Burner, Staking) require.Equal(t, want, string(bs)) require.Equal(t, want, moduleAcc.String()) @@ -40,29 +40,29 @@ func TestRemovePermissions(t *testing.T) { macc := NewEmptyModuleAccount(name) require.Empty(t, macc.GetPermissions()) - macc.AddPermissions(Basic, Minter, Burner) - require.Equal(t, []string{Basic, Minter, Burner}, macc.GetPermissions(), "did not add permissions") + macc.AddPermissions(Minter, Burner, Staking) + require.Equal(t, []string{Minter, Burner, Staking}, macc.GetPermissions(), "did not add permissions") err := macc.RemovePermission("random") require.Error(t, err, "did not error on removing nonexistent permission") err = macc.RemovePermission(Burner) require.NoError(t, err, "failed to remove permission") - require.Equal(t, []string{Basic, Minter}, macc.GetPermissions(), "does not have correct permissions") + require.Equal(t, []string{Minter, Staking}, macc.GetPermissions(), "does not have correct permissions") - err = macc.RemovePermission(Basic) + err = macc.RemovePermission(Staking) require.NoError(t, err, "failed to remove permission") require.Equal(t, []string{Minter}, macc.GetPermissions(), "does not have correct permissions") } func TestHasPermissions(t *testing.T) { name := "test" - macc := NewEmptyModuleAccount(name, Basic, Minter, Burner) + macc := NewEmptyModuleAccount(name, Staking, Minter, Burner) cases := []struct { permission string expectHas bool }{ - {Basic, true}, + {Staking, true}, {Minter, true}, {Burner, true}, {"other", false}, diff --git a/x/supply/internal/types/permissions.go b/x/supply/internal/types/permissions.go index ffb8cf492b..8547235003 100644 --- a/x/supply/internal/types/permissions.go +++ b/x/supply/internal/types/permissions.go @@ -9,7 +9,6 @@ import ( // permissions const ( - Basic = "basic" Minter = "minter" Burner = "burner" Staking = "staking" diff --git a/x/supply/internal/types/permissions_test.go b/x/supply/internal/types/permissions_test.go index 2612d3e0ed..fad1408ae3 100644 --- a/x/supply/internal/types/permissions_test.go +++ b/x/supply/internal/types/permissions_test.go @@ -8,21 +8,20 @@ import ( func TestHasPermission(t *testing.T) { emptyPermAddr := NewPermissionsForAddress("empty", []string{}) - has := emptyPermAddr.HasPermission(Basic) + has := emptyPermAddr.HasPermission(Minter) require.False(t, has) cases := []struct { permission string expectHas bool }{ - {Basic, true}, {Minter, true}, {Burner, true}, {Staking, true}, {"random", false}, {"", false}, } - permAddr := NewPermissionsForAddress("test", []string{Basic, Minter, Burner, Staking}) + permAddr := NewPermissionsForAddress("test", []string{Minter, Burner, Staking}) for i, tc := range cases { has = permAddr.HasPermission(tc.permission) require.Equal(t, tc.expectHas, has, "test case #%d", i) @@ -37,9 +36,9 @@ func TestValidatePermissions(t *testing.T) { expectPass bool }{ {"no permissions", []string{}, true}, - {"valid permission", []string{Basic}, true}, + {"valid permission", []string{Minter}, true}, {"invalid permission", []string{""}, false}, - {"invalid and valid permission", []string{Basic, ""}, false}, + {"invalid and valid permission", []string{Staking, ""}, false}, } for i, tc := range cases {