* require old chain halts before upgrade
* Update proto/ibc/core/client/v1/client.proto
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* start address reviews
* Apply suggestions from code review
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
* address reviews
* rework upgrade to ensure there is never more than one upgrade client in store
* fix tests
* fix conditional
* make proto-gen
* remove if statement skipping tests in upgrade keeper test
* address reviews
* correctly escape and unescape merkle keys
* add small conditional check
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Colin Axner <colinaxner@berkeley.edu>
* enforce client-chosen parameters are persisted across upgrades in tendermint clients
* Update x/ibc/light-clients/07-tendermint/types/upgrade.go
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
* rename provedID
rename provedID to counterpartyChosenID for connection and channel. Update if statement in handshake and tests. Ref: https://github.com/cosmos/cosmos-sdk/pull/7439#discussion_r498858944
* update docs
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
* update channel handshake
Add ProvedID to ChanOpenTry which allows for flexible handshake identifier selection. Add CounterpartyChannelID to OpenAck. Update and add to handshake tests. Modify msgs_test. Counterparty ValidateBasic will return nil on an empty channel identifier to allow for flexible handshake identifier selection to succeed.
* Update x/ibc/core/04-channel/keeper/handshake.go
* add conn open init docs
* update docs for conn open try and conn open ack
* update channel docs
* update connopeninit
Update ConnOpenInit to reflect changes in https://github.com/cosmos/ics/pull/482. An additional version field is added to the connection handshake and connection open init message to take in an optional field. If this field is empty, then the default versions are used for connection handshake version negotiation.
* add version compatibility check in open init
* implement partial changes to conn open try
* partial implementation of conn open ack changes
* fix tests
* add handshake tests
* make proto
* fix conflicts
* fix lint
* fix lint
* increase code cov
Co-authored-by: Federico Kunze <federico.kunze94@gmail.com>
* update solo machine proto types to use enum for uniqueness
* move data type to SignatureAndData
Adjusts SignatureAndData proto definition to take in a DataType. Updates misbehaviour basic validation to do checks on the data type. Adds unmarshaling tests.
* split signature bytes creation to allow for function reusing. Stuck on strange error on testing codec.go
* fix test bug
* update UnmarshalByType and refactor misbehaviour handle
Rename CanUnmarshalDataByType -> UnmarshalDataByType. Return a new interface and error. Refactor tests to work. Refactor misbehaviour_handle.go to check unmarshaling of the data and DRY code by separating signature and data checks into its own function. Update godoc.
* add tests to codec_test.go
* self review + lint
* update spec
* fix lint
* Update x/ibc/light-clients/solomachine/spec/01_concepts.md
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* increase code cov, update spec
apply most of @fedekunze comments.
* format spec
* make proto
* fix merge conflicts
* make proto
* fix conflicts
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Federico Kunze <federico.kunze94@gmail.com>
* add multisig support to testing pkg
Adds single and multisig public key support to the testing package. Fix build associated with changes.
* update clientstate tests to use singlesig and multsig
* add singlesig and multisig tests for consensus state, header, and misbehaviour
* add singlesig and multisig for solomachine handlers
* add spec
* fix lgtm
* fixes from self review
* fix lint?
* fix build
* increase code cov
* Update x/ibc/light-clients/solomachine/types/client_state.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* apply @fedekunze review suggestions
Add comment to VerifyMultisignature explaining why it uses the nested function. Switch panic to require. Add comment for secp256k1 key usage. Ref: https://github.com/cosmos/cosmos-sdk/pull/7383#pullrequestreview-496591518
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* add check in header updates for non decreasing timestamp
Add check in update.go that the header timestamp is non decreasing compared to the consensus state timestamp. Unit test added in update_test.go
* update error message
* update godoc
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* Update QueryTendermint to take in tendermint height
Update QueryTendermint to subtract the provided height by one to query at the IAVL height.
* Update x/ibc/client/query.go
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
* update height check to > 2
Update height check to ensure that the client context height is greater than two before decrementing. Queries at height 0 and 1 are not expected to succeed. Documentation was updated to reflect this reasoning
* update query to return error for height <= 2
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fix proposal update handling to update the consensus state with the new diversifier and timestamp. Add checks in the proposal update test to ensure the values provided in the header match. Did manual testing to ensure the test additions fails before updating the code to the correct behaviour.
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
* Update tendermint version
* update testing pkg to use latest versioned block protocol for tendermint headers
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Colin Axner <colinaxner@berkeley.edu>
* remove client type struct
Remove the client type struct, remove ClientType interface function from Header and Misbehaviour.
ClientState and ConsensusState return the ClientType as a string.
All uses of client type in testing are now pointing at the testing package so changing the location of the client type const will be painless.
* update godoc and add back client type interface func
Add godoc to client type constant for solo machine, tendermint, and localhost as per @fedekunze review suggestion.
Add back the ClientType interface function for misbehaviour and header for solo machine and tendermint and add back the one liner unit tests as per @AdityaSripal suggestion.
* remove client state from return
remove client state from the return of CreateClient, UpdateClient, and CheckMisbehaviourAndUpdateState as well as update tests to reflect this change.
* fix build error introduced by latest merge
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* update handshake to match spec
* add test for version
* add test for open try
* add more tests
Add a test for supplied versions that do not function with previous connection states in INIT and TRYOPEN
* update godoc
* update version checks to switch
Update the version checks in ConnOpenAck to use a switch to increase readability of the code as well as provide custom error messages for each possible case that may occur. Slighly modified version to review suggestion by @fedekunze
* add intersection comments to handshake and pick version
* remove old code
* Fix page variable for querying consensus state of a node
* Add pointer where required
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
* remove UNINITALIZED connection state
* remove uninit channel state
* add back uninitalized def in proto file
* fix typo
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* remove height from tm consensus state
* various updates to removing dep on GetHeight
* inital addition of wrapper around consensus state with height
* fix tests
* remove GetHeight interface func
* wip test
* add test
* apply @AdityaSripal comments
* apply @fedekunze suggestions
Co-authored-by: Aditya <adityasripal@gmail.com>
* gen ack proto type
* remove transfer ack
* change ics20 ack to use standard type
* update commented tests
* small typo fix
* revert back to module cdc
* update docs
* fix lint
* nit
* update ack event emission
* Update x/ibc-transfer/spec/01_concepts.md
* add comment for onacknowledgement
* Update proto/ibc/channel/channel.proto
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
* Add allow_governance_override_after_expiry flag to tendermint NewCreateClientCmd
* 1) Add LatestTimestamp to ClientState struct by adding a new attribute latest_timestamp to the message ClientState in proto/ibc/tendermint/tendermint.proto
2) Autogenerate x/ibc/07-tendermint/types/tendermint.pb.go by running 'make proto-gen'. Strangely, as a side effect x/distribution/types/genesis.pb.go, x/evidence/types/genesis.pb.go were also modified by the command 'make proto-gen'
3) Add Expired() function
* Fix tests
* 1) Add allow_governance_override_after_expiry flag to tendemint clientStatus
2) Add allow_governance_override_after_misbehaviour flag to tendermint ClientStatus
* Cosmetic changes
* Fix tests
* Add Unfreeze function
* Add new ClientUpdateProposal type
* Add minor fixes
* Add NewClientUpdateProposalHandler unit tests
* Fix proto-lint-docker
* Delete x/ibc/07-tendermint/tendermint_test.go
* Follow convention to put signer last in msg function signature
* 1) Add GetLatestTimestamp function to ClientStatus interface
2) Change Expired() signature to Expired(now time.Time)
* 1) Add override flag to UpdateClient function
2) Fix tests
* Refactor HandleClientUpdateProposal
* 1) Extend exported Header interface with MarshalBinaryBare and UnmarshalBinaryBare methods
2) Move ClientUpdateProposal message to from ibc.proto to client.proto
3) Refactoring code
4) Add override flag to UpdateClient method
5) Fix tests
* 1) Uncomment tests and clean up code
2) Add basic validation of the header (ValidateBasic) when the override flag is true
* Cosmetic changes
* Add TODO comments
* Fix header MarshalBinaryBare, UnmarshalBinaryBare by using protobuf encoding/decoding
* Fix proto comments
* Fix override logic
* undo gettimestamp for solo machine and localhost
* add update after proposal func, some major refactoring in progress, various issues addressed
* fix tendermint proposal update handling
* run make proto-gen
* remove timestamp from tendemint client
* fix build issue for tm types
* apply various review comments
* add tests for 02-client functionality
* self review fixes
* typo
* update tests slightly
* update tendermint proposal handling tests
* Update x/ibc/02-client/keeper/proposal.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/07-tendermint/types/proposal_handle.go
Co-authored-by: Aditya <adityasripal@gmail.com>
* Update x/ibc/07-tendermint/types/proposal_handle.go
Co-authored-by: Aditya <adityasripal@gmail.com>
* apply most of @fedekunze and some of @AdityaSripal suggestions
* convert test to bools
* update docs and increase code cov
* fix build
* fix typo, remove omitempty
* add switch
* apply @fedekunze latest suggestions
* fix lint
* Update x/ibc/02-client/keeper/proposal_test.go
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Colin Axner <colinaxner@berkeley.edu>
Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Aditya <adityasripal@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* Make JSONMarshaler require proto.Message
* Use &msg with MarshalJSON
* Use *LegacyAmino in queriers instead of JSONMarshaler
* Revert ABCIMessageLogs String() and coins tests
* Use LegacyAmino in client/debug and fix subspace tests
* Use LegacyAmino in all legacy queriers and adapt simulation
* Make AminoCodec implement Marshaler and some godoc fixes
* Test fixes
* Remove unrelevant comment
* Use TxConfig.TxJSONEncoder
* Use encoding/json in genutil cli migrate/validate genesis cmds
* Address simulation related comments
* Use JSONMarshaler in cli tests
* Use proto.Message as respType in cli tests
* Use tmjson for tm GenesisDoc
* Update types/module/simulation.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update types/module/module_test.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Add godoc comments
* Remove unused InsertKeyJSON
* Fix tests
Co-authored-by: Aaron Craelius <aaronc@users.noreply.github.com>
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* revert localhost not being created
* Update x/ibc/02-client/keeper/grpc_query_test.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* pause work until client refactor resolved
* continued scaffolding
* add msgs and evidence
* add update and misbehaviour functionality
* implement cli
* various types compile issues
* add sig proof and various bug fixes
* added rest routes
* verification funcs now update sequence number
* add sm suite and header test
* msgcreateclient and msgupdateclient tests
* add basic evidence test
* evidence validate basic test
* consensus state tests
* rm accidental file
* add verify con state and channel state, pause work for counterparty commitment type
* client state tests added
* update clienttype numbers
* update test added
* add misbehaviour tests
* update alias
* update cli tx
* update import alias
* cleanup code
* remove todo, tested by evidence tests
* add info to err msg
* wrapf
* Update x/ibc/06-solomachine/client/cli/tx.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/06-solomachine/client/cli/tx.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/06-solomachine/client/cli/tx.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/06-solomachine/client/cli/tx.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/06-solomachine/update.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/23-commitment/types/signature.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* Update x/ibc/06-solomachine/types/header.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* apply most of the review suggestions from @fedekunze
* remove alias.go
* update cli context with master changes
* merge selective downstream changes from colin/solomachine
* fix build issues
* remove signature proof
* try to migrate to proto
* rm go structs for consensus state and header
* address @fedekunze review and continue proto migration
* fix proto issues
* fix compile bugs in types, proto panics on getpubkey currently
* add timestamp
* update pubkey to be type sdkcrypto.PublicKey
* update timestamp handling
* begin removing amino, migrate to proto
* fix various build issues
* fix most test in types
* change sanitize to produce, fix bug, types test passing
* begin updating cli
* move solomachine into light-clients/
* fix merge issue
* update proto and fix cli
* more fixes and update proto again
* update pubkey to be any
* fix string func issue
* update tests to use testing pkg
* update from tm crypto keys ref to sdk
* fix tests 🎉
* increase codecov
* address TODOs
* address most of @fedekunze comments
* add test case for misbehaviour frozen client
* fix lint
* fix proto lint?
* rename Signature to TimestampedSignature
* remove chainID
* rename FrozenHeight to FrozenSequence
* apply verify consensus state changes requested by @AdityaSripal
* remove dup check
* fix typo in proto file comment
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
Co-authored-by: Federico Kunze <federico.kunze94@gmail.com>
Co-authored-by: Christopher Goes <cwgoes@pluranimity.org>
* Replaced hardcoded 'cosmos' and 'cosmosvaloper' help references
* Ran make format target
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* create base proto package, move ValAddresses to staking
* move tx, crypto, query proto packages into base; mark module level packages as beta
* new cosmos/base/abci.proto file, refactor some message names
* add comments to TxResponse
* refactor RegisterInterface calls to new proto package names
* fix bug in merge commit
* move missing module proto packages to beta, move cosmos.kv to cosmos.base.kv
* add tx.proto files, holding proto messages for module Msgs
* rm old generated pb.go files
* cosmos/base/base.proto -> cosmos/base/coin.proto
* mark genutil proto package as beta
* Fix conflicts
* Restructure proto files
* Re put signing
* Fix test
* Update slashing genesis
* Ignore confio proto files
* Fix interface register
* Make proto-gen
* Fix lint
* Put tx service into tx.v1beta1
* Use v1beta1 in interface registry
* Remove to cosmos.base.store
* Remove extra confio in buf
Co-authored-by: Amaury Martiny <amaury.martiny@protonmail.com>
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* flip switch to proto on consensus state in 02-client
* change consensus state to pointer
* fix bug
* remove amino from connection
* some test cleanup
* migrate tm consensus state to proto
* update con state
* register con state
* add confio to proto lint exclude
* Update proto/ibc/tendermint/tendermint.proto
* casttype to hexbytes
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* x/ibc-transfer: use ibc testing package
* coin denom failure
* update handler tests
* refactor first test in relay
* update onrecvtest, failing tests expected due to existing bug
* update on acknowledgement test, failing test is expected
* refactor timeout test
* revert coin validation changed, comment out tests
* minor fix
* update coordinator.go
* update coordinator.go
* add comment to fix handler test
* add link to issue in handler test
* fix test
Co-authored-by: Colin Axner <colinaxner@berkeley.edu>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* Update genutil collect and gentx to use TxGenerator
* Remove print statement
* Use Tx in genutil DeliverGenTxs
* Use Tx in genutil genesis_state
* Use Tx in ValidateGenesis
* Use amino txJSONDecoder and txBinaryEncoder in genutil InitGenesis
* Use TxConfig in place of TxGenerator
* Add gentx tests
* Remove commented line
* Test fixes
* Apply suggestions from code review
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
* Fixes
* Fixes
* Fixes
* Fixes
* Remove unneeded test case (doesn't apply to proto marshaling)
* linting
* Refactor to use new TxEncodingConfig interface in genutil module
* Replace golang/protobuf with gogo/protobuf package
* Use TxEncodingConfig in InitTestnet
* Remove old amino.go file
* Use TxJSONDecoder in genutil ValidateGenesis
* Add parameter to ValidateGenesis to resolve the tx JSON decoder issue
* Address review feedback
Co-authored-by: Jack Zampolin <jack.zampolin@gmail.com>
Co-authored-by: Aaron Craelius <aaronc@users.noreply.github.com>
Co-authored-by: Aaron Craelius <aaron@regen.network>
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* Rename proto Req to Pagination
* Change Res to Pagination
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
* add some query functions to channel keeper
* update grpc queries and cli cmd and tests
* rerun proto gen after merging master
* fix build broken from merge conflicts
* add test and update proto
* Update x/ibc/04-channel/client/cli/query.go
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* WIP: using encoding config
* Make it compile, test fails
* test should be okay
* Make tests pass
* Add comments
* Convert more tests
* Make TestAnteHandlerSigErrors work
* Make first 2 tests pass
* TestAnteHandlerAccountNumbers
* Use table tests
* Remove print
* Use test table
* TestAnteHandlerSigErrors
* TestAnteHandlerAccountNumbers
* TestAnteHandlerAccountNumbers
* Refactor TestAccount
* Refactor getSignBytes
* TestAnteHandlerAccountNumbersAtBlockHeightZero
* TestAnteHandlerSequences
* TestAnteHandlerFees
* TestAnteHandlerMultiSigner
* TestAnteHandlerBadSignBytes
* TestAnteHandlerSetPubKey
* TestAnteHandlerSigLimitExceeded
* TestCustomSignatureVerificationGasConsumer
* TestAnteHandlerReCheck
* Make all tests pass
* Refactor a little bit more
* Fee test
* SetupTest
* All tests pass
* Refactor to RunTestCase
* Don't use StdFee
* Revert some little stuff
* Finish up last couple of test cases
* Less verbose
* s/TxGenerator/TxConfig
* Add comments
* Indent
* Move KeyTestPubAddr to testdata
* Move testdata to /testutil
* Revert to use signature: nil step in signing
* Add comments
Co-authored-by: Alexander Bezobchuk <alexanderbez@users.noreply.github.com>
* update connection versions with feature set flag
* make connection version modular to support channel versioning and registering
* revert IBCVersion renaming, add channel versioning logic
* fix channel version flag
* remove unnecessary godoc
* remove unused func
* fix lint and version test
* add test and fix error
* revert changes
* update docs
* remove unnecessary godoc
* Apply suggestions from code review
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
* update doc
* add test cases for unchecked lines
* go fmt
* begin migration to standardized version
* revert proto changes
* restructure versioning to go from string to proto
* update versionStr to encodedVersion naming
* fix version test build
* fix keeper tests
* fix various tests
* fixes from self review
* update docs
* fix lint
* add more code cov
* rename ToString funcs to Encode/DecodeVersion + GetCompatibleEncodedVersions renaming
* update spec docs
Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>