mirror of https://github.com/certusone/wasmd.git
Merge PR #56: Update to latest SDK: Supply
This commit is contained in:
parent
534e56abd1
commit
bab3694437
2
Makefile
2
Makefile
|
@ -134,7 +134,7 @@ check-cover:
|
|||
@go test -mod=readonly -timeout 30m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' ./...
|
||||
|
||||
check-build: build
|
||||
@go test -mod=readonly -p 4 `go list ./cli_test/...` -tags=cli_test
|
||||
@go test -mod=readonly -p 4 `go list ./cli_test/...` -tags=cli_test -v
|
||||
|
||||
|
||||
lint: golangci-lint
|
||||
|
|
123
app/app.go
123
app/app.go
|
@ -11,15 +11,16 @@ import (
|
|||
|
||||
bam "github.com/cosmos/cosmos-sdk/baseapp"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
"github.com/cosmos/cosmos-sdk/version"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||
"github.com/cosmos/cosmos-sdk/x/crisis"
|
||||
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
||||
distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client"
|
||||
"github.com/cosmos/cosmos-sdk/x/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint"
|
||||
|
@ -27,6 +28,7 @@ import (
|
|||
paramsclient "github.com/cosmos/cosmos-sdk/x/params/client"
|
||||
"github.com/cosmos/cosmos-sdk/x/slashing"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
"github.com/cosmos/cosmos-sdk/x/supply"
|
||||
)
|
||||
|
||||
const appName = "GaiaApp"
|
||||
|
@ -57,6 +59,7 @@ func init() {
|
|||
params.AppModuleBasic{},
|
||||
crisis.AppModuleBasic{},
|
||||
slashing.AppModuleBasic{},
|
||||
supply.AppModuleBasic{},
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -77,30 +80,30 @@ type GaiaApp struct {
|
|||
invCheckPeriod uint
|
||||
|
||||
// keys to access the substores
|
||||
keyMain *sdk.KVStoreKey
|
||||
keyAccount *sdk.KVStoreKey
|
||||
keyStaking *sdk.KVStoreKey
|
||||
tkeyStaking *sdk.TransientStoreKey
|
||||
keySlashing *sdk.KVStoreKey
|
||||
keyMint *sdk.KVStoreKey
|
||||
keyDistr *sdk.KVStoreKey
|
||||
tkeyDistr *sdk.TransientStoreKey
|
||||
keyGov *sdk.KVStoreKey
|
||||
keyFeeCollection *sdk.KVStoreKey
|
||||
keyParams *sdk.KVStoreKey
|
||||
tkeyParams *sdk.TransientStoreKey
|
||||
keyMain *sdk.KVStoreKey
|
||||
keyAccount *sdk.KVStoreKey
|
||||
keySupply *sdk.KVStoreKey
|
||||
keyStaking *sdk.KVStoreKey
|
||||
tkeyStaking *sdk.TransientStoreKey
|
||||
keySlashing *sdk.KVStoreKey
|
||||
keyMint *sdk.KVStoreKey
|
||||
keyDistr *sdk.KVStoreKey
|
||||
tkeyDistr *sdk.TransientStoreKey
|
||||
keyGov *sdk.KVStoreKey
|
||||
keyParams *sdk.KVStoreKey
|
||||
tkeyParams *sdk.TransientStoreKey
|
||||
|
||||
// keepers
|
||||
accountKeeper auth.AccountKeeper
|
||||
feeCollectionKeeper auth.FeeCollectionKeeper
|
||||
bankKeeper bank.Keeper
|
||||
stakingKeeper staking.Keeper
|
||||
slashingKeeper slashing.Keeper
|
||||
mintKeeper mint.Keeper
|
||||
distrKeeper distr.Keeper
|
||||
govKeeper gov.Keeper
|
||||
crisisKeeper crisis.Keeper
|
||||
paramsKeeper params.Keeper
|
||||
accountKeeper auth.AccountKeeper
|
||||
bankKeeper bank.Keeper
|
||||
supplyKeeper supply.Keeper
|
||||
stakingKeeper staking.Keeper
|
||||
slashingKeeper slashing.Keeper
|
||||
mintKeeper mint.Keeper
|
||||
distrKeeper distr.Keeper
|
||||
govKeeper gov.Keeper
|
||||
crisisKeeper crisis.Keeper
|
||||
paramsKeeper params.Keeper
|
||||
|
||||
// the module manager
|
||||
mm *module.Manager
|
||||
|
@ -117,21 +120,21 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
|||
bApp.SetAppVersion(version.Version)
|
||||
|
||||
var app = &GaiaApp{
|
||||
BaseApp: bApp,
|
||||
cdc: cdc,
|
||||
invCheckPeriod: invCheckPeriod,
|
||||
keyMain: sdk.NewKVStoreKey(bam.MainStoreKey),
|
||||
keyAccount: sdk.NewKVStoreKey(auth.StoreKey),
|
||||
keyStaking: sdk.NewKVStoreKey(staking.StoreKey),
|
||||
tkeyStaking: sdk.NewTransientStoreKey(staking.TStoreKey),
|
||||
keyMint: sdk.NewKVStoreKey(mint.StoreKey),
|
||||
keyDistr: sdk.NewKVStoreKey(distr.StoreKey),
|
||||
tkeyDistr: sdk.NewTransientStoreKey(distr.TStoreKey),
|
||||
keySlashing: sdk.NewKVStoreKey(slashing.StoreKey),
|
||||
keyGov: sdk.NewKVStoreKey(gov.StoreKey),
|
||||
keyFeeCollection: sdk.NewKVStoreKey(auth.FeeStoreKey),
|
||||
keyParams: sdk.NewKVStoreKey(params.StoreKey),
|
||||
tkeyParams: sdk.NewTransientStoreKey(params.TStoreKey),
|
||||
BaseApp: bApp,
|
||||
cdc: cdc,
|
||||
invCheckPeriod: invCheckPeriod,
|
||||
keyMain: sdk.NewKVStoreKey(bam.MainStoreKey),
|
||||
keyAccount: sdk.NewKVStoreKey(auth.StoreKey),
|
||||
keySupply: sdk.NewKVStoreKey(supply.StoreKey),
|
||||
keyStaking: sdk.NewKVStoreKey(staking.StoreKey),
|
||||
tkeyStaking: sdk.NewTransientStoreKey(staking.TStoreKey),
|
||||
keyMint: sdk.NewKVStoreKey(mint.StoreKey),
|
||||
keyDistr: sdk.NewKVStoreKey(distr.StoreKey),
|
||||
tkeyDistr: sdk.NewTransientStoreKey(distr.TStoreKey),
|
||||
keySlashing: sdk.NewKVStoreKey(slashing.StoreKey),
|
||||
keyGov: sdk.NewKVStoreKey(gov.StoreKey),
|
||||
keyParams: sdk.NewKVStoreKey(params.StoreKey),
|
||||
tkeyParams: sdk.NewTransientStoreKey(params.TStoreKey),
|
||||
}
|
||||
|
||||
// init params keeper and subspaces
|
||||
|
@ -145,19 +148,24 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
|||
govSubspace := app.paramsKeeper.Subspace(gov.DefaultParamspace)
|
||||
crisisSubspace := app.paramsKeeper.Subspace(crisis.DefaultParamspace)
|
||||
|
||||
// account permissions
|
||||
basicModuleAccs := []string{auth.FeeCollectorName, distr.ModuleName}
|
||||
minterModuleAccs := []string{mint.ModuleName}
|
||||
burnerModuleAccs := []string{staking.BondedPoolName, staking.NotBondedPoolName, gov.ModuleName}
|
||||
|
||||
// add keepers
|
||||
app.accountKeeper = auth.NewAccountKeeper(app.cdc, app.keyAccount, authSubspace, auth.ProtoBaseAccount)
|
||||
app.bankKeeper = bank.NewBaseKeeper(app.accountKeeper, bankSubspace, bank.DefaultCodespace)
|
||||
app.feeCollectionKeeper = auth.NewFeeCollectionKeeper(app.cdc, app.keyFeeCollection)
|
||||
stakingKeeper := staking.NewKeeper(app.cdc, app.keyStaking, app.tkeyStaking, app.bankKeeper,
|
||||
stakingSubspace, staking.DefaultCodespace)
|
||||
app.mintKeeper = mint.NewKeeper(app.cdc, app.keyMint, mintSubspace, &stakingKeeper, app.feeCollectionKeeper)
|
||||
app.distrKeeper = distr.NewKeeper(app.cdc, app.keyDistr, distrSubspace, app.bankKeeper, &stakingKeeper,
|
||||
app.feeCollectionKeeper, distr.DefaultCodespace)
|
||||
app.supplyKeeper = supply.NewKeeper(app.cdc, app.keySupply, app.accountKeeper,
|
||||
app.bankKeeper, supply.DefaultCodespace, basicModuleAccs, minterModuleAccs, burnerModuleAccs)
|
||||
stakingKeeper := staking.NewKeeper(app.cdc, app.keyStaking, app.tkeyStaking,
|
||||
app.supplyKeeper, stakingSubspace, staking.DefaultCodespace)
|
||||
app.mintKeeper = mint.NewKeeper(app.cdc, app.keyMint, mintSubspace, &stakingKeeper, app.supplyKeeper, auth.FeeCollectorName)
|
||||
app.distrKeeper = distr.NewKeeper(app.cdc, app.keyDistr, distrSubspace, &stakingKeeper,
|
||||
app.supplyKeeper, distr.DefaultCodespace, auth.FeeCollectorName)
|
||||
app.slashingKeeper = slashing.NewKeeper(app.cdc, app.keySlashing, &stakingKeeper,
|
||||
slashingSubspace, slashing.DefaultCodespace)
|
||||
app.crisisKeeper = crisis.NewKeeper(crisisSubspace, invCheckPeriod, app.distrKeeper,
|
||||
app.bankKeeper, app.feeCollectionKeeper)
|
||||
app.crisisKeeper = crisis.NewKeeper(crisisSubspace, invCheckPeriod, app.supplyKeeper, auth.FeeCollectorName)
|
||||
|
||||
// register the proposal types
|
||||
govRouter := gov.NewRouter()
|
||||
|
@ -165,7 +173,7 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
|||
AddRoute(params.RouterKey, params.NewParamChangeProposalHandler(app.paramsKeeper)).
|
||||
AddRoute(distr.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.distrKeeper))
|
||||
app.govKeeper = gov.NewKeeper(app.cdc, app.keyGov, app.paramsKeeper, govSubspace,
|
||||
app.bankKeeper, &stakingKeeper, gov.DefaultCodespace, govRouter)
|
||||
app.supplyKeeper, &stakingKeeper, gov.DefaultCodespace, govRouter)
|
||||
|
||||
// register the staking hooks
|
||||
// NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks
|
||||
|
@ -175,14 +183,15 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
|||
app.mm = module.NewManager(
|
||||
genaccounts.NewAppModule(app.accountKeeper),
|
||||
genutil.NewAppModule(app.accountKeeper, app.stakingKeeper, app.BaseApp.DeliverTx),
|
||||
auth.NewAppModule(app.accountKeeper, app.feeCollectionKeeper),
|
||||
auth.NewAppModule(app.accountKeeper),
|
||||
bank.NewAppModule(app.bankKeeper, app.accountKeeper),
|
||||
crisis.NewAppModule(app.crisisKeeper),
|
||||
distr.NewAppModule(app.distrKeeper),
|
||||
gov.NewAppModule(app.govKeeper),
|
||||
supply.NewAppModule(app.supplyKeeper, app.accountKeeper),
|
||||
distr.NewAppModule(app.distrKeeper, app.supplyKeeper),
|
||||
gov.NewAppModule(app.govKeeper, app.supplyKeeper),
|
||||
mint.NewAppModule(app.mintKeeper),
|
||||
slashing.NewAppModule(app.slashingKeeper, app.stakingKeeper),
|
||||
staking.NewAppModule(app.stakingKeeper, app.feeCollectionKeeper, app.distrKeeper, app.accountKeeper),
|
||||
staking.NewAppModule(app.stakingKeeper, app.distrKeeper, app.accountKeeper, app.supplyKeeper),
|
||||
)
|
||||
|
||||
// During begin block slashing happens after distr.BeginBlocker so that
|
||||
|
@ -194,7 +203,7 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
|||
|
||||
// genutils must occur after staking so that pools are properly
|
||||
// initialized with tokens from genesis accounts.
|
||||
app.mm.SetOrderInitGenesis(genaccounts.ModuleName, distr.ModuleName,
|
||||
app.mm.SetOrderInitGenesis(genaccounts.ModuleName, supply.ModuleName, distr.ModuleName,
|
||||
staking.ModuleName, auth.ModuleName, bank.ModuleName, slashing.ModuleName,
|
||||
gov.ModuleName, mint.ModuleName, crisis.ModuleName, genutil.ModuleName)
|
||||
|
||||
|
@ -202,14 +211,14 @@ func NewGaiaApp(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest b
|
|||
app.mm.RegisterRoutes(app.Router(), app.QueryRouter())
|
||||
|
||||
// initialize stores
|
||||
app.MountStores(app.keyMain, app.keyAccount, app.keyStaking, app.keyMint,
|
||||
app.keyDistr, app.keySlashing, app.keyGov, app.keyFeeCollection,
|
||||
app.keyParams, app.tkeyParams, app.tkeyStaking, app.tkeyDistr)
|
||||
app.MountStores(app.keyMain, app.keyAccount, app.keySupply, app.keyStaking,
|
||||
app.keyMint, app.keyDistr, app.keySlashing, app.keyGov, app.keyParams,
|
||||
app.tkeyParams, app.tkeyStaking, app.tkeyDistr)
|
||||
|
||||
// initialize BaseApp
|
||||
app.SetInitChainer(app.InitChainer)
|
||||
app.SetBeginBlocker(app.BeginBlocker)
|
||||
app.SetAnteHandler(auth.NewAnteHandler(app.accountKeeper, app.feeCollectionKeeper, auth.DefaultSigVerificationGasConsumer))
|
||||
app.SetAnteHandler(auth.NewAnteHandler(app.accountKeeper, app.supplyKeeper, auth.DefaultSigVerificationGasConsumer))
|
||||
app.SetEndBlocker(app.EndBlocker)
|
||||
|
||||
if loadLatest {
|
||||
|
@ -233,7 +242,7 @@ func (app *GaiaApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.R
|
|||
|
||||
// application update at chain initialization
|
||||
func (app *GaiaApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain {
|
||||
var genesisState GenesisState
|
||||
var genesisState simapp.GenesisState
|
||||
app.cdc.MustUnmarshalJSON(req.AppStateBytes, &genesisState)
|
||||
return app.mm.InitGenesis(ctx, genesisState)
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
|
||||
abci "github.com/tendermint/tendermint/abci/types"
|
||||
)
|
||||
|
@ -26,7 +27,7 @@ func TestGaiadExport(t *testing.T) {
|
|||
|
||||
func setGenesis(gapp *GaiaApp) error {
|
||||
|
||||
genesisState := NewDefaultGenesisState()
|
||||
genesisState := simapp.NewDefaultGenesisState()
|
||||
stateBytes, err := codec.MarshalJSONIndent(gapp.cdc, genesisState)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
package app
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
// The genesis state of the blockchain is represented here as a map of raw json
|
||||
// messages key'd by a identifier string.
|
||||
// The identifier is used to determine which module genesis information belongs
|
||||
// to so it may be appropriately routed during init chain.
|
||||
// Within this application default genesis information is retrieved from
|
||||
// the ModuleBasicManager which populates json from each BasicModule
|
||||
// object provided to it during init.
|
||||
type GenesisState map[string]json.RawMessage
|
||||
|
||||
// NewDefaultGenesisState generates the default state for gaia.
|
||||
func NewDefaultGenesisState() GenesisState {
|
||||
return ModuleBasics.DefaultGenesis()
|
||||
}
|
509
app/sim_test.go
509
app/sim_test.go
|
@ -14,26 +14,18 @@ import (
|
|||
"github.com/stretchr/testify/require"
|
||||
|
||||
abci "github.com/tendermint/tendermint/abci/types"
|
||||
"github.com/tendermint/tendermint/crypto/secp256k1"
|
||||
dbm "github.com/tendermint/tendermint/libs/db"
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
tmtypes "github.com/tendermint/tendermint/types"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/baseapp"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/genaccounts"
|
||||
authsim "github.com/cosmos/cosmos-sdk/x/auth/simulation"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
||||
distrsim "github.com/cosmos/cosmos-sdk/x/distribution/simulation"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov"
|
||||
govsim "github.com/cosmos/cosmos-sdk/x/gov/simulation"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint"
|
||||
paramsim "github.com/cosmos/cosmos-sdk/x/params/simulation"
|
||||
"github.com/cosmos/cosmos-sdk/x/simulation"
|
||||
"github.com/cosmos/cosmos-sdk/x/slashing"
|
||||
slashingsim "github.com/cosmos/cosmos-sdk/x/slashing/simulation"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
stakingsim "github.com/cosmos/cosmos-sdk/x/staking/simulation"
|
||||
|
@ -76,38 +68,35 @@ func getSimulateFromSeedInput(tb testing.TB, w io.Writer, app *GaiaApp) (
|
|||
testAndRunTxs(app), invariants(app), numBlocks, blockSize, commit, lean, onOperation
|
||||
}
|
||||
|
||||
func appStateFromGenesisFileFn(
|
||||
r *rand.Rand, _ []simulation.Account, _ time.Time,
|
||||
) (json.RawMessage, []simulation.Account, string) {
|
||||
func appStateFn(
|
||||
r *rand.Rand, accs []simulation.Account, genesisTimestamp time.Time,
|
||||
) (appState json.RawMessage, simAccs []simulation.Account, chainID string) {
|
||||
|
||||
var genesis tmtypes.GenesisDoc
|
||||
cdc := MakeCodec()
|
||||
|
||||
bytes, err := ioutil.ReadFile(genesisFile)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
switch {
|
||||
case paramsFile != "" && genesisFile != "":
|
||||
panic("cannot provide both a genesis file and a params file")
|
||||
|
||||
case genesisFile != "":
|
||||
appState, simAccs, chainID = simapp.AppStateFromGenesisFileFn(r, accs, genesisTimestamp)
|
||||
|
||||
case paramsFile != "":
|
||||
appParams := make(simulation.AppParams)
|
||||
bz, err := ioutil.ReadFile(paramsFile)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
cdc.MustUnmarshalJSON(bz, &appParams)
|
||||
appState, simAccs, chainID = appStateRandomizedFn(r, accs, genesisTimestamp, appParams)
|
||||
|
||||
default:
|
||||
appParams := make(simulation.AppParams)
|
||||
appState, simAccs, chainID = appStateRandomizedFn(r, accs, genesisTimestamp, appParams)
|
||||
}
|
||||
|
||||
cdc.MustUnmarshalJSON(bytes, &genesis)
|
||||
|
||||
var appState GenesisState
|
||||
cdc.MustUnmarshalJSON(genesis.AppState, &appState)
|
||||
|
||||
accounts := genaccounts.GetGenesisStateFromAppState(cdc, appState)
|
||||
|
||||
var newAccs []simulation.Account
|
||||
for _, acc := range accounts {
|
||||
// Pick a random private key, since we don't know the actual key
|
||||
// This should be fine as it's only used for mock Tendermint validators
|
||||
// and these keys are never actually used to sign by mock Tendermint.
|
||||
privkeySeed := make([]byte, 15)
|
||||
r.Read(privkeySeed)
|
||||
|
||||
privKey := secp256k1.GenPrivKeySecp256k1(privkeySeed)
|
||||
newAccs = append(newAccs, simulation.Account{privKey, privKey.PubKey(), acc.Address})
|
||||
}
|
||||
|
||||
return genesis.AppState, newAccs, genesis.ChainID
|
||||
return appState, simAccs, chainID
|
||||
}
|
||||
|
||||
// TODO refactor out random initialization code to the modules
|
||||
|
@ -116,7 +105,7 @@ func appStateRandomizedFn(
|
|||
) (json.RawMessage, []simulation.Account, string) {
|
||||
|
||||
cdc := MakeCodec()
|
||||
genesisState := NewDefaultGenesisState()
|
||||
genesisState := simapp.NewDefaultGenesisState()
|
||||
|
||||
var (
|
||||
amount int64
|
||||
|
@ -142,14 +131,15 @@ func appStateRandomizedFn(
|
|||
`, amount, numInitiallyBonded,
|
||||
)
|
||||
|
||||
genGenesisAccounts(cdc, r, accs, genesisTimestamp, amount, numInitiallyBonded, genesisState)
|
||||
genAuthGenesisState(cdc, r, appParams, genesisState)
|
||||
genBankGenesisState(cdc, r, appParams, genesisState)
|
||||
genGovGenesisState(cdc, r, appParams, genesisState)
|
||||
genMintGenesisState(cdc, r, appParams, genesisState)
|
||||
genDistrGenesisState(cdc, r, appParams, genesisState)
|
||||
stakingGen := genStakingGenesisState(cdc, r, accs, amount, numAccs, numInitiallyBonded, appParams, genesisState)
|
||||
genSlashingGenesisState(cdc, r, stakingGen, appParams, genesisState)
|
||||
simapp.GenGenesisAccounts(cdc, r, accs, genesisTimestamp, amount, numInitiallyBonded, genesisState)
|
||||
simapp.GenAuthGenesisState(cdc, r, appParams, genesisState)
|
||||
simapp.GenBankGenesisState(cdc, r, appParams, genesisState)
|
||||
simapp.GenSupplyGenesisState(cdc, amount, numInitiallyBonded, int64(len(accs)), genesisState)
|
||||
simapp.GenGovGenesisState(cdc, r, appParams, genesisState)
|
||||
simapp.GenMintGenesisState(cdc, r, appParams, genesisState)
|
||||
simapp.GenDistrGenesisState(cdc, r, appParams, genesisState)
|
||||
stakingGen := simapp.GenStakingGenesisState(cdc, r, accs, amount, numAccs, numInitiallyBonded, appParams, genesisState)
|
||||
simapp.GenSlashingGenesisState(cdc, r, stakingGen, appParams, genesisState)
|
||||
|
||||
appState, err := MakeCodec().MarshalJSON(genesisState)
|
||||
if err != nil {
|
||||
|
@ -159,417 +149,6 @@ func appStateRandomizedFn(
|
|||
return appState, accs, "simulation"
|
||||
}
|
||||
|
||||
func appStateFn(
|
||||
r *rand.Rand, accs []simulation.Account, genesisTimestamp time.Time,
|
||||
) (appState json.RawMessage, simAccs []simulation.Account, chainID string) {
|
||||
|
||||
cdc := MakeCodec()
|
||||
|
||||
switch {
|
||||
case paramsFile != "" && genesisFile != "":
|
||||
panic("cannot provide both a genesis file and a params file")
|
||||
|
||||
case genesisFile != "":
|
||||
appState, simAccs, chainID = appStateFromGenesisFileFn(r, accs, genesisTimestamp)
|
||||
|
||||
case paramsFile != "":
|
||||
appParams := make(simulation.AppParams)
|
||||
bz, err := ioutil.ReadFile(paramsFile)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
cdc.MustUnmarshalJSON(bz, &appParams)
|
||||
appState, simAccs, chainID = appStateRandomizedFn(r, accs, genesisTimestamp, appParams)
|
||||
|
||||
default:
|
||||
appParams := make(simulation.AppParams)
|
||||
appState, simAccs, chainID = appStateRandomizedFn(r, accs, genesisTimestamp, appParams)
|
||||
}
|
||||
|
||||
return appState, simAccs, chainID
|
||||
}
|
||||
|
||||
func genAuthGenesisState(cdc *codec.Codec, r *rand.Rand, ap simulation.AppParams, genesisState map[string]json.RawMessage) {
|
||||
authGenesis := auth.NewGenesisState(
|
||||
nil,
|
||||
auth.NewParams(
|
||||
func(r *rand.Rand) uint64 {
|
||||
var v uint64
|
||||
ap.GetOrGenerate(cdc, simulation.MaxMemoChars, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.MaxMemoChars](r).(uint64)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) uint64 {
|
||||
var v uint64
|
||||
ap.GetOrGenerate(cdc, simulation.TxSigLimit, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.TxSigLimit](r).(uint64)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) uint64 {
|
||||
var v uint64
|
||||
ap.GetOrGenerate(cdc, simulation.TxSizeCostPerByte, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.TxSizeCostPerByte](r).(uint64)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) uint64 {
|
||||
var v uint64
|
||||
ap.GetOrGenerate(cdc, simulation.SigVerifyCostED25519, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.SigVerifyCostED25519](r).(uint64)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) uint64 {
|
||||
var v uint64
|
||||
ap.GetOrGenerate(cdc, simulation.SigVerifyCostSECP256K1, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.SigVerifyCostSECP256K1](r).(uint64)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
),
|
||||
)
|
||||
|
||||
fmt.Printf("Selected randomly generated auth parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, authGenesis.Params))
|
||||
genesisState[auth.ModuleName] = cdc.MustMarshalJSON(authGenesis)
|
||||
}
|
||||
|
||||
func genBankGenesisState(cdc *codec.Codec, r *rand.Rand, ap simulation.AppParams, genesisState map[string]json.RawMessage) {
|
||||
bankGenesis := bank.NewGenesisState(
|
||||
func(r *rand.Rand) bool {
|
||||
var v bool
|
||||
ap.GetOrGenerate(cdc, simulation.SendEnabled, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.SendEnabled](r).(bool)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
)
|
||||
|
||||
fmt.Printf("Selected randomly generated bank parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, bankGenesis))
|
||||
genesisState[bank.ModuleName] = cdc.MustMarshalJSON(bankGenesis)
|
||||
}
|
||||
|
||||
func genGenesisAccounts(
|
||||
cdc *codec.Codec, r *rand.Rand, accs []simulation.Account,
|
||||
genesisTimestamp time.Time, amount, numInitiallyBonded int64,
|
||||
genesisState map[string]json.RawMessage,
|
||||
) {
|
||||
|
||||
var genesisAccounts []genaccounts.GenesisAccount
|
||||
|
||||
// randomly generate some genesis accounts
|
||||
for i, acc := range accs {
|
||||
coins := sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amount))}
|
||||
bacc := auth.NewBaseAccountWithAddress(acc.Address)
|
||||
bacc.SetCoins(coins)
|
||||
|
||||
var gacc genaccounts.GenesisAccount
|
||||
|
||||
// Only consider making a vesting account once the initial bonded validator
|
||||
// set is exhausted due to needing to track DelegatedVesting.
|
||||
if int64(i) > numInitiallyBonded && r.Intn(100) < 50 {
|
||||
var (
|
||||
vacc auth.VestingAccount
|
||||
endTime int64
|
||||
)
|
||||
|
||||
startTime := genesisTimestamp.Unix()
|
||||
|
||||
// Allow for some vesting accounts to vest very quickly while others very slowly.
|
||||
if r.Intn(100) < 50 {
|
||||
endTime = int64(simulation.RandIntBetween(r, int(startTime), int(startTime+(60*60*24*30))))
|
||||
} else {
|
||||
endTime = int64(simulation.RandIntBetween(r, int(startTime), int(startTime+(60*60*12))))
|
||||
}
|
||||
|
||||
if startTime == endTime {
|
||||
endTime++
|
||||
}
|
||||
|
||||
if r.Intn(100) < 50 {
|
||||
vacc = auth.NewContinuousVestingAccount(&bacc, startTime, endTime)
|
||||
} else {
|
||||
vacc = auth.NewDelayedVestingAccount(&bacc, endTime)
|
||||
}
|
||||
|
||||
var err error
|
||||
gacc, err = genaccounts.NewGenesisAccountI(vacc)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
} else {
|
||||
gacc = genaccounts.NewGenesisAccount(&bacc)
|
||||
}
|
||||
|
||||
genesisAccounts = append(genesisAccounts, gacc)
|
||||
}
|
||||
|
||||
genesisState[genaccounts.ModuleName] = cdc.MustMarshalJSON(genesisAccounts)
|
||||
}
|
||||
|
||||
func genGovGenesisState(cdc *codec.Codec, r *rand.Rand, ap simulation.AppParams, genesisState map[string]json.RawMessage) {
|
||||
var vp time.Duration
|
||||
ap.GetOrGenerate(cdc, simulation.VotingParamsVotingPeriod, &vp, r,
|
||||
func(r *rand.Rand) {
|
||||
vp = simulation.ModuleParamSimulator[simulation.VotingParamsVotingPeriod](r).(time.Duration)
|
||||
})
|
||||
|
||||
govGenesis := gov.NewGenesisState(
|
||||
uint64(r.Intn(100)),
|
||||
gov.NewDepositParams(
|
||||
func(r *rand.Rand) sdk.Coins {
|
||||
var v sdk.Coins
|
||||
ap.GetOrGenerate(cdc, simulation.DepositParamsMinDeposit, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.DepositParamsMinDeposit](r).(sdk.Coins)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
vp,
|
||||
),
|
||||
gov.NewVotingParams(vp),
|
||||
gov.NewTallyParams(
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.TallyParamsQuorum, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.TallyParamsQuorum](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.TallyParamsThreshold, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.TallyParamsThreshold](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.TallyParamsVeto, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.TallyParamsVeto](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
),
|
||||
)
|
||||
|
||||
fmt.Printf("Selected randomly generated governance parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, govGenesis))
|
||||
genesisState[gov.ModuleName] = cdc.MustMarshalJSON(govGenesis)
|
||||
}
|
||||
|
||||
func genMintGenesisState(cdc *codec.Codec, r *rand.Rand, ap simulation.AppParams, genesisState map[string]json.RawMessage) {
|
||||
mintGenesis := mint.NewGenesisState(
|
||||
mint.InitialMinter(
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.Inflation, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.Inflation](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
),
|
||||
mint.NewParams(
|
||||
sdk.DefaultBondDenom,
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.InflationRateChange, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.InflationRateChange](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.InflationMax, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.InflationMax](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.InflationMin, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.InflationMin](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.GoalBonded, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.GoalBonded](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
uint64(60*60*8766/5),
|
||||
),
|
||||
)
|
||||
|
||||
fmt.Printf("Selected randomly generated minting parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, mintGenesis.Params))
|
||||
genesisState[mint.ModuleName] = cdc.MustMarshalJSON(mintGenesis)
|
||||
}
|
||||
|
||||
func genDistrGenesisState(cdc *codec.Codec, r *rand.Rand, ap simulation.AppParams, genesisState map[string]json.RawMessage) {
|
||||
distrGenesis := distr.GenesisState{
|
||||
FeePool: distr.InitialFeePool(),
|
||||
CommunityTax: func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.CommunityTax, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.CommunityTax](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
BaseProposerReward: func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.BaseProposerReward, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.BaseProposerReward](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
BonusProposerReward: func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.BonusProposerReward, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.BonusProposerReward](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
}
|
||||
|
||||
fmt.Printf("Selected randomly generated distribution parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, distrGenesis))
|
||||
genesisState[distr.ModuleName] = cdc.MustMarshalJSON(distrGenesis)
|
||||
}
|
||||
|
||||
func genSlashingGenesisState(
|
||||
cdc *codec.Codec, r *rand.Rand, stakingGen staking.GenesisState,
|
||||
ap simulation.AppParams, genesisState map[string]json.RawMessage,
|
||||
) {
|
||||
slashingGenesis := slashing.NewGenesisState(
|
||||
slashing.NewParams(
|
||||
stakingGen.Params.UnbondingTime,
|
||||
func(r *rand.Rand) int64 {
|
||||
var v int64
|
||||
ap.GetOrGenerate(cdc, simulation.SignedBlocksWindow, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.SignedBlocksWindow](r).(int64)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.MinSignedPerWindow, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.MinSignedPerWindow](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) time.Duration {
|
||||
var v time.Duration
|
||||
ap.GetOrGenerate(cdc, simulation.DowntimeJailDuration, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.DowntimeJailDuration](r).(time.Duration)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.SlashFractionDoubleSign, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.SlashFractionDoubleSign](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) sdk.Dec {
|
||||
var v sdk.Dec
|
||||
ap.GetOrGenerate(cdc, simulation.SlashFractionDowntime, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.SlashFractionDowntime](r).(sdk.Dec)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
),
|
||||
nil,
|
||||
nil,
|
||||
)
|
||||
|
||||
fmt.Printf("Selected randomly generated slashing parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, slashingGenesis.Params))
|
||||
genesisState[slashing.ModuleName] = cdc.MustMarshalJSON(slashingGenesis)
|
||||
}
|
||||
|
||||
func genStakingGenesisState(
|
||||
cdc *codec.Codec, r *rand.Rand, accs []simulation.Account, amount, numAccs, numInitiallyBonded int64,
|
||||
ap simulation.AppParams, genesisState map[string]json.RawMessage,
|
||||
) staking.GenesisState {
|
||||
|
||||
stakingGenesis := staking.NewGenesisState(
|
||||
staking.InitialPool(),
|
||||
staking.NewParams(
|
||||
func(r *rand.Rand) time.Duration {
|
||||
var v time.Duration
|
||||
ap.GetOrGenerate(cdc, simulation.UnbondingTime, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.UnbondingTime](r).(time.Duration)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
func(r *rand.Rand) uint16 {
|
||||
var v uint16
|
||||
ap.GetOrGenerate(cdc, simulation.MaxValidators, &v, r,
|
||||
func(r *rand.Rand) {
|
||||
v = simulation.ModuleParamSimulator[simulation.MaxValidators](r).(uint16)
|
||||
})
|
||||
return v
|
||||
}(r),
|
||||
7,
|
||||
sdk.DefaultBondDenom,
|
||||
),
|
||||
nil,
|
||||
nil,
|
||||
)
|
||||
|
||||
var (
|
||||
validators []staking.Validator
|
||||
delegations []staking.Delegation
|
||||
)
|
||||
|
||||
valAddrs := make([]sdk.ValAddress, numInitiallyBonded)
|
||||
for i := 0; i < int(numInitiallyBonded); i++ {
|
||||
valAddr := sdk.ValAddress(accs[i].Address)
|
||||
valAddrs[i] = valAddr
|
||||
|
||||
validator := staking.NewValidator(valAddr, accs[i].PubKey, staking.Description{})
|
||||
validator.Tokens = sdk.NewInt(amount)
|
||||
validator.DelegatorShares = sdk.NewDec(amount)
|
||||
delegation := staking.NewDelegation(accs[i].Address, valAddr, sdk.NewDec(amount))
|
||||
validators = append(validators, validator)
|
||||
delegations = append(delegations, delegation)
|
||||
}
|
||||
|
||||
stakingGenesis.Pool.NotBondedTokens = sdk.NewInt((amount * numAccs) + (numInitiallyBonded * amount))
|
||||
stakingGenesis.Validators = validators
|
||||
stakingGenesis.Delegations = delegations
|
||||
|
||||
fmt.Printf("Selected randomly generated staking parameters:\n%s\n", codec.MustMarshalJSONIndent(cdc, stakingGenesis.Params))
|
||||
genesisState[staking.ModuleName] = cdc.MustMarshalJSON(stakingGenesis)
|
||||
|
||||
return stakingGenesis
|
||||
}
|
||||
|
||||
func testAndRunTxs(app *GaiaApp) []simulation.WeightedOperation {
|
||||
cdc := MakeCodec()
|
||||
ap := make(simulation.AppParams)
|
||||
|
@ -593,7 +172,7 @@ func testAndRunTxs(app *GaiaApp) []simulation.WeightedOperation {
|
|||
})
|
||||
return v
|
||||
}(nil),
|
||||
authsim.SimulateDeductFee(app.accountKeeper, app.feeCollectionKeeper),
|
||||
authsim.SimulateDeductFee(app.accountKeeper, app.supplyKeeper),
|
||||
},
|
||||
{
|
||||
func(_ *rand.Rand) int {
|
||||
|
@ -764,6 +343,11 @@ func testAndRunTxs(app *GaiaApp) []simulation.WeightedOperation {
|
|||
}
|
||||
|
||||
func invariants(app *GaiaApp) []sdk.Invariant {
|
||||
// TODO: fix PeriodicInvariants, it doesn't seem to call individual invariants for a period of 1
|
||||
// Ref: https://github.com/cosmos/cosmos-sdk/issues/4631
|
||||
if period == 1 {
|
||||
return app.crisisKeeper.Invariants()
|
||||
}
|
||||
return simulation.PeriodicInvariants(app.crisisKeeper.Invariants(), period, 0)
|
||||
}
|
||||
|
||||
|
@ -891,7 +475,7 @@ func TestAppImportExport(t *testing.T) {
|
|||
newApp := NewGaiaApp(log.NewNopLogger(), newDB, nil, true, 0, fauxMerkleModeOpt)
|
||||
require.Equal(t, "GaiaApp", newApp.Name())
|
||||
|
||||
var genesisState GenesisState
|
||||
var genesisState simapp.GenesisState
|
||||
err = app.cdc.UnmarshalJSON(appState, &genesisState)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
@ -917,7 +501,7 @@ func TestAppImportExport(t *testing.T) {
|
|||
{app.keySlashing, newApp.keySlashing, [][]byte{}},
|
||||
{app.keyMint, newApp.keyMint, [][]byte{}},
|
||||
{app.keyDistr, newApp.keyDistr, [][]byte{}},
|
||||
{app.keyFeeCollection, newApp.keyFeeCollection, [][]byte{}},
|
||||
{app.keySupply, newApp.keySupply, [][]byte{}},
|
||||
{app.keyParams, newApp.keyParams, [][]byte{}},
|
||||
{app.keyGov, newApp.keyGov, [][]byte{}},
|
||||
}
|
||||
|
@ -930,10 +514,7 @@ func TestAppImportExport(t *testing.T) {
|
|||
storeB := ctxB.KVStore(storeKeyB)
|
||||
kvA, kvB, count, equal := sdk.DiffKVStores(storeA, storeB, prefixes)
|
||||
fmt.Printf("Compared %d key/value pairs between %s and %s\n", count, storeKeyA, storeKeyB)
|
||||
require.True(t, equal,
|
||||
"unequal stores: %s / %s:\nstore A %X => %X\nstore B %X => %X",
|
||||
storeKeyA, storeKeyB, kvA.Key, kvA.Value, kvB.Key, kvB.Value,
|
||||
)
|
||||
require.True(t, equal, simapp.GetSimulationLog(storeKeyA.Name(), app.cdc, newApp.cdc, kvA, kvB))
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1077,7 +658,7 @@ func BenchmarkInvariants(b *testing.B) {
|
|||
for _, cr := range app.crisisKeeper.Routes() {
|
||||
b.Run(fmt.Sprintf("%s/%s", cr.ModuleName, cr.Route), func(b *testing.B) {
|
||||
if err := cr.Invar(ctx); err != nil {
|
||||
fmt.Println(err)
|
||||
fmt.Printf("broken invariant at block %d of %d\n%s", ctx.BlockHeight()-1, numBlocks, err)
|
||||
b.FailNow()
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
//nolint
|
||||
package app
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
dbm "github.com/tendermint/tendermint/libs/db"
|
||||
"github.com/tendermint/tendermint/libs/log"
|
||||
|
||||
bam "github.com/cosmos/cosmos-sdk/baseapp"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
)
|
||||
|
||||
// used for debugging by gaia/cmd/gaiadebug
|
||||
// NOTE to not use this function with non-test code
|
||||
// DONTCOVER
|
||||
|
||||
// NewGaiaAppUNSAFE is used for debugging purposes only.
|
||||
//
|
||||
// NOTE: to not use this function with non-test code
|
||||
func NewGaiaAppUNSAFE(logger log.Logger, db dbm.DB, traceStore io.Writer, loadLatest bool,
|
||||
invCheckPeriod uint, baseAppOptions ...func(*bam.BaseApp),
|
||||
) (gapp *GaiaApp, keyMain, keyStaking *sdk.KVStoreKey, stakingKeeper staking.Keeper) {
|
|
@ -3,10 +3,9 @@
|
|||
The gaia cli integration tests live in this folder. You can run the full suite by running:
|
||||
|
||||
```bash
|
||||
$ go test -mod=readonly -p 4 `go list ./cmd/gaia/cli_test/...` -tags=cli_test
|
||||
# OR!
|
||||
$ make test_cli
|
||||
go test -mod=readonly -p 4 `go list ./cli_test/...` -tags=cli_test
|
||||
```
|
||||
|
||||
> NOTE: While the full suite runs in parallel, some of the tests can take up to a minute to complete
|
||||
|
||||
### Test Structure
|
||||
|
@ -33,6 +32,7 @@ func TestMyNewCommand(t *testing.T) {
|
|||
```
|
||||
|
||||
This boilerplate above:
|
||||
|
||||
- Ensures the tests run in parallel. Because the tests are calling out to `os/exec` for many operations these tests can take a long time to run.
|
||||
- Creates `.gaiad` and `.gaiacli` folders in a new temp folder.
|
||||
- Uses `gaiacli` to create 2 accounts for use in testing: `foo` and `bar`
|
||||
|
|
|
@ -25,7 +25,7 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/tests"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint"
|
||||
)
|
||||
|
@ -442,6 +442,23 @@ func TestGaiaCLIQueryRewards(t *testing.T) {
|
|||
f.Cleanup()
|
||||
}
|
||||
|
||||
func TestGaiaCLIQuerySupply(t *testing.T) {
|
||||
t.Parallel()
|
||||
f := InitFixtures(t)
|
||||
|
||||
// start gaiad server
|
||||
proc := f.GDStart()
|
||||
defer proc.Stop(false)
|
||||
|
||||
totalSupply := f.QueryTotalSupply()
|
||||
totalSupplyOf := f.QueryTotalSupplyOf(fooDenom)
|
||||
|
||||
require.Equal(t, totalCoins, totalSupply)
|
||||
require.True(sdk.IntEq(t, totalCoins.AmountOf(fooDenom), totalSupplyOf))
|
||||
|
||||
f.Cleanup()
|
||||
}
|
||||
|
||||
func TestGaiaCLISubmitProposal(t *testing.T) {
|
||||
t.Parallel()
|
||||
f := InitFixtures(t)
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/crypto/keys"
|
||||
"github.com/cosmos/cosmos-sdk/server"
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
"github.com/cosmos/cosmos-sdk/tests"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
|
@ -45,16 +46,23 @@ const (
|
|||
)
|
||||
|
||||
var (
|
||||
startCoins = sdk.Coins{
|
||||
sdk.NewCoin(feeDenom, sdk.TokensFromConsensusPower(1000000)),
|
||||
totalCoins = sdk.NewCoins(
|
||||
sdk.NewCoin(fee2Denom, sdk.TokensFromConsensusPower(2000000)),
|
||||
sdk.NewCoin(feeDenom, sdk.TokensFromConsensusPower(2000000)),
|
||||
sdk.NewCoin(fooDenom, sdk.TokensFromConsensusPower(2000)),
|
||||
sdk.NewCoin(denom, sdk.TokensFromConsensusPower(300).Add(sdk.NewInt(12))), // add coins from inflation
|
||||
)
|
||||
|
||||
startCoins = sdk.NewCoins(
|
||||
sdk.NewCoin(fee2Denom, sdk.TokensFromConsensusPower(1000000)),
|
||||
sdk.NewCoin(feeDenom, sdk.TokensFromConsensusPower(1000000)),
|
||||
sdk.NewCoin(fooDenom, sdk.TokensFromConsensusPower(1000)),
|
||||
sdk.NewCoin(denom, sdk.TokensFromConsensusPower(150)),
|
||||
}
|
||||
)
|
||||
|
||||
vestingCoins = sdk.Coins{
|
||||
vestingCoins = sdk.NewCoins(
|
||||
sdk.NewCoin(feeDenom, sdk.TokensFromConsensusPower(500000)),
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
//___________________________________________________________________________________
|
||||
|
@ -112,12 +120,12 @@ func (f Fixtures) GenesisFile() string {
|
|||
}
|
||||
|
||||
// GenesisFile returns the application's genesis state
|
||||
func (f Fixtures) GenesisState() app.GenesisState {
|
||||
func (f Fixtures) GenesisState() simapp.GenesisState {
|
||||
cdc := codec.New()
|
||||
genDoc, err := tmtypes.GenesisDocFromFile(f.GenesisFile())
|
||||
require.NoError(f.T, err)
|
||||
|
||||
var appState app.GenesisState
|
||||
var appState simapp.GenesisState
|
||||
require.NoError(f.T, cdc.UnmarshalJSON(genDoc.AppState, &appState))
|
||||
return appState
|
||||
}
|
||||
|
@ -643,9 +651,9 @@ func (f *Fixtures) QuerySlashingParams() slashing.Params {
|
|||
//___________________________________________________________________________________
|
||||
// query distribution
|
||||
|
||||
// QuerySigningInfo returns the signing info for a validator
|
||||
// QueryRewards returns the rewards of a delegator
|
||||
func (f *Fixtures) QueryRewards(delAddr sdk.AccAddress, flags ...string) distribution.QueryDelegatorTotalRewardsResponse {
|
||||
cmd := fmt.Sprintf("%s query distr rewards %s %s", f.GaiacliBinary, delAddr, f.Flags())
|
||||
cmd := fmt.Sprintf("%s query distribution rewards %s %s", f.GaiacliBinary, delAddr, f.Flags())
|
||||
res, errStr := tests.ExecuteT(f.T, cmd, "")
|
||||
require.Empty(f.T, errStr)
|
||||
cdc := app.MakeCodec()
|
||||
|
@ -655,6 +663,32 @@ func (f *Fixtures) QueryRewards(delAddr sdk.AccAddress, flags ...string) distrib
|
|||
return rewards
|
||||
}
|
||||
|
||||
//___________________________________________________________________________________
|
||||
// query supply
|
||||
|
||||
// QueryTotalSupply returns the total supply of coins
|
||||
func (f *Fixtures) QueryTotalSupply(flags ...string) (totalSupply sdk.Coins) {
|
||||
cmd := fmt.Sprintf("%s query supply total %s", f.GaiacliBinary, f.Flags())
|
||||
res, errStr := tests.ExecuteT(f.T, cmd, "")
|
||||
require.Empty(f.T, errStr)
|
||||
cdc := app.MakeCodec()
|
||||
err := cdc.UnmarshalJSON([]byte(res), &totalSupply)
|
||||
require.NoError(f.T, err)
|
||||
return totalSupply
|
||||
}
|
||||
|
||||
// QueryTotalSupplyOf returns the total supply of a given coin denom
|
||||
func (f *Fixtures) QueryTotalSupplyOf(denom string, flags ...string) sdk.Int {
|
||||
cmd := fmt.Sprintf("%s query supply total %s %s", f.GaiacliBinary, denom, f.Flags())
|
||||
res, errStr := tests.ExecuteT(f.T, cmd, "")
|
||||
require.Empty(f.T, errStr)
|
||||
cdc := app.MakeCodec()
|
||||
var supplyOf sdk.Int
|
||||
err := cdc.UnmarshalJSON([]byte(res), &supplyOf)
|
||||
require.NoError(f.T, err)
|
||||
return supplyOf
|
||||
}
|
||||
|
||||
//___________________________________________________________________________________
|
||||
// executors
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ func queryCmd(cdc *amino.Codec) *cobra.Command {
|
|||
client.LineBreak,
|
||||
rpc.ValidatorCommand(cdc),
|
||||
rpc.BlockCommand(),
|
||||
authcmd.QueryTxsByTagsCmd(cdc),
|
||||
authcmd.QueryTxsByEventsCmd(cdc),
|
||||
authcmd.QueryTxCmd(cdc),
|
||||
client.LineBreak,
|
||||
)
|
||||
|
|
|
@ -20,8 +20,8 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/server"
|
||||
"github.com/cosmos/cosmos-sdk/store"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/genaccounts"
|
||||
genaccscli "github.com/cosmos/cosmos-sdk/x/auth/genaccounts/client/cli"
|
||||
"github.com/cosmos/cosmos-sdk/x/genaccounts"
|
||||
genaccscli "github.com/cosmos/cosmos-sdk/x/genaccounts/client/cli"
|
||||
genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
)
|
||||
|
|
|
@ -26,7 +26,7 @@ import (
|
|||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
)
|
||||
|
|
|
@ -314,7 +314,7 @@ gaiacli query staking delegations <delegatorAddress>
|
|||
gaiacli query staking delegation <delegatorAddress> <validatorAddress>
|
||||
|
||||
// query the rewards of a delegator given a delegator address (e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)
|
||||
gaiacli query distr rewards <delegatorAddress>
|
||||
gaiacli query distribution rewards <delegatorAddress>
|
||||
|
||||
// query all proposals currently open for depositing
|
||||
gaiacli query gov proposals --status deposit_period
|
||||
|
@ -408,7 +408,7 @@ gaiacli tx staking redelegate <srcValidatorAddress> <destValidatorAddress> <amou
|
|||
// Withdraw all rewards
|
||||
// ex value for flag: <gasPrice>=0.025uatom
|
||||
|
||||
gaiacli tx distr withdraw-all-rewards --from <delegatorKeyName> --gas auto --gas-adjustment 1.5 --gas-prices <gasPrice>
|
||||
gaiacli tx distribution withdraw-all-rewards --from <delegatorKeyName> --gas auto --gas-adjustment 1.5 --gas-prices <gasPrice>
|
||||
|
||||
|
||||
// Unbond a certain amount of Atoms from a given validator
|
||||
|
|
|
@ -733,7 +733,7 @@ gaiacli query gov param deposit
|
|||
To check the current distribution parameters, run:
|
||||
|
||||
```bash
|
||||
gaiacli query distr params
|
||||
gaiacli query distribution params
|
||||
```
|
||||
|
||||
#### Query distribution Community Pool
|
||||
|
@ -741,7 +741,7 @@ gaiacli query distr params
|
|||
To query all coins in the community pool which is under Governance control:
|
||||
|
||||
```bash
|
||||
gaiacli query distr community-pool
|
||||
gaiacli query distribution community-pool
|
||||
```
|
||||
|
||||
#### Query outstanding rewards
|
||||
|
@ -749,7 +749,7 @@ gaiacli query distr community-pool
|
|||
To check the current outstanding (un-withdrawn) rewards, run:
|
||||
|
||||
```bash
|
||||
gaiacli query distr outstanding-rewards
|
||||
gaiacli query distribution outstanding-rewards
|
||||
```
|
||||
|
||||
#### Query Validator Commission
|
||||
|
@ -757,7 +757,7 @@ gaiacli query distr outstanding-rewards
|
|||
To check the current outstanding commission for a validator, run:
|
||||
|
||||
```bash
|
||||
gaiacli query distr commission <validator_address>
|
||||
gaiacli query distribution commission <validator_address>
|
||||
```
|
||||
|
||||
#### Query Validator Slashes
|
||||
|
@ -765,7 +765,7 @@ gaiacli query distr commission <validator_address>
|
|||
To check historical slashes for a validator, run:
|
||||
|
||||
```bash
|
||||
gaiacli query distr slashes <validator_address> <start_height> <end_height>
|
||||
gaiacli query distribution slashes <validator_address> <start_height> <end_height>
|
||||
```
|
||||
|
||||
#### Query Delegator Rewards
|
||||
|
@ -773,7 +773,7 @@ gaiacli query distr slashes <validator_address> <start_height> <end_height>
|
|||
To check current rewards for a delegation (were they to be withdrawn), run:
|
||||
|
||||
```bash
|
||||
gaiacli query distr rewards <delegator_address> <validator_address>
|
||||
gaiacli query distribution rewards <delegator_address> <validator_address>
|
||||
```
|
||||
|
||||
#### Query All Delegator Rewards
|
||||
|
@ -781,7 +781,7 @@ gaiacli query distr rewards <delegator_address> <validator_address>
|
|||
To check all current rewards for a delegation (were they to be withdrawn), run:
|
||||
|
||||
```bash
|
||||
gaiacli query distr rewards <delegator_address>
|
||||
gaiacli query distribution rewards <delegator_address>
|
||||
```
|
||||
|
||||
### Multisig Transactions
|
||||
|
|
|
@ -14,7 +14,7 @@ type GenesisState struct {
|
|||
BankData bank.GenesisState `json:"bank"`
|
||||
StakingData staking.GenesisState `json:"staking"`
|
||||
MintData mint.GenesisState `json:"mint"`
|
||||
DistrData distr.GenesisState `json:"distr"`
|
||||
DistrData distr.GenesisState `json:"distribution"`
|
||||
GovData gov.GenesisState `json:"gov"`
|
||||
SlashingData slashing.GenesisState `json:"slashing"`
|
||||
GenTxs []json.RawMessage `json:"gentxs"`
|
||||
|
|
|
@ -201,10 +201,10 @@ Let us break down the parameters:
|
|||
|
||||
### Distribution
|
||||
|
||||
The `distr` module handles the logic of distribution block provisions and fees to validators and delegators. The `distr` section in the genesis file looks like the follwing:
|
||||
The `distribution` module handles the logic of distribution block provisions and fees to validators and delegators. The `distribution` section in the genesis file looks like the follwing:
|
||||
|
||||
```json
|
||||
"distr": {
|
||||
"distribution": {
|
||||
"fee_pool": {
|
||||
"community_pool": null
|
||||
},
|
||||
|
@ -235,8 +235,8 @@ Let us break down the parameters:
|
|||
- `previous_proposer`: Proposer of the previous block. Set to `""` if genesis was not exported from previous state.
|
||||
- `outstanding_rewards`: Outstanding (un-withdrawn) rewards. Set to `null` if genesis was not exported from previous state.
|
||||
- `validator_accumulated_commission`: Outstanding (un-withdrawn) commission of validators. Set to `null` if genesis was not exported from previous state.
|
||||
- `validator_historical_rewards`: Set of information related to the historical rewards of validators and used by the `distr` module for various computation. Set to `null` if genesis was not exported from previous state.
|
||||
- `validators_current_rewards`: Set of information related to the current rewards of validators and used by the `distr` module for various computation. Set to `null` if genesis was not exported from previous state.
|
||||
- `validator_historical_rewards`: Set of information related to the historical rewards of validators and used by the `distribution` module for various computation. Set to `null` if genesis was not exported from previous state.
|
||||
- `validators_current_rewards`: Set of information related to the current rewards of validators and used by the `distribution` module for various computation. Set to `null` if genesis was not exported from previous state.
|
||||
- `delegator_starting_infos`: Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). Set to `null` if genesis was not exported from previous state.
|
||||
- `validator_slash_events`: Set of information related to the past slashing of validators. Set to `null` if genesis was not exported from previous state.
|
||||
|
||||
|
|
|
@ -347,7 +347,7 @@ gaiacli query staking delegations <delegatorAddress>
|
|||
gaiacli query staking delegation <delegatorAddress> <validatorAddress>
|
||||
|
||||
// 查询一个指定地址的委托人(e.g. cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg)所能获得的奖励情况
|
||||
gaiacli query distr rewards <delegatorAddress>
|
||||
gaiacli query distribution rewards <delegatorAddress>
|
||||
|
||||
// 查询所有现在正等待抵押的提案
|
||||
gaiacli query gov proposals --status deposit_period
|
||||
|
@ -407,7 +407,7 @@ gaiacli tx staking delegate <validatorAddress> <amountToBond> --from <delegatorK
|
|||
// 提取所有的奖励
|
||||
// 参数设定样例: <gasPrice>=1000uatom
|
||||
|
||||
gaiacli tx distr withdraw-all-rewards --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
|
||||
gaiacli tx distribution withdraw-all-rewards --from <delegatorKeyName> --gas auto --gas-prices <gasPrice>
|
||||
|
||||
|
||||
// 向指定验证人申请解绑一定数量的Atom通证
|
||||
|
|
|
@ -680,7 +680,7 @@ gaiacli query gov param deposit
|
|||
查询当前的分配参数:
|
||||
|
||||
```bash
|
||||
gaiacli query distr params
|
||||
gaiacli query distribution params
|
||||
```
|
||||
|
||||
#### 查询
|
||||
|
@ -688,7 +688,7 @@ gaiacli query distr params
|
|||
查询当前未结算的(未提取)的奖励:
|
||||
|
||||
```bash
|
||||
gaiacli query distr outstanding-rewards
|
||||
gaiacli query distribution outstanding-rewards
|
||||
```
|
||||
|
||||
#### 查询验证人佣金
|
||||
|
@ -696,7 +696,7 @@ gaiacli query distr outstanding-rewards
|
|||
查询对一个验证人的未结算的佣金:
|
||||
|
||||
```bash
|
||||
gaiacli query distr commission <validator_address>
|
||||
gaiacli query distribution commission <validator_address>
|
||||
```
|
||||
|
||||
#### 查询验证人的削减处罚
|
||||
|
@ -704,7 +704,7 @@ gaiacli query distr commission <validator_address>
|
|||
查询一个验证人的处罚历史记录:
|
||||
|
||||
```bash
|
||||
gaiacli query distr slashes <validator_address> <start_height> <end_height>
|
||||
gaiacli query distribution slashes <validator_address> <start_height> <end_height>
|
||||
```
|
||||
|
||||
#### 查询委托人奖励
|
||||
|
@ -712,7 +712,7 @@ gaiacli query distr slashes <validator_address> <start_height> <end_height>
|
|||
查询某笔委托当前的奖励(如果要取回):
|
||||
|
||||
```bash
|
||||
gaiacli query distr rewards <delegator_address> <validator_address>
|
||||
gaiacli query distribution rewards <delegator_address> <validator_address>
|
||||
```
|
||||
|
||||
#### 查询所有的委托人奖励
|
||||
|
@ -720,7 +720,7 @@ gaiacli query distr rewards <delegator_address> <validator_address>
|
|||
要查询委托人的所有当前奖励(如果要取回),请运行:
|
||||
|
||||
```bash
|
||||
gaiacli query distr rewards <delegator_address>
|
||||
gaiacli query distribution rewards <delegator_address>
|
||||
```
|
||||
|
||||
### 多签交易
|
||||
|
|
|
@ -11,7 +11,7 @@ type GenesisState struct {
|
|||
BankData bank.GenesisState `json:"bank"`
|
||||
StakingData staking.GenesisState `json:"staking"`
|
||||
MintData mint.GenesisState `json:"mint"`
|
||||
DistrData distr.GenesisState `json:"distr"`
|
||||
DistrData distr.GenesisState `json:"distribution"`
|
||||
GovData gov.GenesisState `json:"gov"`
|
||||
SlashingData slashing.GenesisState `json:"slashing"`
|
||||
GenTxs []json.RawMessage `json:"gentxs"`
|
||||
|
|
|
@ -201,10 +201,10 @@ gaiad add-genesis-account <account-address> <amount><denom>
|
|||
|
||||
### 分配(Distribution)
|
||||
|
||||
`distr`模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的`distr`部分如下所示:
|
||||
`distribution`模块处理每个块中发给验证人和委托人的挖矿及手续费的分配逻辑。 创世文件中的`distribution`部分如下所示:
|
||||
|
||||
```json
|
||||
"distr": {
|
||||
"distribution": {
|
||||
"fee_pool": {
|
||||
"community_pool": null
|
||||
},
|
||||
|
@ -235,8 +235,8 @@ gaiad add-genesis-account <account-address> <amount><denom>
|
|||
- `previous_proposer`: 上一个块的提议者, 如果没有从之前的状态导出,则设置为""。
|
||||
- `outstanding_rewards`: 未付(未提取)奖励。如果没有从之前的状态导出,设置为`null`。
|
||||
- `validator_accumulated_commission`: 未付(未提取)验证人佣金。如果没有从之前的状态导出,设置为`null`。
|
||||
- `validator_historical_rewards`: 验证人的历史奖励相关的信息,由`distr`模块用于各种计算。 如果没有从之前的状态导出,设置为`null`。
|
||||
- `validators_current_rewards`: 验证人的当前奖励相关的信息,由`distr`模块用于各种计算。 如果没有从之前的状态导出,设置为`null`。
|
||||
- `validator_historical_rewards`: 验证人的历史奖励相关的信息,由`distribution`模块用于各种计算。 如果没有从之前的状态导出,设置为`null`。
|
||||
- `validators_current_rewards`: 验证人的当前奖励相关的信息,由`distribution`模块用于各种计算。 如果没有从之前的状态导出,设置为`null`。
|
||||
- `delegator_starting_infos`: Tracks the previous validator period, the delegation's amount of staking token, and the creation height (to check later on if any slashes have occurred). 跟踪先前的验证人时期,委托的 token 数量和创建高度(稍后检查是否发生了需要惩罚的事件)。 如果没有从之前的状态导出,设置为`null`。
|
||||
- `validator_slash_events`: Set of information related to the past slashing of validators. Set to `null` if genesis was not exported from previous state. 过往验证人惩罚事件相关的信息集。 如果没有从之前的状态导出,设置为`null`。
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@ CLI를 사용하는 위임자는 매우 실험적인 블록체인 기술이 사
|
|||
|
||||
모든 코스모스 계정에는 12개 또는 24개의 단어로 이루어진 '시드(Seed)'가 할당됩니다. 이 시드 단어(또는 시드 키)를 기반으로 다수의 코스모스 계정을 생성할 수 있습니다 (예를들어: 다수의 프라이빗 키/퍼블릭 키 쌍). 이런 형태의 월렛은 HD(Hierarchical deterministic) 월렛이라고 불립니다 (HD 월렛에 대한 자세한 정보는 [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)를 참고하세요).
|
||||
|
||||
|
||||
```
|
||||
계정 0 계정 1 계정 2
|
||||
|
||||
|
@ -76,6 +75,7 @@ CLI를 사용하는 위임자는 매우 실험적인 블록체인 기술이 사
|
|||
| |
|
||||
+-------------------+
|
||||
```
|
||||
|
||||
특정 계좌에 보관된 자산은 프라이빗 키에 의해 관리됩니다. 이 프라이빗 키는 시드의 일방적 기능(one-way function)을 통해 생성됩니다. 프라이빗 키를 분실한 경우, 시드 키를 사용하여 프라이빗 키를 다시 복구하는 것이 가능합니다. 하지만 시드 키를 분실한 경우, 모든 프라이빗 키에 대한 사용권을 잃게 됩니다. 누군가 본인의 시드 키를 가진 경우, 해당 키와 연관된 모든 계정의 소유권을 가진 것과 동일합니다.
|
||||
|
||||
::: warning
|
||||
|
@ -277,7 +277,7 @@ gaiacli query delegations <위임자 주소(delegatorAddress)>
|
|||
gaiacli query delegations <위임자 주소(delegatorAddress)> <검증인 주소(validatorAddress)>
|
||||
|
||||
// 위임자 주소로 (예시: cosmos10snjt8dmpr5my0h76xj48ty80uzwhraqalu4eg) 위임자 리워드 조회
|
||||
gaiacli query distr rewards <위임자 주소(delegatorAddress)>
|
||||
gaiacli query distribution rewards <위임자 주소(delegatorAddress)>
|
||||
|
||||
// 예치금(deposit)을 대기중인 모든 프로포절 조회
|
||||
gaiacli query proposals --status deposit_period
|
||||
|
@ -340,7 +340,7 @@ gaiacli tx staking --amount <위임할 수량(amountToBond)> --validator <검증
|
|||
|
||||
// 리워드 수령하기
|
||||
|
||||
gaiacli tx distr withdraw-rewards --from <위임자 키 명칭(delegatorKeyName)>
|
||||
gaiacli tx distribution withdraw-rewards --from <위임자 키 명칭(delegatorKeyName)>
|
||||
```
|
||||
|
||||
::: tip
|
||||
|
|
|
@ -610,7 +610,7 @@ gaiacli query gov param deposit
|
|||
현재 리워드 분배 파라미터 값을 조회하기 위해서는:
|
||||
|
||||
```bash
|
||||
gaiacli query distr params
|
||||
gaiacli query distribution params
|
||||
```
|
||||
|
||||
#### 수령되지 않은 리워드를 받기
|
||||
|
@ -618,7 +618,7 @@ gaiacli query distr params
|
|||
수령하지 않은 리워드를 수령하기 위해서는:
|
||||
|
||||
```bash
|
||||
gaiacli query distr outstanding-rewards
|
||||
gaiacli query distribution outstanding-rewards
|
||||
```
|
||||
|
||||
#### 검증인 커미션 조회
|
||||
|
@ -626,7 +626,7 @@ gaiacli query distr outstanding-rewards
|
|||
특정 검증인의 커미션을 조회하기 위해서는:
|
||||
|
||||
```bash
|
||||
gaiacli query distr commission <validator_address(검증인 주소)>
|
||||
gaiacli query distribution commission <validator_address(검증인 주소)>
|
||||
```
|
||||
|
||||
#### 검증인 슬래싱 조회
|
||||
|
@ -634,7 +634,7 @@ gaiacli query distr commission <validator_address(검증인 주소)>
|
|||
특정 검증인의 슬래싱 기록을 조회하기 위해서는:
|
||||
|
||||
```bash
|
||||
gaiacli query distr slashes <validator_address(검증인 주소)> <start_height(시작 블록 높이)> <end_height(마지막 블록 높이)>
|
||||
gaiacli query distribution slashes <validator_address(검증인 주소)> <start_height(시작 블록 높이)> <end_height(마지막 블록 높이)>
|
||||
```
|
||||
|
||||
#### 특정 검증인에서 수령되지 않은 리워드 조회
|
||||
|
@ -642,7 +642,7 @@ gaiacli query distr slashes <validator_address(검증인 주소)> <start_height(
|
|||
위임자의 특정 검증인에서 발생된 미수령 리워드를 조회하기 위해서는:
|
||||
|
||||
```bash
|
||||
gaiacli query distr rewards <delegator_address(위임자 주소)> <validator_address(검증인 주소)>
|
||||
gaiacli query distribution rewards <delegator_address(위임자 주소)> <validator_address(검증인 주소)>
|
||||
```
|
||||
|
||||
#### 위임자의 수령 대기중인 모든 리워드 조회
|
||||
|
@ -650,7 +650,7 @@ gaiacli query distr rewards <delegator_address(위임자 주소)> <validator_add
|
|||
위임자의 모든 수령 대기 리워드를 조회하기 위해서는:
|
||||
|
||||
```bash
|
||||
gaiacli query distr rewards <delegator_address(위임자 주소)>
|
||||
gaiacli query distribution rewards <delegator_address(위임자 주소)>
|
||||
```
|
||||
|
||||
### 멀티시그 트랜잭션
|
||||
|
|
23
go.mod
23
go.mod
|
@ -3,10 +3,13 @@ module github.com/cosmos/gaia
|
|||
go 1.12
|
||||
|
||||
require (
|
||||
github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c // indirect
|
||||
github.com/cosmos/cosmos-sdk v0.28.2-0.20190626164114-c898dac6a9fc
|
||||
github.com/btcsuite/btcd v0.0.0-20190629003639-c26ffa870fd8 // indirect
|
||||
github.com/cosmos/cosmos-sdk v0.28.2-0.20190705123402-2fdbf631e763
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d // indirect
|
||||
github.com/gorilla/mux v1.7.2 // indirect
|
||||
github.com/etcd-io/bbolt v1.3.3 // indirect
|
||||
github.com/go-kit/kit v0.9.0 // indirect
|
||||
github.com/golang/mock v1.3.1 // indirect
|
||||
github.com/gorilla/mux v1.7.3 // indirect
|
||||
github.com/magiconair/properties v1.8.1 // indirect
|
||||
github.com/mattn/go-isatty v0.0.8 // indirect
|
||||
github.com/onsi/ginkgo v1.8.0 // indirect
|
||||
|
@ -15,10 +18,10 @@ require (
|
|||
github.com/otiai10/curr v0.0.0-20190513014714-f5a3d24e5776 // indirect
|
||||
github.com/pelletier/go-toml v1.4.0 // indirect
|
||||
github.com/pkg/errors v0.8.1
|
||||
github.com/prometheus/common v0.4.1 // indirect
|
||||
github.com/prometheus/procfs v0.0.0-20190523193104-a7aeb8df3389 // indirect
|
||||
github.com/prometheus/common v0.6.0 // indirect
|
||||
github.com/prometheus/procfs v0.0.3 // indirect
|
||||
github.com/rakyll/statik v0.1.6 // indirect
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a // indirect
|
||||
github.com/rcrowley/go-metrics v0.0.0-20190704165056-9c2d0518ed81 // indirect
|
||||
github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa
|
||||
github.com/spf13/afero v1.2.2 // indirect
|
||||
github.com/spf13/cobra v0.0.5
|
||||
|
@ -27,11 +30,13 @@ require (
|
|||
github.com/syndtr/goleveldb v1.0.0 // indirect
|
||||
github.com/tendermint/go-amino v0.15.0
|
||||
github.com/tendermint/tendermint v0.32.0
|
||||
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f // indirect
|
||||
golang.org/x/sys v0.0.0-20190527104216-9cd6430ef91e // indirect
|
||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 // indirect
|
||||
golang.org/x/net v0.0.0-20190628185345-da137c7871d7 // indirect
|
||||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb // indirect
|
||||
golang.org/x/text v0.3.2 // indirect
|
||||
google.golang.org/appengine v1.4.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69 // indirect
|
||||
google.golang.org/genproto v0.0.0-20190701230453-710ae3a149df // indirect
|
||||
google.golang.org/grpc v1.22.0 // indirect
|
||||
)
|
||||
|
||||
replace golang.org/x/crypto => github.com/tendermint/crypto v0.0.0-20180820045704-3764759f34a5
|
||||
|
|
53
go.sum
53
go.sum
|
@ -18,8 +18,8 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce
|
|||
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0=
|
||||
github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c h1:aEbSeNALREWXk0G7UdNhR3ayBV7tZ4M2PNmnrCAph6Q=
|
||||
github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
|
||||
github.com/btcsuite/btcd v0.0.0-20190629003639-c26ffa870fd8 h1:mOg8/RgDSHTQ1R0IR+LMDuW4TDShPv+JzYHuR4GLoNA=
|
||||
github.com/btcsuite/btcd v0.0.0-20190629003639-c26ffa870fd8/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d h1:yJzD/yFppdVCf6ApMkVy8cUxV0XrxdP9rVf6D87/Mng=
|
||||
|
@ -37,8 +37,8 @@ github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8Nz
|
|||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cosmos/cosmos-sdk v0.28.2-0.20190626164114-c898dac6a9fc h1:7xWMlVQdgCd/zLYLDKPFKWFu+AsCTyfvoL6gXNjdi8M=
|
||||
github.com/cosmos/cosmos-sdk v0.28.2-0.20190626164114-c898dac6a9fc/go.mod h1:60lRWFK7DUes/k5FIyDeE+3rS2Q0/wHek/ep6SLUUow=
|
||||
github.com/cosmos/cosmos-sdk v0.28.2-0.20190705123402-2fdbf631e763 h1:25yfmbpVGN0+5yijzd4XhAMx0tJ/y5Jrec0gRqczjuA=
|
||||
github.com/cosmos/cosmos-sdk v0.28.2-0.20190705123402-2fdbf631e763/go.mod h1:ngmaRot5kvm4Op0NBgOgbOTWJOKw9cM2qAXv0DUs94Q=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180618194314-52158e4697b8/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d h1:49RLWk1j44Xu4fjHb6JFYmeUnDORVwHNkDxaQ0ctCVU=
|
||||
github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y=
|
||||
|
@ -55,6 +55,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm
|
|||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
||||
github.com/etcd-io/bbolt v1.3.2 h1:RLRQ0TKLX7DlBRXAJHvbmXL17Q3KNnTBtZ9B6Qo+/Y0=
|
||||
github.com/etcd-io/bbolt v1.3.2/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
|
||||
github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM=
|
||||
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
|
||||
github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
||||
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
|
||||
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
||||
|
@ -64,6 +66,8 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME
|
|||
github.com/go-kit/kit v0.6.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=
|
||||
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
|
@ -78,6 +82,8 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er
|
|||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.3.1-0.20190508161146-9fa652df1129 h1:tT8iWCYw4uOem71yYA3htfH+LNopJvcqZQshm56G5L4=
|
||||
github.com/golang/mock v1.3.1-0.20190508161146-9fa652df1129/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||
github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s=
|
||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
|
||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
||||
|
@ -87,12 +93,13 @@ github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
|
|||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
|
||||
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/mux v1.7.2 h1:zoNxOV7WjqXptQOVngLmcSQgXmgk4NMz1HibBchjl/I=
|
||||
github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
|
||||
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
|
@ -110,6 +117,7 @@ github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U
|
|||
github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
|
@ -122,8 +130,6 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
|
|||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/lusis/go-slackbot v0.0.0-20180109053408-401027ccfef5/go.mod h1:c2mYKRyMb1BPkO5St0c/ps62L4S0W2NAkaTXj9qEI+0=
|
||||
github.com/lusis/slack-test v0.0.0-20190426140909-c40012f20018/go.mod h1:sFlOUpQL1YcjhFVXhg1CG8ZASEs/Mf1oVb6H75JL/zg=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
|
@ -135,8 +141,9 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5
|
|||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM=
|
||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
|
@ -165,6 +172,8 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP
|
|||
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
|
||||
github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8=
|
||||
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
|
||||
github.com/prometheus/client_golang v1.0.0 h1:vrDKnkGzuGvhNAL56c7DBz29ZL+KxnoR0x7enabFceM=
|
||||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
|
@ -175,19 +184,22 @@ github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
|
|||
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.4.1 h1:K0MGApIoQvMw27RTdJkPbr3JZ7DNbtxQNyi5STVM6Kw=
|
||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo=
|
||||
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190227231451-bbced9601137/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.0-20190523193104-a7aeb8df3389 h1:F/k2nob1S9M6v5Xkq7KjSTQirOYaYQord0jR4TwyVmY=
|
||||
github.com/prometheus/procfs v0.0.0-20190523193104-a7aeb8df3389/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE=
|
||||
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/rakyll/statik v0.1.4/go.mod h1:OEi9wJV/fMUAGx1eNjq75DKDsJVuEv1U0oYdX6GX8Zs=
|
||||
github.com/rakyll/statik v0.1.6 h1:uICcfUXpgqtw2VopbIncslhAmE5hwc4g20TEyEENBNs=
|
||||
github.com/rakyll/statik v0.1.6/go.mod h1:OEi9wJV/fMUAGx1eNjq75DKDsJVuEv1U0oYdX6GX8Zs=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20180503174638-e2704e165165/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20190704165056-9c2d0518ed81 h1:zQTtDd7fQiF9e80lbl+ShnD9/5NSq5r1EhcS8955ECg=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20190704165056-9c2d0518ed81/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI=
|
||||
github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||
|
@ -261,6 +273,9 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r
|
|||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU=
|
||||
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
|
@ -275,8 +290,8 @@ golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190527104216-9cd6430ef91e h1:Pzdi8HRppinixnWWzN6KSa0QkBM+GKsTJaWwwfJskNw=
|
||||
golang.org/x/sys v0.0.0-20190527104216-9cd6430ef91e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb h1:fgwFCsaw9buMuxNd6+DQfAuSFqbNiQZpcgJQAgJsK6k=
|
||||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
|
@ -287,17 +302,20 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
|
|||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69 h1:4rNOqY4ULrKzS6twXa619uQgI7h9PaVd4ZhjFQ7C5zs=
|
||||
google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
|
||||
google.golang.org/genproto v0.0.0-20190701230453-710ae3a149df h1:k3DT34vxk64+4bD5x+fRy6U0SXxZehzUHRSYUJcKfII=
|
||||
google.golang.org/genproto v0.0.0-20190701230453-710ae3a149df/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
|
||||
google.golang.org/grpc v1.13.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.21.0 h1:G+97AoqBnmZIT91cLG/EkCoK9NSelj64P8bOHHNmGn0=
|
||||
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
google.golang.org/grpc v1.22.0 h1:J0UbZOIrCAl+fpTOf8YLs4dJo8L/owV4LYVtAXQoPkw=
|
||||
google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
|
@ -312,3 +330,4 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
|
|
|
@ -15,16 +15,18 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
crkeys "github.com/cosmos/cosmos-sdk/crypto/keys"
|
||||
"github.com/cosmos/cosmos-sdk/server"
|
||||
"github.com/cosmos/cosmos-sdk/simapp"
|
||||
"github.com/cosmos/cosmos-sdk/tests"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
authrest "github.com/cosmos/cosmos-sdk/x/auth/client/rest"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/crisis"
|
||||
distr "github.com/cosmos/cosmos-sdk/x/distribution"
|
||||
"github.com/cosmos/cosmos-sdk/x/genaccounts"
|
||||
"github.com/cosmos/cosmos-sdk/x/genutil"
|
||||
"github.com/cosmos/cosmos-sdk/x/mint"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
"github.com/cosmos/cosmos-sdk/x/supply"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/viper"
|
||||
|
@ -151,6 +153,8 @@ func defaultGenesis(config *tmcfg.Config, nValidators int, initAddrs []sdk.AccAd
|
|||
var genTxs []auth.StdTx
|
||||
var accs []genaccounts.GenesisAccount
|
||||
|
||||
totalSupply := sdk.ZeroInt()
|
||||
|
||||
for i := 0; i < nValidators; i++ {
|
||||
operPrivKey := secp256k1.GenPrivKey()
|
||||
operAddr := operPrivKey.PubKey().Address()
|
||||
|
@ -187,11 +191,13 @@ func defaultGenesis(config *tmcfg.Config, nValidators int, initAddrs []sdk.AccAd
|
|||
|
||||
accAuth := auth.NewBaseAccountWithAddress(sdk.AccAddress(operAddr))
|
||||
accTokens := sdk.TokensFromConsensusPower(150)
|
||||
accAuth.Coins = sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, accTokens)}
|
||||
totalSupply = totalSupply.Add(accTokens)
|
||||
|
||||
accAuth.Coins = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, accTokens))
|
||||
accs = append(accs, genaccounts.NewGenesisAccount(&accAuth))
|
||||
}
|
||||
|
||||
genesisState := gapp.NewDefaultGenesisState()
|
||||
genesisState := simapp.NewDefaultGenesisState()
|
||||
genDoc.AppState, err = cdc.MarshalJSON(genesisState)
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -212,10 +218,19 @@ func defaultGenesis(config *tmcfg.Config, nValidators int, initAddrs []sdk.AccAd
|
|||
accAuth := auth.NewBaseAccountWithAddress(addr)
|
||||
accTokens := sdk.TokensFromConsensusPower(100)
|
||||
accAuth.Coins = sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, accTokens)}
|
||||
totalSupply = totalSupply.Add(accTokens)
|
||||
acc := genaccounts.NewGenesisAccount(&accAuth)
|
||||
accs = append(accs, acc)
|
||||
}
|
||||
|
||||
// supply data
|
||||
supplyDataBz := genesisState[supply.ModuleName]
|
||||
var supplyData supply.GenesisState
|
||||
cdc.MustUnmarshalJSON(supplyDataBz, &supplyData)
|
||||
supplyData.Supply.Total = sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, totalSupply))
|
||||
supplyDataBz = cdc.MustMarshalJSON(supplyData)
|
||||
genesisState[supply.ModuleName] = supplyDataBz
|
||||
|
||||
// distr data
|
||||
distrDataBz := genesisState[distr.ModuleName]
|
||||
var distrData distr.GenesisState
|
||||
|
@ -223,12 +238,6 @@ func defaultGenesis(config *tmcfg.Config, nValidators int, initAddrs []sdk.AccAd
|
|||
distrData.FeePool.CommunityPool = sdk.DecCoins{sdk.DecCoin{Denom: "test", Amount: sdk.NewDecFromInt(sdk.NewInt(10))}}
|
||||
distrDataBz = cdc.MustMarshalJSON(distrData)
|
||||
genesisState[distr.ModuleName] = distrDataBz
|
||||
|
||||
// now add the account tokens to the non-bonded pool
|
||||
for _, acc := range accs {
|
||||
accTokens := acc.Coins.AmountOf(sdk.DefaultBondDenom)
|
||||
stakingData.Pool.NotBondedTokens = stakingData.Pool.NotBondedTokens.Add(accTokens)
|
||||
}
|
||||
genesisState[staking.ModuleName] = cdc.MustMarshalJSON(stakingData)
|
||||
genesisState[genaccounts.ModuleName] = cdc.MustMarshalJSON(accs)
|
||||
|
||||
|
|
|
@ -265,14 +265,12 @@ func deleteKey(t *testing.T, port, name, password string) {
|
|||
}
|
||||
|
||||
// GET /auth/accounts/{address} Get the account information on blockchain
|
||||
func getAccount(t *testing.T, port string, addr sdk.AccAddress) auth.Account {
|
||||
func getAccount(t *testing.T, port string, addr sdk.AccAddress) (acc auth.Account) {
|
||||
res, body := Request(t, port, "GET", fmt.Sprintf("/auth/accounts/%s", addr.String()), nil)
|
||||
require.Equal(t, http.StatusOK, res.StatusCode, body)
|
||||
|
||||
var acc authrest.AccountWithHeight
|
||||
require.Nil(t, cdc.UnmarshalJSON([]byte(body), &acc))
|
||||
|
||||
return acc.Account
|
||||
return acc
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
|
|
@ -30,7 +30,6 @@ import (
|
|||
disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/gov"
|
||||
"github.com/cosmos/cosmos-sdk/x/slashing"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -381,36 +380,6 @@ func TestTxs(t *testing.T) {
|
|||
require.Equal(t, http.StatusInternalServerError, res.StatusCode)
|
||||
}
|
||||
|
||||
func TestPoolParamsQuery(t *testing.T) {
|
||||
kb, err := keys.NewKeyBaseFromDir(InitClientHome(""))
|
||||
require.NoError(t, err)
|
||||
addr, _, err := CreateAddr(name1, pw, kb)
|
||||
require.NoError(t, err)
|
||||
cleanup, _, _, port, err := InitializeLCD(1, []sdk.AccAddress{addr}, true)
|
||||
require.NoError(t, err)
|
||||
defer cleanup()
|
||||
|
||||
defaultParams := staking.DefaultParams()
|
||||
|
||||
params := getStakingParams(t, port)
|
||||
require.True(t, defaultParams.Equal(params))
|
||||
|
||||
pool := getStakingPool(t, port)
|
||||
|
||||
initialPool := staking.InitialPool()
|
||||
tokens := sdk.TokensFromConsensusPower(100)
|
||||
freeTokens := sdk.TokensFromConsensusPower(50)
|
||||
initialPool.NotBondedTokens = initialPool.NotBondedTokens.Add(tokens)
|
||||
initialPool.BondedTokens = initialPool.BondedTokens.Add(tokens) // Delegate tx on GaiaAppGenState
|
||||
initialPool.NotBondedTokens = initialPool.NotBondedTokens.Add(freeTokens)
|
||||
|
||||
require.Equal(t, initialPool.BondedTokens, pool.BondedTokens)
|
||||
|
||||
//TODO include this test once REST for distribution is online, need to include distribution tokens from inflation
|
||||
// for this equality to make sense
|
||||
//require.Equal(t, initialPool.NotBondedTokens, pool.NotBondedTokens)
|
||||
}
|
||||
|
||||
func TestValidatorsQuery(t *testing.T) {
|
||||
cleanup, valPubKeys, operAddrs, port, err := InitializeLCD(1, []sdk.AccAddress{}, true)
|
||||
require.NoError(t, err)
|
||||
|
@ -1174,7 +1143,7 @@ func TestAccountBalanceQuery(t *testing.T) {
|
|||
// empty account
|
||||
res, body := Request(t, port, "GET", fmt.Sprintf("/auth/accounts/%s", someFakeAddr), nil)
|
||||
require.Equal(t, http.StatusOK, res.StatusCode, body)
|
||||
require.Contains(t, body, `"type":"auth/Account"`)
|
||||
require.Contains(t, body, `"type":"cosmos-sdk/Account"`)
|
||||
|
||||
// empty account balance
|
||||
res, body = Request(t, port, "GET", fmt.Sprintf("/bank/balances/%s", someFakeAddr), nil)
|
||||
|
|
Loading…
Reference in New Issue