Documentation ¶
Index ¶
- Constants
- Variables
- func ExportGenesis(ctx sdk.Context, k Keeper) types.GenesisState
- func InitGenesis(ctx sdk.Context, k Keeper, data types.GenesisState)
- func MakeTestCodec() *codec.LegacyAmino
- func MakeTestMarshaler() codec.Marshaler
- func MintVouchersFromAir(t *testing.T, ctx sdk.Context, k Keeper, dest sdk.AccAddress, ...) sdk.Coin
- func NewMsgServerImpl(keeper Keeper) types.MsgServer
- func NewQuerier(keeper Keeper) sdk.Querier
- func NewTestMsgCreateValidator(address sdk.ValAddress, pubKey ccrypto.PubKey, amt sdk.Int) *stakingtypes.MsgCreateValidator
- type AlwaysPanicStakingMock
- func (s AlwaysPanicStakingMock) GetBondedValidatorsByPower(ctx sdk.Context) []stakingtypes.Validator
- func (s AlwaysPanicStakingMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int)
- func (s AlwaysPanicStakingMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64
- func (s AlwaysPanicStakingMock) IterateBondedValidatorsByPower(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool))
- func (s AlwaysPanicStakingMock) IterateLastValidators(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool))
- func (s AlwaysPanicStakingMock) IterateValidators(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool))
- func (s AlwaysPanicStakingMock) Jail(sdk.Context, sdk.ConsAddress)
- func (s AlwaysPanicStakingMock) Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec)
- func (s AlwaysPanicStakingMock) Validator(sdk.Context, sdk.ValAddress) stakingtypes.ValidatorI
- func (s AlwaysPanicStakingMock) ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingtypes.ValidatorI
- type AttestationHandler
- type Keeper
- func (k Keeper) AddToOutgoingPool(ctx sdk.Context, sender sdk.AccAddress, counterpartReceiver string, ...) (uint64, error)
- func (k Keeper) Attest(ctx sdk.Context, claim types.EthereumClaim, anyClaim *codectypes.Any) (*types.Attestation, error)
- func (k Keeper) BatchConfirms(c context.Context, req *types.QueryBatchConfirmsRequest) (*types.QueryBatchConfirmsResponse, error)
- func (k Keeper) BatchRequestByNonce(c context.Context, req *types.QueryBatchRequestByNonceRequest) (*types.QueryBatchRequestByNonceResponse, error)
- func (k Keeper) BuildOutgoingTXBatch(ctx sdk.Context, contractAddress string, maxElements int) (*types.OutgoingTxBatch, error)
- func (k Keeper) CancelOutgoingTXBatch(ctx sdk.Context, tokenContract string, nonce uint64) error
- func (k Keeper) CurrentValset(c context.Context, req *types.QueryCurrentValsetRequest) (*types.QueryCurrentValsetResponse, error)
- func (k Keeper) DeleteAttestation(ctx sdk.Context, eventNonce uint64, claimHash []byte, att *types.Attestation)
- func (k Keeper) DeleteBatch(ctx sdk.Context, batch types.OutgoingTxBatch)
- func (k Keeper) DeleteValset(ctx sdk.Context, nonce uint64)
- func (k Keeper) GetAttestation(ctx sdk.Context, eventNonce uint64, claimHash []byte) *types.Attestation
- func (k Keeper) GetAttestationMapping(ctx sdk.Context) (out map[uint64][]types.Attestation)
- func (k Keeper) GetBatchConfirm(ctx sdk.Context, nonce uint64, tokenContract string, validator sdk.AccAddress) *types.MsgConfirmBatch
- func (k Keeper) GetBatchConfirmByNonceAndTokenContract(ctx sdk.Context, nonce uint64, tokenContract string) (out []types.MsgConfirmBatch)
- func (k Keeper) GetBridgeChainID(ctx sdk.Context) uint64
- func (k Keeper) GetBridgeContractAddress(ctx sdk.Context) string
- func (k Keeper) GetCurrentValset(ctx sdk.Context) *types.Valset
- func (k Keeper) GetEthAddress(ctx sdk.Context, validator sdk.ValAddress) string
- func (k Keeper) GetLastEventNonceByValidator(ctx sdk.Context, validator sdk.ValAddress) uint64
- func (k Keeper) GetLastObservedEventNonce(ctx sdk.Context) uint64
- func (k Keeper) GetOrchestratorValidator(ctx sdk.Context, orch sdk.AccAddress) sdk.ValAddress
- func (k Keeper) GetOutgoingTXBatch(ctx sdk.Context, tokenContract string, nonce uint64) *types.OutgoingTxBatch
- func (k Keeper) GetOutgoingTxBatches(ctx sdk.Context) (out []*types.OutgoingTxBatch)
- func (k Keeper) GetParams(ctx sdk.Context) (params types.Params)
- func (k Keeper) GetPeggyID(ctx sdk.Context) string
- func (k Keeper) GetStartThreshold(ctx sdk.Context) uint64
- func (k Keeper) GetValset(ctx sdk.Context, nonce uint64) *types.Valset
- func (k Keeper) GetValsetConfirm(ctx sdk.Context, nonce uint64, validator sdk.AccAddress) *types.MsgValsetConfirm
- func (k Keeper) GetValsetConfirms(ctx sdk.Context, nonce uint64) (confirms []*types.MsgValsetConfirm)
- func (k Keeper) GetValsets(ctx sdk.Context) (out []*types.Valset)
- func (k Keeper) HasValsetRequest(ctx sdk.Context, nonce uint64) bool
- func (k Keeper) IterateAttestaions(ctx sdk.Context, cb func([]byte, types.Attestation) bool)
- func (k Keeper) IterateBatchConfirmByNonceAndTokenContract(ctx sdk.Context, nonce uint64, tokenContract string, ...)
- func (k Keeper) IterateOutgoingPoolByFee(ctx sdk.Context, contract string, cb func(uint64, *types.OutgoingTx) bool)
- func (k Keeper) IterateOutgoingTXBatches(ctx sdk.Context, cb func(key []byte, batch *types.OutgoingTxBatch) bool)
- func (k Keeper) IterateValsetConfirmByNonce(ctx sdk.Context, nonce uint64, cb func([]byte, types.MsgValsetConfirm) bool)
- func (k Keeper) IterateValsets(ctx sdk.Context, cb func(key []byte, val *types.Valset) bool)
- func (k Keeper) LastEventNonceByAddr(c context.Context, req *types.QueryLastEventNonceByAddrRequest) (*types.QueryLastEventNonceByAddrResponse, error)
- func (k Keeper) LastPendingBatchRequestByAddr(c context.Context, req *types.QueryLastPendingBatchRequestByAddrRequest) (*types.QueryLastPendingBatchRequestByAddrResponse, error)
- func (k Keeper) LastPendingValsetRequestByAddr(c context.Context, req *types.QueryLastPendingValsetRequestByAddrRequest) (*types.QueryLastPendingValsetRequestByAddrResponse, error)
- func (k Keeper) LastValsetRequests(c context.Context, req *types.QueryLastValsetRequestsRequest) (*types.QueryLastValsetRequestsResponse, error)
- func (k Keeper) OutgoingTxBatchExecuted(ctx sdk.Context, tokenContract string, nonce uint64) error
- func (k Keeper) OutgoingTxBatches(c context.Context, req *types.QueryOutgoingTxBatchesRequest) (*types.QueryOutgoingTxBatchesResponse, error)
- func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error)
- func (k Keeper) SetAttestation(ctx sdk.Context, eventNonce uint64, claimHash []byte, att *types.Attestation)
- func (k Keeper) SetAttestationUnsafe(ctx sdk.Context, eventNonce uint64, claimHash []byte, att *types.Attestation)
- func (k Keeper) SetBatchConfirm(ctx sdk.Context, batch *types.MsgConfirmBatch) []byte
- func (k Keeper) SetEthAddress(ctx sdk.Context, validator sdk.ValAddress, ethAddr string)
- func (k Keeper) SetOrchestratorValidator(ctx sdk.Context, val sdk.ValAddress, orch sdk.AccAddress)
- func (k Keeper) SetParams(ctx sdk.Context, ps types.Params)
- func (k Keeper) SetValsetConfirm(ctx sdk.Context, valsetConf types.MsgValsetConfirm) []byte
- func (k Keeper) SetValsetRequest(ctx sdk.Context) *types.Valset
- func (k Keeper) StoreBatch(ctx sdk.Context, batch *types.OutgoingTxBatch)
- func (k Keeper) StoreBatchUnsafe(ctx sdk.Context, batch *types.OutgoingTxBatch)
- func (k Keeper) StoreValset(ctx sdk.Context, valset *types.Valset)
- func (k Keeper) StoreValsetUnsafe(ctx sdk.Context, valset *types.Valset)
- func (k Keeper) TryAttestation(ctx sdk.Context, att *types.Attestation)
- func (k Keeper) UnpackAttestationClaim(att *types.Attestation) (types.EthereumClaim, error)
- func (k Keeper) ValsetConfirm(c context.Context, req *types.QueryValsetConfirmRequest) (*types.QueryValsetConfirmResponse, error)
- func (k Keeper) ValsetConfirmsByNonce(c context.Context, req *types.QueryValsetConfirmsByNonceRequest) (*types.QueryValsetConfirmsByNonceResponse, error)
- func (k Keeper) ValsetRequest(c context.Context, req *types.QueryValsetRequestRequest) (*types.QueryValsetRequestResponse, error)
- type MockStakingValidatorData
- type MultiSigUpdateResponse
- type SignatureWithAddress
- type SignedOutgoingTxBatchResponse
- type StakingKeeperMock
- func (s *StakingKeeperMock) GetBondedValidatorsByPower(ctx sdk.Context) []stakingtypes.Validator
- func (s *StakingKeeperMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int)
- func (s *StakingKeeperMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64
- func (s *StakingKeeperMock) IterateBondedValidatorsByPower(ctx sdk.Context, ...)
- func (s *StakingKeeperMock) IterateLastValidators(ctx sdk.Context, ...)
- func (s *StakingKeeperMock) IterateValidators(ctx sdk.Context, ...)
- func (s *StakingKeeperMock) Jail(sdk.Context, sdk.ConsAddress)
- func (s *StakingKeeperMock) Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec)
- func (s *StakingKeeperMock) Validator(ctx sdk.Context, addr sdk.ValAddress) stakingtypes.ValidatorI
- func (s *StakingKeeperMock) ValidatorByConsAddr(ctx sdk.Context, addr sdk.ConsAddress) stakingtypes.ValidatorI
- type TestInput
Constants ¶
const ( // used in the relayer QueryValsetRequest = "valsetRequest" QueryValsetConfirmsByNonce = "valsetConfirms" QueryLastValsetRequests = "lastValsetRequests" QueryLastPendingValsetRequestByAddr = "lastPendingValsetRequest" // used to deploy eth contract QueryCurrentValset = "currentValset" QueryValsetConfirm = "valsetConfirm" QueryPeggyID = "peggyID" QueryBatch = "batch" QueryLastPendingBatchRequestByAddr = "lastPendingBatchRequest" QueryOutgoingTxBatches = "lastBatches" QueryBatchConfirms = "batchConfirms" )
const MaxResults = 100 // todo: impl pagination
const OutgoingTxBatchSize = 100
Variables ¶
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) // 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) // 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", } // TestingPeggyParams is a set of peggy params for testing TestingPeggyParams = types.Params{ PeggyId: "testpeggyid", ContractSourceHash: "62328f7bc12efb28f86111d08c29b39285680a906ea0e524e0209d6f6657b713", StartThreshold: 0, EthereumAddress: "0x8858eeb3dfffa017d4bce9801d340d36cf895ccf", BridgeChainId: 11, SignedBatchesWindow: 10, SignedValsetsWindow: 10, SignedClaimsWindow: 10, SlashFractionValset: sdk.NewDecWithPrec(1, 2), SlashFractionBatch: sdk.NewDecWithPrec(1, 2), SlashFractionClaim: sdk.NewDecWithPrec(1, 2), SlashFractionConflictingClaim: sdk.NewDecWithPrec(1, 2), } )
var ( // ModuleBasics is a mock module basic manager for testing ModuleBasics = module.NewBasicManager( auth.AppModuleBasic{}, genutil.AppModuleBasic{}, bank.AppModuleBasic{}, capability.AppModuleBasic{}, staking.AppModuleBasic{}, mint.AppModuleBasic{}, distribution.AppModuleBasic{}, gov.NewAppModuleBasic( paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler, ), params.AppModuleBasic{}, crisis.AppModuleBasic{}, slashing.AppModuleBasic{}, upgrade.AppModuleBasic{}, evidence.AppModuleBasic{}, vesting.AppModuleBasic{}, ) )
Functions ¶
func ExportGenesis ¶
func ExportGenesis(ctx sdk.Context, k Keeper) types.GenesisState
ExportGenesis exports all the state needed to restart the chain from the current state of the chain
func InitGenesis ¶
func InitGenesis(ctx sdk.Context, k Keeper, data types.GenesisState)
InitGenesis starts a chain from a genesis state
func MakeTestCodec ¶
func MakeTestCodec() *codec.LegacyAmino
MakeTestCodec creates a legacy amino codec for testing
func MakeTestMarshaler ¶
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 peggy vouchers given erc20tokens
func NewMsgServerImpl ¶
NewMsgServerImpl returns an implementation of the gov MsgServer interface for the provided Keeper.
func NewQuerier ¶
NewQuerier is the module level router for state queries
func NewTestMsgCreateValidator ¶
func NewTestMsgCreateValidator(address sdk.ValAddress, pubKey ccrypto.PubKey, amt sdk.Int) *stakingtypes.MsgCreateValidator
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 peggy
func (AlwaysPanicStakingMock) GetLastTotalPower ¶
func (s AlwaysPanicStakingMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int)
GetLastTotalPower implements the interface for staking keeper required by peggy
func (AlwaysPanicStakingMock) GetLastValidatorPower ¶
func (s AlwaysPanicStakingMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64
GetLastValidatorPower implements the interface for staking keeper required by peggy
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 ¶
func (s AlwaysPanicStakingMock) Jail(sdk.Context, sdk.ConsAddress)
Jail staisfies the interface
func (AlwaysPanicStakingMock) Slash ¶
func (s AlwaysPanicStakingMock) Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec)
Slash staisfies the interface
func (AlwaysPanicStakingMock) Validator ¶
func (s AlwaysPanicStakingMock) Validator(sdk.Context, sdk.ValAddress) stakingtypes.ValidatorI
Validator staisfies the interface
func (AlwaysPanicStakingMock) ValidatorByConsAddr ¶
func (s AlwaysPanicStakingMock) ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingtypes.ValidatorI
ValidatorByConsAddr staisfies the interface
type AttestationHandler ¶
type AttestationHandler struct {
// contains filtered or unexported fields
}
AttestationHandler processes `observed` Attestations
func (AttestationHandler) Handle ¶
func (a AttestationHandler) Handle(ctx sdk.Context, att types.Attestation, claim types.EthereumClaim) error
Handle is the entry point for Attestation processing.
type Keeper ¶
type Keeper struct { StakingKeeper types.StakingKeeper AttestationHandler interface { Handle(sdk.Context, types.Attestation, types.EthereumClaim) error } // 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.BinaryMarshaler, storeKey sdk.StoreKey, paramSpace paramtypes.Subspace, stakingKeeper types.StakingKeeper, bankKeeper types.BankKeeper) Keeper
NewKeeper returns a new instance of the peggy keeper
func (Keeper) AddToOutgoingPool ¶
func (k Keeper) AddToOutgoingPool(ctx sdk.Context, sender sdk.AccAddress, counterpartReceiver string, amount sdk.Coin, fee sdk.Coin) (uint64, error)
AddToOutgoingPool - checks a counterpart denomintor exists for the given voucher type - burns the voucher for transfer amount and fees - persists an OutgoingTx - adds the TX to the `available` TX pool via a second index
func (Keeper) Attest ¶
func (k Keeper) Attest(ctx sdk.Context, claim types.EthereumClaim, anyClaim *codectypes.Any) (*types.Attestation, error)
TODO-JT: carefully look at atomicity of this function
func (Keeper) BatchConfirms ¶
func (k Keeper) BatchConfirms(c context.Context, req *types.QueryBatchConfirmsRequest) (*types.QueryBatchConfirmsResponse, error)
BatchConfirms returns the batch confirmations by nonce and token contract
func (Keeper) BatchRequestByNonce ¶
func (k Keeper) BatchRequestByNonce(c context.Context, req *types.QueryBatchRequestByNonceRequest) (*types.QueryBatchRequestByNonceResponse, error)
BatchRequestByNonce queries the BatchRequestByNonce of the peggy module
func (Keeper) BuildOutgoingTXBatch ¶
func (k Keeper) BuildOutgoingTXBatch(ctx sdk.Context, contractAddress string, maxElements int) (*types.OutgoingTxBatch, error)
BuildOutgoingTXBatch starts the following process chain: - find bridged denominator for given voucher type - select available transactions from the outgoing transaction pool sorted by fee desc - persist an outgoing batch object with an incrementing ID = nonce - emit an event
func (Keeper) CancelOutgoingTXBatch ¶
CancelOutgoingTXBatch releases all TX in the batch and deletes the batch
func (Keeper) CurrentValset ¶
func (k Keeper) CurrentValset(c context.Context, req *types.QueryCurrentValsetRequest) (*types.QueryCurrentValsetResponse, error)
CurrentValset queries the CurrentValset of the peggy module
func (Keeper) DeleteAttestation ¶
func (k Keeper) DeleteAttestation(ctx sdk.Context, eventNonce uint64, claimHash []byte, att *types.Attestation)
DeleteAttestation deletes an attestation given an event nonce and claim
func (Keeper) DeleteBatch ¶
func (k Keeper) DeleteBatch(ctx sdk.Context, batch types.OutgoingTxBatch)
DeleteBatch deletes an outgoing transaction batch
func (Keeper) DeleteValset ¶
DeleteValset deletes the valset at a given nonce from state
func (Keeper) GetAttestation ¶
func (k Keeper) GetAttestation(ctx sdk.Context, eventNonce uint64, claimHash []byte) *types.Attestation
GetAttestation return an attestation given a nonce
func (Keeper) GetAttestationMapping ¶
GetAttestationMapping returns a mapping of eventnonce -> attestations at that nonce
func (Keeper) GetBatchConfirm ¶
func (k Keeper) GetBatchConfirm(ctx sdk.Context, nonce uint64, tokenContract string, validator sdk.AccAddress) *types.MsgConfirmBatch
GetBatchConfirm returns a batch confirmation given its nonce, the token contract, and a validator address
func (Keeper) GetBatchConfirmByNonceAndTokenContract ¶
func (k Keeper) GetBatchConfirmByNonceAndTokenContract(ctx sdk.Context, nonce uint64, tokenContract string) (out []types.MsgConfirmBatch)
GetBatchConfirmByNonceAndTokenContract returns the batch confirms
func (Keeper) GetBridgeChainID ¶
GetBridgeChainID returns the chain id of the ETH chain we are running against
func (Keeper) GetBridgeContractAddress ¶
GetBridgeContractAddress returns the bridge contract address on ETH
func (Keeper) GetCurrentValset ¶
GetCurrentValset gets powers from the store and normalizes them into an integer percentage with a resolution of uint32 Max meaning a given validators 'Peggy power' is computed as Cosmos power / total cosmos power = x / uint32 Max where x is the voting power on the Peggy contract. This allows us to only use integer division which produces a known rounding error from truncation equal to the ratio of the validators Cosmos power / total cosmos power ratio, leaving us at uint32 Max - 1 total voting power. This is an acceptable rounding error since floating point may cause consensus problems if different floating point unit implementations are involved.
func (Keeper) GetEthAddress ¶
GetEthAddress returns the eth address for a given peggy validator
func (Keeper) GetLastEventNonceByValidator ¶
GetLastEventNonceByValidator returns the latest event nonce for a given validator
func (Keeper) GetLastObservedEventNonce ¶
GetLastObservedEventNonce returns the latest observed event nonce
func (Keeper) GetOrchestratorValidator ¶
func (k Keeper) GetOrchestratorValidator(ctx sdk.Context, orch sdk.AccAddress) sdk.ValAddress
GetOrchestratorValidator returns the validator key associated with an orchestrator key
func (Keeper) GetOutgoingTXBatch ¶
func (k Keeper) GetOutgoingTXBatch(ctx sdk.Context, tokenContract string, nonce uint64) *types.OutgoingTxBatch
GetOutgoingTXBatch loads a batch object. Returns nil when not exists.
func (Keeper) GetOutgoingTxBatches ¶
func (k Keeper) GetOutgoingTxBatches(ctx sdk.Context) (out []*types.OutgoingTxBatch)
GetOutgoingTxBatches returns the outgoing tx batches
func (Keeper) GetPeggyID ¶
GetPeggyID returns the PeggyID (???)
func (Keeper) GetStartThreshold ¶
GetStartThreshold returns the start threshold for the peggy validator set
func (Keeper) GetValsetConfirm ¶
func (k Keeper) GetValsetConfirm(ctx sdk.Context, nonce uint64, validator sdk.AccAddress) *types.MsgValsetConfirm
GetValsetConfirm returns a valset confirmation by a nonce and validator address
func (Keeper) GetValsetConfirms ¶
func (k Keeper) GetValsetConfirms(ctx sdk.Context, nonce uint64) (confirms []*types.MsgValsetConfirm)
GetValsetConfirms returns all validator set confirmations by nonce
func (Keeper) GetValsets ¶
GetValsets returns all the validator sets in state
func (Keeper) HasValsetRequest ¶
HasValsetRequest returns true if a valset defined by a nonce exists
func (Keeper) IterateAttestaions ¶
IterateAttestaions iterates through all attestations
func (Keeper) IterateBatchConfirmByNonceAndTokenContract ¶
func (k Keeper) IterateBatchConfirmByNonceAndTokenContract(ctx sdk.Context, nonce uint64, tokenContract string, cb func([]byte, types.MsgConfirmBatch) bool)
IterateBatchConfirmByNonceAndTokenContract iterates through all batch confirmations MARK finish-batches: this is where the key is iterated in the old (presumed working) code TODO: specify which nonce this is
func (Keeper) IterateOutgoingPoolByFee ¶
func (k Keeper) IterateOutgoingPoolByFee(ctx sdk.Context, contract string, cb func(uint64, *types.OutgoingTx) bool)
IterateOutgoingPoolByFee itetates over the outgoing pool which is sorted by fee
func (Keeper) IterateOutgoingTXBatches ¶
func (k Keeper) IterateOutgoingTXBatches(ctx sdk.Context, cb func(key []byte, batch *types.OutgoingTxBatch) bool)
IterateOutgoingTXBatches iterates through all outgoing batches in DESC order.
func (Keeper) IterateValsetConfirmByNonce ¶
func (k Keeper) IterateValsetConfirmByNonce(ctx sdk.Context, nonce uint64, cb func([]byte, types.MsgValsetConfirm) bool)
IterateValsetConfirmByNonce iterates through all valset confirms by nonce in ASC order MARK finish-batches: this is where the key is iterated in the old (presumed working) code TODO: specify which nonce this is
func (Keeper) IterateValsets ¶
IterateValsets retruns all valsetRequests
func (Keeper) LastEventNonceByAddr ¶
func (k Keeper) LastEventNonceByAddr(c context.Context, req *types.QueryLastEventNonceByAddrRequest) (*types.QueryLastEventNonceByAddrResponse, error)
LastEventNonceByAddr returns the last event nonce for the given validator address, this allows eth oracles to figure out where they left off
func (Keeper) LastPendingBatchRequestByAddr ¶
func (k Keeper) LastPendingBatchRequestByAddr(c context.Context, req *types.QueryLastPendingBatchRequestByAddrRequest) (*types.QueryLastPendingBatchRequestByAddrResponse, error)
LastPendingBatchRequestByAddr queries the LastPendingBatchRequestByAddr of the peggy module
func (Keeper) LastPendingValsetRequestByAddr ¶
func (k Keeper) LastPendingValsetRequestByAddr(c context.Context, req *types.QueryLastPendingValsetRequestByAddrRequest) (*types.QueryLastPendingValsetRequestByAddrResponse, error)
LastPendingValsetRequestByAddr queries the LastPendingValsetRequestByAddr of the peggy module
func (Keeper) LastValsetRequests ¶
func (k Keeper) LastValsetRequests(c context.Context, req *types.QueryLastValsetRequestsRequest) (*types.QueryLastValsetRequestsResponse, error)
LastValsetRequests queries the LastValsetRequests of the peggy module
func (Keeper) OutgoingTxBatchExecuted ¶
OutgoingTxBatchExecuted is run when the Cosmos chain detects that a batch has been executed on Ethereum It frees all the transactions in the batch, then cancels all earlier batches
func (Keeper) OutgoingTxBatches ¶
func (k Keeper) OutgoingTxBatches(c context.Context, req *types.QueryOutgoingTxBatchesRequest) (*types.QueryOutgoingTxBatchesResponse, error)
OutgoingTxBatches queries the OutgoingTxBatches of the peggy module
func (Keeper) Params ¶
func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error)
Params queries the params of the peggy module
func (Keeper) SetAttestation ¶
func (k Keeper) SetAttestation(ctx sdk.Context, eventNonce uint64, claimHash []byte, att *types.Attestation)
SetAttestation sets the attestation in the store
func (Keeper) SetAttestationUnsafe ¶
func (k Keeper) SetAttestationUnsafe(ctx sdk.Context, eventNonce uint64, claimHash []byte, att *types.Attestation)
SetAttestationUnsafe sets the attestation w/o setting height and claim hash
func (Keeper) SetBatchConfirm ¶
SetBatchConfirm sets a batch confirmation by a validator
func (Keeper) SetEthAddress ¶
SetEthAddress sets the ethereum address for a given validator
func (Keeper) SetOrchestratorValidator ¶
func (k Keeper) SetOrchestratorValidator(ctx sdk.Context, val sdk.ValAddress, orch sdk.AccAddress)
SetOrchestratorValidator sets the Orchestrator key for a given validator
func (Keeper) SetValsetConfirm ¶
SetValsetConfirm sets a valset confirmation
func (Keeper) SetValsetRequest ¶
SetValsetRequest returns a new instance of the Peggy BridgeValidatorSet i.e. {"nonce": 1, "memebers": [{"eth_addr": "foo", "power": 11223}]}
func (Keeper) StoreBatch ¶
func (k Keeper) StoreBatch(ctx sdk.Context, batch *types.OutgoingTxBatch)
StoreBatch stores a transaction batch
func (Keeper) StoreBatchUnsafe ¶
func (k Keeper) StoreBatchUnsafe(ctx sdk.Context, batch *types.OutgoingTxBatch)
StoreBatchUnsafe stores a transaction batch w/o setting the height
func (Keeper) StoreValset ¶
StoreValset is for storing a valiator set at a given height
func (Keeper) StoreValsetUnsafe ¶
StoreValsetUnsafe is for storing a valiator set at a given height
func (Keeper) TryAttestation ¶
func (k Keeper) TryAttestation(ctx sdk.Context, att *types.Attestation)
TryAttestation checks if an attestation has enough votes to be applied to the consensus state and has not already been marked Observed, then calls processAttestation to actually apply it to the state, and then marks it Observed and emits an event.
func (Keeper) UnpackAttestationClaim ¶
func (k Keeper) UnpackAttestationClaim(att *types.Attestation) (types.EthereumClaim, error)
func (Keeper) ValsetConfirm ¶
func (k Keeper) ValsetConfirm(c context.Context, req *types.QueryValsetConfirmRequest) (*types.QueryValsetConfirmResponse, error)
ValsetConfirm queries the ValsetConfirm of the peggy module
func (Keeper) ValsetConfirmsByNonce ¶
func (k Keeper) ValsetConfirmsByNonce(c context.Context, req *types.QueryValsetConfirmsByNonceRequest) (*types.QueryValsetConfirmsByNonceResponse, error)
ValsetConfirmsByNonce queries the ValsetConfirmsByNonce of the peggy module
func (Keeper) ValsetRequest ¶
func (k Keeper) ValsetRequest(c context.Context, req *types.QueryValsetRequestRequest) (*types.QueryValsetRequestResponse, error)
ValsetRequest queries the ValsetRequest of the peggy module
type MockStakingValidatorData ¶
type MockStakingValidatorData struct { Operator sdk.ValAddress Power int64 }
MockStakingValidatorData creates mock validator data
type MultiSigUpdateResponse ¶
type SignatureWithAddress ¶
type SignatureWithAddress struct { Signature string `json:"eth_signature"` Address string `json:"eth_address"` }
We can assume that the signatures and the valset members are sorted in the same order but this is insufficient for a relayer to actually relay the batch. Since a batch may pass without signatures from some validators we need some metadata to know who the signatures are from. So that we can properly pass a blank signature for a specific validator
type SignedOutgoingTxBatchResponse ¶
type SignedOutgoingTxBatchResponse struct { Batch types.OutgoingTxBatch `json:"batch"` Signatures []SignatureWithAddress `json:"signatures,omitempty"` }
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 peggy
func (*StakingKeeperMock) GetLastTotalPower ¶
func (s *StakingKeeperMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int)
GetLastTotalPower implements the interface for staking keeper required by peggy
func (*StakingKeeperMock) GetLastValidatorPower ¶
func (s *StakingKeeperMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64
GetLastValidatorPower implements the interface for staking keeper required by peggy
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 ¶
func (s *StakingKeeperMock) Jail(sdk.Context, sdk.ConsAddress)
Jail staisfies the interface
func (*StakingKeeperMock) Slash ¶
func (s *StakingKeeperMock) Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec)
Slash staisfies the interface
func (*StakingKeeperMock) Validator ¶
func (s *StakingKeeperMock) Validator(ctx sdk.Context, addr sdk.ValAddress) stakingtypes.ValidatorI
Validator staisfies the interface
func (*StakingKeeperMock) ValidatorByConsAddr ¶
func (s *StakingKeeperMock) ValidatorByConsAddr(ctx sdk.Context, addr sdk.ConsAddress) stakingtypes.ValidatorI
ValidatorByConsAddr staisfies the interface
type TestInput ¶
type TestInput struct { PeggyKeeper Keeper AccountKeeper authkeeper.AccountKeeper StakingKeeper stakingkeeper.Keeper DistKeeper distrkeeper.Keeper BankKeeper bankkeeper.BaseKeeper GovKeeper govkeeper.Keeper Context sdk.Context Marshaler codec.Marshaler LegacyAmino *codec.LegacyAmino }
TestInput stores the various keepers required to test peggy
func CreateTestEnv ¶
CreateTestEnv creates the keeper testing environment for peggy