keeper

package
v2.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2022 License: Apache-2.0 Imports: 52 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ConsPrivKeys generate ed25519 ConsPrivKeys to be used for validator operator keys
	ConsPrivKeys = []ccrypto.PrivKey{
		ed25519.GenPrivKey(),
		ed25519.GenPrivKey(),
		ed25519.GenPrivKey(),
		ed25519.GenPrivKey(),
		ed25519.GenPrivKey(),
	}

	// ConsPubKeys holds the consensus public keys to be used for validator operator keys
	ConsPubKeys = []ccrypto.PubKey{
		ConsPrivKeys[0].PubKey(),
		ConsPrivKeys[1].PubKey(),
		ConsPrivKeys[2].PubKey(),
		ConsPrivKeys[3].PubKey(),
		ConsPrivKeys[4].PubKey(),
	}

	// AccPrivKeys generate secp256k1 pubkeys to be used for account pub keys
	AccPrivKeys = []ccrypto.PrivKey{
		secp256k1.GenPrivKey(),
		secp256k1.GenPrivKey(),
		secp256k1.GenPrivKey(),
		secp256k1.GenPrivKey(),
		secp256k1.GenPrivKey(),
	}

	// AccPubKeys holds the pub keys for the account keys
	AccPubKeys = []ccrypto.PubKey{
		AccPrivKeys[0].PubKey(),
		AccPrivKeys[1].PubKey(),
		AccPrivKeys[2].PubKey(),
		AccPrivKeys[3].PubKey(),
		AccPrivKeys[4].PubKey(),
	}

	// AccAddrs holds the sdk.AccAddresses
	AccAddrs = []sdk.AccAddress{
		sdk.AccAddress(AccPubKeys[0].Address()),
		sdk.AccAddress(AccPubKeys[1].Address()),
		sdk.AccAddress(AccPubKeys[2].Address()),
		sdk.AccAddress(AccPubKeys[3].Address()),
		sdk.AccAddress(AccPubKeys[4].Address()),
	}

	// ValAddrs holds the sdk.ValAddresses
	ValAddrs = []sdk.ValAddress{
		sdk.ValAddress(AccPubKeys[0].Address()),
		sdk.ValAddress(AccPubKeys[1].Address()),
		sdk.ValAddress(AccPubKeys[2].Address()),
		sdk.ValAddress(AccPubKeys[3].Address()),
		sdk.ValAddress(AccPubKeys[4].Address()),
	}

	// EthAddrs holds etheruem addresses
	EthAddrs = []gethcommon.Address{
		gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(1)}, 20)),
		gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(2)}, 20)),
		gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(3)}, 20)),
		gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(4)}, 20)),
		gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(5)}, 20)),
	}

	// TokenContractAddrs holds example token contract addresses
	TokenContractAddrs = []string{
		"0x6b175474e89094c44da98b954eedeac495271d0f",
		"0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e",
		"0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
		"0xc00e94cb662c3520282e6f5717214004a7f26888",
		"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f",
	}

	// InitTokens holds the number of tokens to initialize an account with
	InitTokens = sdk.TokensFromConsensusPower(110, sdk.DefaultPowerReduction)

	// InitCoins holds the number of coins to initialize an account with
	InitCoins = sdk.NewCoins(sdk.NewCoin(TestingStakeParams.BondDenom, InitTokens))

	// StakingAmount holds the staking power to start a validator with
	StakingAmount = sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction)

	// StakingCoins holds the staking coins to start a validator with
	StakingCoins = sdk.NewCoins(sdk.NewCoin(TestingStakeParams.BondDenom, StakingAmount))

	// TestingStakeParams is a set of staking params for testing
	TestingStakeParams = stakingtypes.Params{
		UnbondingTime:     100,
		MaxValidators:     10,
		MaxEntries:        10,
		HistoricalEntries: 10000,
		BondDenom:         "stake",
	}

	// TestingGravityParams is a set of gravity params for testing
	TestingGravityParams = types.Params{
		GravityId:                                 "testgravityid",
		ContractSourceHash:                        "62328f7bc12efb28f86111d08c29b39285680a906ea0e524e0209d6f6657b713",
		BridgeEthereumAddress:                     "0x8858eeb3dfffa017d4bce9801d340d36cf895ccf",
		BridgeChainId:                             11,
		SignedBatchesWindow:                       10,
		SignedSignerSetTxsWindow:                  10,
		UnbondSlashingSignerSetTxsWindow:          15,
		EthereumSignaturesWindow:                  10,
		TargetEthTxTimeout:                        60001,
		AverageBlockTime:                          5000,
		AverageEthereumBlockTime:                  15000,
		SlashFractionSignerSetTx:                  sdk.NewDecWithPrec(1, 2),
		SlashFractionBatch:                        sdk.NewDecWithPrec(1, 2),
		SlashFractionEthereumSignature:            sdk.NewDecWithPrec(1, 2),
		SlashFractionConflictingEthereumSignature: sdk.NewDecWithPrec(1, 2),
	}
)

Functions

func MakeTestCodec

func MakeTestCodec() *codec.LegacyAmino

MakeTestCodec creates a legacy amino codec for testing

func MakeTestMarshaler

func MakeTestMarshaler() codec.Codec

MakeTestMarshaler creates a proto codec for use in testing

func MintVouchersFromAir

func MintVouchersFromAir(t *testing.T, ctx sdk.Context, k Keeper, dest sdk.AccAddress, amount types.ERC20Token) sdk.Coin

MintVouchersFromAir creates new gravity vouchers given erc20tokens

func NewTestMsgCreateValidator

func NewTestMsgCreateValidator(address sdk.ValAddress, pubKey ccrypto.PubKey, amt sdk.Int) *stakingtypes.MsgCreateValidator

func NewTestMsgUnDelegateValidator

func NewTestMsgUnDelegateValidator(address sdk.ValAddress, amt sdk.Int) *stakingtypes.MsgUndelegate

Types

type AlwaysPanicStakingMock

type AlwaysPanicStakingMock struct{}

AlwaysPanicStakingMock is a mock staking keeper that panics on usage

func (AlwaysPanicStakingMock) GetBondedValidatorsByPower

func (s AlwaysPanicStakingMock) GetBondedValidatorsByPower(ctx sdk.Context) []stakingtypes.Validator

GetBondedValidatorsByPower implements the interface for staking keeper required by gravity

func (AlwaysPanicStakingMock) GetLastTotalPower

func (s AlwaysPanicStakingMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int)

GetLastTotalPower implements the interface for staking keeper required by gravity

func (AlwaysPanicStakingMock) GetLastValidatorPower

func (s AlwaysPanicStakingMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64

GetLastValidatorPower implements the interface for staking keeper required by gravity

func (AlwaysPanicStakingMock) IterateBondedValidatorsByPower

func (s AlwaysPanicStakingMock) IterateBondedValidatorsByPower(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool))

IterateBondedValidatorsByPower staisfies the interface

func (AlwaysPanicStakingMock) IterateLastValidators

func (s AlwaysPanicStakingMock) IterateLastValidators(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool))

IterateLastValidators staisfies the interface

func (AlwaysPanicStakingMock) IterateValidators

func (s AlwaysPanicStakingMock) IterateValidators(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool))

IterateValidators staisfies the interface

func (AlwaysPanicStakingMock) Jail

Jail staisfies the interface

func (AlwaysPanicStakingMock) Slash

Slash staisfies the interface

func (AlwaysPanicStakingMock) Validator

Validator staisfies the interface

func (AlwaysPanicStakingMock) ValidatorByConsAddr

ValidatorByConsAddr staisfies the interface

type Hooks

type Hooks struct {
	// contains filtered or unexported fields
}

func (Hooks) AfterDelegationModified

func (h Hooks) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress)

func (Hooks) AfterValidatorBeginUnbonding

func (h Hooks) AfterValidatorBeginUnbonding(ctx sdk.Context, _ sdk.ConsAddress, _ sdk.ValAddress)

func (Hooks) AfterValidatorBonded

func (h Hooks) AfterValidatorBonded(_ sdk.Context, _ sdk.ConsAddress, _ sdk.ValAddress)

func (Hooks) AfterValidatorCreated

func (h Hooks) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress)

func (Hooks) AfterValidatorRemoved

func (h Hooks) AfterValidatorRemoved(ctx sdk.Context, _ sdk.ConsAddress, valAddr sdk.ValAddress)

func (Hooks) BeforeDelegationCreated

func (h Hooks) BeforeDelegationCreated(_ sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress)

func (Hooks) BeforeDelegationRemoved

func (h Hooks) BeforeDelegationRemoved(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress)

func (Hooks) BeforeDelegationSharesModified

func (h Hooks) BeforeDelegationSharesModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress)

func (Hooks) BeforeValidatorModified

func (h Hooks) BeforeValidatorModified(_ sdk.Context, _ sdk.ValAddress)

func (Hooks) BeforeValidatorSlashed

func (h Hooks) BeforeValidatorSlashed(ctx sdk.Context, valAddr sdk.ValAddress, fraction sdk.Dec)

type Keeper

type Keeper struct {
	StakingKeeper types.StakingKeeper

	SlashingKeeper types.SlashingKeeper
	PowerReduction sdk.Int
	// contains filtered or unexported fields
}

Keeper maintains the link to storage and exposes getter/setter methods for the various parts of the state machine

func NewKeeper

func NewKeeper(
	cdc codec.Codec,
	storeKey sdk.StoreKey,
	paramSpace paramtypes.Subspace,
	accKeeper types.AccountKeeper,
	stakingKeeper types.StakingKeeper,
	bankKeeper types.BankKeeper,
	slashingKeeper types.SlashingKeeper,
	powerReduction sdk.Int,
) Keeper

NewKeeper returns a new instance of the gravity keeper

func (Keeper) AfterBatchExecutedEvent

func (k Keeper) AfterBatchExecutedEvent(ctx sdk.Context, event types.BatchExecutedEvent)

func (Keeper) AfterContractCallExecutedEvent

func (k Keeper) AfterContractCallExecutedEvent(ctx sdk.Context, event types.ContractCallExecutedEvent)

func (Keeper) AfterERC20DeployedEvent

func (k Keeper) AfterERC20DeployedEvent(ctx sdk.Context, event types.ERC20DeployedEvent)

func (Keeper) AfterSendToCosmosEvent

func (k Keeper) AfterSendToCosmosEvent(ctx sdk.Context, event types.SendToCosmosEvent)

func (Keeper) AfterSignerSetExecutedEvent

func (k Keeper) AfterSignerSetExecutedEvent(ctx sdk.Context, event types.SignerSetTxExecutedEvent)

func (Keeper) Hooks

func (k Keeper) Hooks() Hooks

Hooks Create new gravity hooks

func (Keeper) Logger

func (k Keeper) Logger(ctx sdk.Context) log.Logger

func (*Keeper) SetHooks

func (k *Keeper) SetHooks(sh types.GravityHooks) *Keeper

type MockStakingValidatorData

type MockStakingValidatorData struct {
	Operator sdk.ValAddress
	Power    int64
}

MockStakingValidatorData creates mock validator data

type StakingKeeperMock

type StakingKeeperMock struct {
	BondedValidators []stakingtypes.Validator
	ValidatorPower   map[string]int64
}

StakingKeeperMock is a mock staking keeper for use in the tests

func NewStakingKeeperMock

func NewStakingKeeperMock(operators ...sdk.ValAddress) *StakingKeeperMock

NewStakingKeeperMock creates a new mock staking keeper

func NewStakingKeeperWeightedMock

func NewStakingKeeperWeightedMock(t ...MockStakingValidatorData) *StakingKeeperMock

NewStakingKeeperWeightedMock creates a new mock staking keeper with some mock validator data

func (*StakingKeeperMock) GetBondedValidatorsByPower

func (s *StakingKeeperMock) GetBondedValidatorsByPower(ctx sdk.Context) []stakingtypes.Validator

GetBondedValidatorsByPower implements the interface for staking keeper required by gravity

func (*StakingKeeperMock) GetLastTotalPower

func (s *StakingKeeperMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int)

GetLastTotalPower implements the interface for staking keeper required by gravity

func (*StakingKeeperMock) GetLastValidatorPower

func (s *StakingKeeperMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64

GetLastValidatorPower implements the interface for staking keeper required by gravity

func (*StakingKeeperMock) GetParams

func (s *StakingKeeperMock) GetParams(ctx sdk.Context) stakingtypes.Params

func (*StakingKeeperMock) GetValidator

func (s *StakingKeeperMock) GetValidator(ctx sdk.Context, addr sdk.ValAddress) (validator stakingtypes.Validator, found bool)

func (*StakingKeeperMock) IterateBondedValidatorsByPower

func (s *StakingKeeperMock) IterateBondedValidatorsByPower(ctx sdk.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool))

IterateBondedValidatorsByPower staisfies the interface

func (*StakingKeeperMock) IterateLastValidators

func (s *StakingKeeperMock) IterateLastValidators(ctx sdk.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool))

IterateLastValidators staisfies the interface

func (*StakingKeeperMock) IterateValidators

func (s *StakingKeeperMock) IterateValidators(ctx sdk.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool))

IterateValidators staisfies the interface

func (*StakingKeeperMock) Jail

Jail staisfies the interface

func (*StakingKeeperMock) Slash

Slash staisfies the interface

func (*StakingKeeperMock) Validator

Validator staisfies the interface

func (*StakingKeeperMock) ValidatorByConsAddr

func (s *StakingKeeperMock) ValidatorByConsAddr(ctx sdk.Context, addr sdk.ConsAddress) stakingtypes.ValidatorI

ValidatorByConsAddr staisfies the interface

func (*StakingKeeperMock) ValidatorQueueIterator

func (s *StakingKeeperMock) ValidatorQueueIterator(ctx sdk.Context, endTime time.Time, endHeight int64) sdk.Iterator

type TestInput

type TestInput struct {
	GravityKeeper   Keeper
	AccountKeeper   authkeeper.AccountKeeper
	StakingKeeper   stakingkeeper.Keeper
	SlashingKeeper  slashingkeeper.Keeper
	DistKeeper      distrkeeper.Keeper
	BankKeeper      bankkeeper.BaseKeeper
	GovKeeper       govkeeper.Keeper
	Context         sdk.Context
	Marshaler       codec.Codec
	LegacyAmino     *codec.LegacyAmino
	GravityStoreKey *sdk.KVStoreKey
}

TestInput stores the various keepers required to test gravity

func CreateTestEnv

func CreateTestEnv(t *testing.T) TestInput

CreateTestEnv creates the keeper testing environment for gravity

func (TestInput) AddBalanceToBank

func (input TestInput) AddBalanceToBank(ctx sdk.Context, addr sdk.AccAddress, balances sdk.Coins) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL