Skip to content

Commit

Permalink
feat!: upgrade ics to ibc-go/v7 and cosmos-sdk/v0.47 (cosmos#918)
Browse files Browse the repository at this point in the history
* change ibc module paths

* Squashed commit of the following:

commit ece7bc92a0b388fde32efc39358e3a096949457a
Merge: 8763d99c ead0d214
Author: Jacob Gadikian <[email protected]>
Date:   Fri Apr 21 16:26:55 2023 +0700

    Merge remote-tracking branch 'filter/new_branch_sdk47' into new-new-new-sdk47

commit ead0d21487858fef5e30ddbaf7cedb47b41d7296
Author: Jacob Gadikian <[email protected]>
Date:   Thu Apr 20 14:22:26 2023 +0700

    remove proto files completely

commit 79f565a4d51c08a961e48450be108f6a08ee7a23
Author: Jacob Gadikian <[email protected]>
Date:   Thu Apr 20 14:16:49 2023 +0700

    make protos match exactly

commit c4c856c049c4a718ebf063df279a613d5db56819
Author: Jacob Gadikian <[email protected]>
Date:   Thu Apr 20 14:14:51 2023 +0700

    make protos match the v7.0.x branch exactly

commit af812332d52cb972204490e89e1e3d75bb626141
Author: Jacob Gadikian <[email protected]>
Date:   Thu Apr 20 14:11:31 2023 +0700

    remove even more proto code

commit 97e7021559eaa10a3a8020df5b930f688c7a3ecd
Author: Jacob Gadikian <[email protected]>
Date:   Thu Apr 20 13:56:33 2023 +0700

    remove unneeded proto deps and build with many fewer

commit ddb6218eccad467013b7c585a70bac2eb039d017
Author: Jacob Gadikian <[email protected]>
Date:   Thu Apr 20 12:25:46 2023 +0700

    update proto build image

commit 19fc8a0da6ddd86bb295d413e8ae4928b33f4f0c
Author: Ruslan Akhtariev <[email protected]>
Date:   Thu Apr 20 11:35:55 2023 +0800

    Revert "remove code from third party -> add deps directly to buf.yml"

    This reverts commit a53d890f831a20060da57877f19ec769d6a506f6.

commit a53d890f831a20060da57877f19ec769d6a506f6
Author: Ruslan Akhtariev <[email protected]>
Date:   Thu Apr 20 11:34:07 2023 +0800

    remove code from third party -> add deps directly to buf.yml

commit 88d79f88b8724754ca4a4a6a21f41a6c2d370d51
Merge: b672630b d0ee1ee6
Author: Jacob Gadikian <[email protected]>
Date:   Wed Apr 19 23:13:10 2023 +0800

    Merge branch 'main' into new_branch_sdk47

commit d0ee1ee66b2eb69c039402f5d3e34a2e2a01a51a
Author: Thomas Bruyelle <[email protected]>
Date:   Wed Apr 19 16:55:22 2023 +0200

    fix(build): make proto-update-deps (#830)

    * fix(build): make proto-update-deps

    The URL to the cosmos-sdk SDK_PROTO_URL was using a branch that doesn't
    exists (any more I presume). As a result, `make proto-update-deps`
    wasn't working properly and was filling all the cosmos proto files with
    `404 Not Found`.

    Fix by using the correct branch name, which is
    `interchain-security-rebase.0.45.11`.

    * use SDK latest tag

commit b672630bada19249db7bd759c0af771cae5697b8
Merge: 7ca44282 f7fb129e
Author: Jacob Gadikian <[email protected]>
Date:   Mon Apr 17 21:36:20 2023 +0700

    Merge remote-tracking branch 'origin/main' into new_branch_sdk47

commit 7ca44282579d579874a6d9ea504e3184e63f1b96
Merge: 1909670e 5a94f896
Author: vuong <[email protected]>
Date:   Fri Apr 14 16:17:35 2023 +0700

    Merge pull request #1 from notional-labs/vuong/fix-proto

    fix gogo proto

commit 5a94f896bbd909e75f32b83c084e355d276b1bdb
Author: vuong <[email protected]>
Date:   Fri Apr 14 16:14:41 2023 +0700

    fix gogo proto

commit f7fb129e9db991a6ab714ad6689221e84c7b894b
Author: Shawn <[email protected]>
Date:   Thu Apr 13 06:58:33 2023 -0700

    Soft opt out (#833)

    * WIP soft opt out code with incomplete boilerplate

    * proto changes

    * Seems like it should work

    * Unit test for UpdateLargestSoftOptOutValidatorPower

    * fixes and renames, unit tests work

    * update comment

    * log

    * Update proto/interchain_security/ccv/consumer/v1/consumer.proto

    Co-authored-by: Marius Poke <[email protected]>

    * better validation for soft opt out threshhold

    * improve test

    * slicestable

    * semantics and improved test

    * use correct key util

    * Update module.go

    * comment

    * updated semantics

    * separate files

    * fix TestMakeConsumerGenesis test

    * fix naming

    * change upper bound on soft opt out thresh

    * fix test

    * allow empty valset for tests

    * gofumpt and fix from merge

    * Update x/ccv/consumer/types/params_test.go

    * Update x/ccv/consumer/types/params.go

    * Soft opt out diff tests (#847)

    * wip

    * fixes for ts build

    * AI fixed my bug lol

    * throw error when needed

    * comment

    * disable soft opt-out in diff testing

    * update diff testing model

    * update UTs

    ---------

    Co-authored-by: mpoke <[email protected]>

    * add comment about beginblocker order requirement for soft opt-out

    ---------

    Co-authored-by: Jehan Tremback <[email protected]>
    Co-authored-by: Marius Poke <[email protected]>
    Co-authored-by: Simon Noetzlin <[email protected]>

commit 673b6c44af8fd0eddbc90c7c3db05fc25cc8ae85
Author: Shawn <[email protected]>
Date:   Wed Apr 12 03:24:41 2023 -0700

    Fix Makefile (#837)

    Update Makefile

    Co-authored-by: Simon Noetzlin <[email protected]>

commit 1909670e298a3d2dc94da45d6ec296e57fdca4de
Merge: c76c7284 7fd358f4
Author: sontrinh16 <[email protected]>
Date:   Wed Apr 5 15:48:00 2023 +0700

    fix bug

commit 7fd358f47df7c1ebef4548ed2bb507c33671a81f
Author: Shawn <[email protected]>
Date:   Tue Apr 4 20:43:46 2023 -0700

    feat: standalone to consumer changeover part 1 (#757)

    * on-chain upgrade to consumer chain wip

    * add preCCV store and use it on democracy staking

    * add TODOs and one more packet possibility

    * status update

    * Resolve hermes start issue for trusted validator set by changing revision height

    * remove intermediary logs

    * remove further unused codebase

    * updates for endblocker test, existing test fixes, get last validators

    * update for slashing sovereign validators for the fault made before consumer chain upgrade height

    * resolve comments on github and slack communication

    * update sovereign app to use v4 ibc from v3 & resolve consumer module merge conflict fix issue

    * Update app/sovereign/upgrades/v3/upgrades.go

    Co-authored-by: yaruwangway <[email protected]>

    * rm sovereign chain and tests. Will be replaced by simapp and integration tests

    * duplicate module name

    * add comment

    * small rename

    * remove democracy staking changes

    * consumer ccv beginblock, endblock, and initgenesis order shouldn't matter

    * add mock calls to compile

    * adjust tests for new keeper field

    * add registerDemocConsumer method

    * split out preCCV flag and initial valset

    * cleanup consumer module

    * cleanup

    * more cleanup

    * temp changes to validators.go

    * comment out test

    * rm bad code from merge

    * comment

    * Update app.go

    * UTs for CRUD

    * UTs for keys

    * use make for mocks

    * todo

    * changeover method and test

    * resolve #783

    * comment

    * comments

    * add appropriate TODOs, restore changes to main

    * final nits before non-draft

    * comment on ChangeoverToConsumer

    * more clear comment

    * small comment change

    * update InitGenesis comment

    * sovereign -> standalone

    * missed a file

    * builds now

    * update comment after debug

    * naming refactor

    * edge case for val in old and new sets

    * restore keys after rebase

    ---------

    Co-authored-by: jstr1121 <[email protected]>
    Co-authored-by: jstr1121 <[email protected]>
    Co-authored-by: yaruwangway <[email protected]>

commit c76c7284804f7a56f5a240c68c43fcb1c6db6d6b
Merge: b9db2396 46f568f5
Author: sontrinh16 <[email protected]>
Date:   Wed Apr 5 10:30:54 2023 +0700

    fixing merge conflict

commit 46f568f57de69b3462c167e898a770399c68c891
Author: Simon Noetzlin <[email protected]>
Date:   Tue Apr 4 14:12:45 2023 +0200

    chore: swap name of 'e2e'  and 'integration' tests (#681)

    * save first changes

    * fix gh workflow

    * update gh actions

    * fix bug

    * squash commits

    * Simply use Test rather than Ingt for naming integration test keepers

    * update git workflows

commit b9db2396b53235873072a26484e654ebfe2e9afa
Author: Son Trinh <[email protected]>
Date:   Thu Mar 30 17:06:37 2023 +0700

    fix x folder

commit b4103d3644db155df36653a873ddf3d06512efde
Author: Son Trinh <[email protected]>
Date:   Wed Mar 29 17:14:43 2023 +0700

    add forked staking proto

commit d8c696e45b6b7522665b55b4e05e9981126300b9
Author: Shawn <[email protected]>
Date:   Thu Mar 23 11:35:58 2023 -0700

    Introduce docs website (#759)

    * init docusaurus repo

    * unify theme with cosmos-sdk docs

    * update config

    * add FAQ sections

    * terms

    * Create overview.md

    * consumer dev folder

    * smol

    * Create technical-specification.md

    * add new stuff

    * add key assignment documentation

    * fix typo

    * add clarification

    * update documentation; add features section; improve overview

    * mv website to docs root; mv old readmes to old_docs

    * add doc deployer

    * make deployable to github pages

    * add consumer initiated slashing doc page

    * sovereign -> standalone

    * add validators section

    * fix typos

    * update small things

    * rename validator stuff

    * add joining-testnet docs

    * add title to joining testnet

    * minor refactors

    * refactor faq, update testnet guide

    * update footers

    * update testnet repo links

    * Fix typo

    Change ". Ie." to ", i.e."

    * Fix typo: you key => your key

    * Fix typo: cosumer => consumer

    * update copyright section so docusaurus builds

    * Add . at the end of info boxes

    * Minor grammar change

    * Add missing word "the"

    * Fix typo

    * update broken link for ics-testnets

    * Remove duplicated paragraphs

    * Adjust wording

    ---------

    Co-authored-by: Matija Salopek <[email protected]>
    Co-authored-by: MSalopek <[email protected]>
    Co-authored-by: Philip Offtermatt <[email protected]>

commit 0f7ba20ec157afc8c0af2b974f08fdc000837c0c
Author: Thomas Bruyelle <[email protected]>
Date:   Thu Mar 16 08:13:24 2023 +0100

    chore: add Makefile target to generate mocks (#769)

commit 85235c8b0efabfce98c98bf5628bac46b9c8b7a4
Author: MSalopek <[email protected]>
Date:   Mon Mar 6 18:53:41 2023 +0100

    allow using gaia as provider in integration tests (#735)

    * allow using gaia as provider in integration tests

    * add changes to makefile

    * add gaia dockerfile

    * update testing docs

    * update Makefile; validate gaia tags (support >= v9.x.x)

    ---------

    Co-authored-by: Shawn <[email protected]>

commit cf02d4f45b0c935e890acfd1a7a1efc5869a033a
Author: Shawn <[email protected]>
Date:   Thu Mar 2 13:48:08 2023 -0800

    Key assignment type safety (#725)

    * pb changes

    * nvm dont wanna open that can of worms

    * still wip

    * more fixes

    * almost

    * builds

    * helpers and fixed one file

    * comments

    * mas

    * test fix

    * fix another

    * types

    * smol

    * un mas

    * un mas

    * nit

    * reformat

    * mas

    * fix last bug

    * to fix integration test

    * proper way to do stringer

    * Update slashing.go

    * Update slashing.go

    * links

    * comments

    * Update keeper.go

    * smol

    * nit

    * changes to TestHandleEquivocationProposal

    * merge with fixes

    * merge fix

    * comment

    ---------

    Co-authored-by: MSalopek <[email protected]>

commit 7f2207ad77b6faf568e8ff4b9d1d372d33b09692
Author: MSalopek <[email protected]>
Date:   Thu Mar 2 17:52:59 2023 +0100

    update protos; fix missing proto dependencies (#752)

commit 7ee9fcd763d712bede87748ada7b41590f731c10
Author: MSalopek <[email protected]>
Date:   Tue Feb 28 18:03:17 2023 +0100

    add interchain security consumer QueryParams (#746)

    add QueryParams

commit 0ddbd12b762d1120bb8fa1432edc10ed5de88689
Author: Thomas Bruyelle <[email protected]>
Date:   Mon Feb 6 18:17:31 2023 +0100

    feat: Equivocation gov proposal (#703)

    This change adds a new kind of gov proposal that will slash and
    tombstone validators for double-signing.

    The proposal handler is added in the `provider` module, and use the
    `evidence` module to handle the equivocations.

    Co-authored-by: Albert Le Batteux <[email protected]>
    Co-authored-by: Jehan <[email protected]>

commit 0724edce7de9327dc57f50b95bc64738714824bf
Author: Shawn <[email protected]>
Date:   Mon Jan 30 10:16:30 2023 -0800

    fix: slash meter replenishment (#687)

    * this test should fail

    * changes

    * refactors

    * smol

    * comments

    * naming

    * smalls

    * update E2e tests to validate new behavior

    * nit

    * whoops

    * change key name

    * set time w/in method

    * fix typo

commit ac4be76bf07788ae5aae6fc40907aac51b531926
Author: Shawn <[email protected]>
Date:   Fri Jan 20 05:01:36 2023 -0800

    Bump IBC refs to ver 4.2.0 (#654)

    * Update gitignore

    * Add ibc testing folder

    * WIP replacing ibcsim

    * Tests pass

    * Update ibc-go dependency

    * Remove TODOs

    * Remove unused code

    * Fixes ibcsim simapp dep

    * Remove unneeded simapp code from #632 (#636)

    delete code

    * Fix lint

    * Update dependencies and linters

    * Test gosec ignore

    * Fix gosec

    * Fix linting

    * Update sonarcloud ignore for ibc

    * Revert lint change

    * Removed unused code

    * Refactor ibc directory

    * Add back gaia tests and add ibc-testing disclosure

    * wip

    * compiles

    * tests pass

    * todos

    * fix codeql file indentation

    * 2nd attempt to fix codeql

    * 3rd attempt

    * update OnChanOpenInit version handling to follow ics26

    * revert module version

    * remove version checking in provider OnChanOpenInit

    * address left TODOs

    Co-authored-by: lg <[email protected]>
    Co-authored-by: Daniel <[email protected]>
    Co-authored-by: lg <[email protected]>
    Co-authored-by: Simon Noetzlin <[email protected]>
    Co-authored-by: Marius Poke <[email protected]>

commit 2e064193dd1e0aeea2149548818d23dc849ed189
Author: MSalopek <[email protected]>
Date:   Fri Jan 20 12:09:51 2023 +0100

    run happy path tests on push; bump hermes version (#659)

    * use official hermes release

    * refactor integration test main.go

    * update automated-tests integration test run

    * fix worng container teardown

    * refactor main.go; add parallel execution

    * update Makefile

    * simplify code

    * refactor for naming consistency

    * fix string formatting

commit 7c9d0934002377f2b95d7d722fe0101df5f190fc
Author: Marius Poke <[email protected]>
Date:   Fri Dec 23 18:44:10 2022 +0100

    Fix: Iteration through PacketMaturityTimes assumes maturity time order (#622)

    * WIP convert iterators to array getters.
    Still need to rename functions, and some compile errors in tests.

    * WIP - compiles, fixing tests

    * Unit and e2e tests work

    * add notes about stopping iteration

    * WIP - rename and add some notes

    * Add types to proto

    * delete unused code

    * resolve naming conflict

    * implement another type as proto

    * fixing more stuff

    * delete TODOJEHAN.md

    * adds many of Marius's iteration order comments from 599, and does some small refactors for clarity

    * fix nil pointer deref

    * call GetAllConsumerChains once

    * expand TestGetAllChannelToChains

    * expand TestGetAllUnbondingOps

    * GetAllUnbondingOpIndexes; cleanup proto files

    * fix GetAllValsetUpdateBlockHeights and UTs

    * remove GetAllSlashAck

    * add tests for GetFirstVscSendTimestamp

    * key assignment iterators

    * reviewed proposals

    * add TestGetAllValsetUpdateBlockHeights

    * add TestGetAllOutstandingDowntimes

    * add GetElapsedPacketMaturityTimes

    * fix linter

    * fix linter

    * prevent implicit memory aliasing

    * add UTC to TestPacketMaturityTime

    * fix TestPacketMaturityTime

    * avoid local variable name shadowing

    * Update x/ccv/consumer/keeper/keeper.go

    Co-authored-by: Shawn <[email protected]>

    * replace cases with packets in TestPacketMaturityTime

    * add expected order to TestPacketMaturityTime

    * add expected order to TestGetAllHeightToValsetUpdateIDs

    * add expected order to TestGetAllOutstandingDowntimes

    * add TestGetAllCCValidator

    * add expected order to TestGetAllConsumerChains

    * add expected order to TestGetAllChannelToChains

    * add expected order to TestGetAllUnbondingOps

    * add expected order to TestGetAllUnbondingOpIndexes

    * add expected order to TestGetAllValsetUpdateBlockHeights

    * add expected order to TestInitTimeoutTimestamp

    * add expected order to TestVscSendTimestamp

    * add expected order to TestGetAllValidatorConsumerPubKey

    * add expected order to TestGetAllValidatorsByConsumerAddr

    * add expected order to TestGetAllKeyAssignmentReplacements

    * add expected order to TestGetAllConsumerAddrsToPrune

    * iterate over packet maturities in order of time

    * fix linter

    * move AppendMany to utils

    * review suggestions

    * refactor TestPacketMaturityTime UT

    * nits

    Co-authored-by: Jehan Tremback <[email protected]>
    Co-authored-by: Shawn <[email protected]>

commit 4063734e3584a93175159ef1e09843360fae3335
Author: Simon Noetzlin <[email protected]>
Date:   Thu Dec 22 17:43:04 2022 +0100

    refactor: wrap VSCMatured/Slash packets into a consumer packet type (#626)

    * refactor: create a consumer packet type

        - Create a ConsumerPacketData type definition at the CCV protocol level
        - Update consumer to send ConsumerPacketData to provider
        - Update provider to receive ConsumerPacketData

    Co-authored-by: mpoke <[email protected]>

commit e8bc5b878efef22b5dde5df4977abda5645d3322
Author: Jehan <[email protected]>
Date:   Wed Dec 21 15:18:02 2022 -0800

    Refactor: Convert iterators to array getters (#596)

    * WIP convert iterators to array getters.
    Still need to rename functions, and some compile errors in tests.

    * WIP - compiles, fixing tests

    * Unit and e2e tests work

    * add notes about stopping iteration

    * WIP - rename and add some notes

    * Add types to proto

    * delete unused code

    * resolve naming conflict

    * implement another type as proto

    * fixing more stuff

    * delete TODOJEHAN.md

    * adds many of Marius's iteration order comments from 599, and does some small refactors for clarity

    * fix nil pointer deref

    * call GetAllConsumerChains once

    * expand TestGetAllChannelToChains

    * expand TestGetAllUnbondingOps

    * GetAllUnbondingOpIndexes; cleanup proto files

    * fix GetAllValsetUpdateBlockHeights and UTs

    * remove GetAllSlashAck

    * add tests for GetFirstVscSendTimestamp

    * key assignment iterators

    * reviewed proposals

    * add TestGetAllValsetUpdateBlockHeights

    * add TestGetAllOutstandingDowntimes

    * add GetElapsedPacketMaturityTimes

    * fix linter

    * fix linter

    * prevent implicit memory aliasing

    * add UTC to TestPacketMaturityTime

    * fix TestPacketMaturityTime

    * avoid local variable name shadowing

    * Update x/ccv/consumer/keeper/keeper.go

    Co-authored-by: Shawn <[email protected]>

    * replace cases with packets in TestPacketMaturityTime

    * add expected order to TestPacketMaturityTime

    * add expected order to TestGetAllHeightToValsetUpdateIDs

    * add expected order to TestGetAllOutstandingDowntimes

    * add TestGetAllCCValidator

    * add expected order to TestGetAllConsumerChains

    * add expected order to TestGetAllChannelToChains

    * add expected order to TestGetAllUnbondingOps

    * add expected order to TestGetAllUnbondingOpIndexes

    * add expected order to TestGetAllValsetUpdateBlockHeights

    * add expected order to TestInitTimeoutTimestamp

    * add expected order to TestVscSendTimestamp

    * add expected order to TestGetAllValidatorConsumerPubKey

    * add expected order to TestGetAllValidatorsByConsumerAddr

    * add expected order to TestGetAllKeyAssignmentReplacements

    * add expected order to TestGetAllConsumerAddrsToPrune

    * Add test for GetSlashAndTrailingData (#623)

    * add test

    * comments

    * Update throttle.go

    * use InitTimeoutTimestamp instead of two slices

    * Fix: Change keys for storing proposals (#620)

    * change keys for storing proposals

    * apply review suggestions

    * Apply suggestions from code review

    Co-authored-by: Shawn <[email protected]>

    Co-authored-by: Jehan <[email protected]>
    Co-authored-by: Shawn <[email protected]>

    Co-authored-by: mpoke <[email protected]>
    Co-authored-by: Shawn <[email protected]>

commit 8603f9c97548fb4f3979e85e99bb6979b0eaf269
Author: MSalopek <[email protected]>
Date:   Tue Dec 20 20:29:32 2022 +0100

    add slash throttling queries (#600)

    * add slash throttle queries

    * add slash throttle integration tests

    * add integration tests

    * add integration tests

    * make tests pass

    * should build now

    * implicit memory aliasing stuff

    * rm file

    * refactor queries

    * changes

    * new wrapper type

    * Throttle queries refactors (#614)

    * refactors

    * Update state.go

    * rm duplicated imports

    * change slash meter params in default test run

    * add comment

    * move state checks to provider

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>

commit 0657172ad63490f62ddbb22f7518e0b223cd9844
Author: Shawn <[email protected]>
Date:   Tue Dec 20 06:11:53 2022 -0800

    GlobalSlashEntry protobuf type (#613)

    * changes

    * indentation fix

    * un mas

commit 61608316cf01d1388907e18290c7f2c894c2c0fa
Author: Shawn <[email protected]>
Date:   Mon Dec 19 10:37:17 2022 -0800

    Throttle refactors (#611)

    * comments and move panic

    * proto changes

    * naming

    * remove break label

    * refactor HandlePacketDataForChain

    * Revert "refactor HandlePacketDataForChain"

    This reverts commit 8f6a29679e1499d605579e941ed74ba67b1d4e05.

    * comment

    * comments

commit a6716a6a6e6e00992a0f2b05b985edf98b76bad9
Author: lg <[email protected]>
Date:   Fri Dec 16 16:52:09 2022 +0100

    refactor: TrustingPeriodFraction should be a fraction. (#593)

    * WIP

    * Refactor TrustingPeriodFraction

    * Update default TrustingPeriodFraction to 2/3 or 66%

    Co-authored-by: Jehan <[email protected]>

commit 3a8d0a27dfdb2abece8ce5dd86ae5172e8652581
Author: MSalopek <[email protected]>
Date:   Thu Dec 8 09:57:42 2022 +0100

    update consumer addition proposal (#558)

    * update ConsumerAdditionProposal in provider.proto

    * add ValidateBasic for ConsumerAdditionProposal message

    * fix failing ValidateBasic tests

    * make all tests work

    * make all tests work

    * update proposal in integration tests

    * update comment

    * refactor after rebase

    * run make proto-gen after rebase on main

    * remove LockUnbonding flag and references from repo (PR #551)

    * refactor after reviews

commit f57c604c2e2a51c1e9dafad1d9e0332e461e2bf4
Author: Marius Poke <[email protected]>
Date:   Wed Dec 7 11:52:49 2022 +0100

    Key assignment (#515)

    * add MsgAssignConsumerKey

    * add MsgAssignConsumerKey

    * fix package name

    * add keys

    * add keeper methods for key assignment

    * handle MsgAssignConsumerKey

    * map addresses in slash requests

    * prune old consumer addresses

    * move AssignConsumerKey logic to keeper

    * update consumer initial valset

    * add ApplyKeyAssignmentToValUpdates

    * fix client creation

    * do not check init valset on consumer

    * clean state on val removal

    * fix TestAssignConsensusKeyForConsumerChain

    * delete on val removal

    * remove reverse mapping on val removal

    * remove pending key assignment in EndBlock

    * add query endpoints
    add summary of indexes
    change ConsumerValidatorByVscID to ConsumerAddrsToPrune

    * Refactor AssignConsumerKey for clarity (IMO)

    * finish key assignment genesis code- untested

    * FIxed mocks compile issue - not sure if it works right though.

    * add test for init and export genesis

    * set after get in AssignConsumerKey

    * enable AssignConsumerKey to be called twice

    * remove key assignment on chain removal

    * apply some review comments

    * fix bug: two validator with same consumer key

    * rename key: ConsumerValidatorsByVscIDBytePrefix -> ConsumerAddrsToPruneBytePrefix

    * PendingKeyAssignment -> KeyAssignmentReplacements

    * msg.ProviderAddr is a validator addr

    * fix: key assignment genesis tests (#517)

    * Fix consumer init genesis test

    * fix provider genesis tests

    * fix key assignement handler

    * fix linter

    * fix merge conflict

    * fix ProviderValidatorAddress

    * remove unused expectation

    Co-authored-by: Marius Poke <[email protected]>

    * add key assignment CRUD operations unit tests (#516)

    * test val consumer key related CRUD

    * test val consumer addr related CRUD

    * test pending key assignments related CRUD

    * refactor after review session

    * refactor after review session

    * add prune key CRUD tests

    * renamings in testfiles

    * improve KeyAssignmentReplacement set and get

    * remove ApplyKeyAssignmentToInitialValset (redundant)

    * add invariant to docstring of AppendConsumerAddrsToPrune

    * fix address conversion

    * adding e2e tests

    * fix linter

    * add queries; setup integration tests (#519)

    * add queries; setup integration testse

    * test key assignment before chain start

    * fix state queries; refactor

    * rm extra comment

    * rm unused action field

    * bump voting times in all tests

    * add provider address query to tests

    * Adds some very basic random testing and unit tests (#522)

    * Adds imports

    * Does multi iterations: fails!

    * Handle errs

    * checkpoint debug

    * Pre introduce dynamic mock

    * Issue seems to be resolved

    * Removes prints in key asisgn

    * Removes debug, pre reintroduce all test features

    * Fix some magic numbers, bring back prune check

    * Pre rework initial assignments

    * Refactor and tidyup

    * Better docs, clarity, org

    Co-authored-by: Daniel <[email protected]>

    * Enable key assignment testing for all e2e tests (#524)

    * split CCVTestSuite.setupCallback in two

    * pre-assign keys for all vals of first consumer

    * fix linter

    * remove TestConsumerGenesis

    * adding ADR

    * move handler.go outside client/

    * replace [][]byte with AddressList

    * remove IterateAllConsumerAddrsToPrune; not needed

    * apply review suggestions

    * fix linter

    * Danwt/key assignment slash test (#545)

    * cp

    * wip

    * note

    * cp

    * Adds slash test

    Co-authored-by: Daniel <[email protected]>

    * Fixes #503 prevents two key assignment key overlap security issues (#556)

    * Deletes out of date duplicate code

    * Adds check that validator with key does not already exist

    * Partially adjust assign unit test

    * Finishes adjusting unit

    * Updates stress test to never find a validator

    * Improves comment

    * Fixes handler_test

    * Adds validatorI iterator to expected keeper

    * Implements AfterValidatorCreated hook

    * Names

    * Simplifies validator query

    * Adds hooks test

    * Remove TODO

    * Fix random sim test

    Co-authored-by: Daniel <[email protected]>

    * Bump AssignConsumerKey comment

    * improve comments for iterators

    * Masa/key assignment integration tests amend (#548)

    * handle gosec false positive

    * add err checks for key assign; rm multiconsumer tests

    * guestimate block window for keyswaps in happyPeth

    * start multiconsumer with flag

    * remove node_modules

    * fix comment

    Co-authored-by: Jehan Tremback <[email protected]>
    Co-authored-by: Simon Noetzlin <[email protected]>
    Co-authored-by: MSalopek <[email protected]>
    Co-authored-by: Daniel T <[email protected]>
    Co-authored-by: Daniel <[email protected]>
    Co-authored-by: Jehan <[email protected]>

commit 174f4cd5965b28fc7cb34fc1f4841857d71a8a18
Author: MSalopek <[email protected]>
Date:   Mon Dec 5 09:27:28 2022 +0100

    refactor provider pending packets handling (#552)

commit fb63b1849862b7d28541065a3636f48bb59555d7
Author: Simon Noetzlin <[email protected]>
Date:   Thu Dec 1 22:05:17 2022 +0100

    update provider genesis validation (#525)

    * update provider genesis validation

    * Update client ID validation for provider genesis

    * Make provider VSCID to be stricly positive

    Update provider genesis validation

    * update comment

    * remove tmp files

    * fix provider genesis validation bugs

    * remove wrongly introduced ibc-go dep

    * typo

    * improve coverage

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>

commit b1a3e53ef301606be0dd09f231fd362c9cee92a9
Author: MSalopek <[email protected]>
Date:   Tue Nov 22 19:49:19 2022 +0100

    add consumer addition proposal documentation (#502)

    * add consumer addition proposal documentation

    * update after reviews

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>

commit 2466b26406258501f7d9b7c955a81d7248a84944
Author: Simon Noetzlin <[email protected]>
Date:   Fri Nov 18 19:15:43 2022 +0100

    Update #264 - updates genesis and genesis tests (#382)

    * reformat consumer genesis test

    * remove validator fill in of ExportAppStateAndValidators

    * checkpoint, testing export genesis consumer

    * test consumer export

    * make pass the tests

    * fix export height to valset update id in consumer

    * pass the tests

    * pass the tests

    * * Update the provider and consumer export/init genesis with the new CCV states

    * Improve consumer export genesis UT when channel is established or not

    * Set the consumer ExportAppStateAndValidators to not return validators

    * Add the new CCV states to the provider and consumer gensis proto files

    * remove pendingVSCPackets

    * remove references in create consumer chain proposal setters and getters

    * fix unchecked errors

    * fix iterator bug

    * fix linter

    * format provider genesis tests

    * format consumer genesis tests

    * clarify consumer keeper genesis

    * remove unused test helpers

    * Feat: update consumer init and export genesis
    * Stop exporting client and consensus states in consumer genesis
    * Add LastTransmissionBlockHeight to genesis proto

    * Revert "Feat: update consumer init and export genesis"

    This reverts commit eb59e502aa4c8adb35435ff006a7db0fdb5f14c0.

    * * Add LastTransmissionBlockHeight to consumer genesis proto
    * Set slashing states and LastTransmissionBlockHeight during consumer init genesis

    * Update consumer init

    * Update consumer genesis export

    * fix last nits

    * Fix consumer InitGenesis

    * Update comments in genesis.proto

    * format consumer genesis test

    * update comments

    * Update provider genesis comments

    * fix small lint errs

    * * Update consumer genesis validation
    * Fix export genesis bug

    * Document consumer genesis validation

    * Document consumer genesis validation

    * Update after #448 merge

    * Update x/ccv/consumer/types/genesis.go

    Co-authored-by: Marius Poke <[email protected]>

    Co-authored-by: Jehan <[email protected]>
    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>
    Co-authored-by: Marius Poke <[email protected]>

commit 3362a1ccc44b62339be1c101da22ef14a485ba0c
Author: Marius Poke <[email protected]>
Date:   Fri Nov 18 09:45:29 2022 +0100

    handle provider and consumer client expiration (#448)

    * handle expired client when sending packets

    * add e2e test

    * add upgradeExpiredClient to e2e tests

    * improve incrementTime... functions

    * fix golangci-lint error

    * add client expired check

    * replace incrementTimeBy w/ incrementTime

    * replace AppendPendingVSC w/ AppendPendingVSCs

    * simplify logic of sendValidatorUpdates

    * separate PrepareIBCPacketSend from SendIBCPacket

    * error handling on SendPacket

    * export pending VSC packets

    * improve comments

    * use k.GetCCVTimeoutPeriod

    * remove GetUpgradeKeeper

    * AppendPendingVSCs: use variadic function

    * remove unnecessary if

    * refactor pending VSC CRUD methods

    * refactor sending valset updates to chains

    * add tests for VSC queueing

    * refactor after reviews

    * refactor after reviews

    * Merge marius/435-client-expired-consumer into marius/435-client-expired

    Squashed commit of the following:

    commit 3d82d19304a49938bfef573c99d2a77182167645
    Author: mpoke <[email protected]>
    Date:   Fri Nov 11 10:37:06 2022 +0100

        fix typo

    commit 1efa9909162acb22a0e6d70e8da540ba437a3a59
    Author: mpoke <[email protected]>
    Date:   Wed Nov 9 19:07:30 2022 +0100

        avoid trying to send on expired client

    commit a0cb6452776cdf68bf1f35ec5c069bdd76086991
    Author: mpoke <[email protected]>
    Date:   Wed Nov 9 15:56:59 2022 +0100

        error handling on SendPacket

    commit 7c9c7629966a7d0b894fde3be9ad83f36afac97f
    Author: mpoke <[email protected]>
    Date:   Wed Nov 9 13:55:05 2022 +0100

        use PrepareIBCPacketSend pattern on consumer

    commit e7ff9d96fd325f851c1c1eb7dc1ed87c65274878
    Author: mpoke <[email protected]>
    Date:   Wed Nov 9 10:17:18 2022 +0100

        update QA plan

    commit d7fafe8e9987f3b449e3cff07733f8316c484027
    Author: mpoke <[email protected]>
    Date:   Wed Nov 9 10:09:41 2022 +0100

        add e2e test TestConsumerPacketSendExpiredClient

    commit 1722f1319edb44e3dd867329c6c6875436d9457e
    Author: mpoke <[email protected]>
    Date:   Tue Nov 8 20:20:13 2022 +0100

        remove SlashRequest from proto

    commit 241e13b2d9d47b641a9054973f4d109c78e68ec6
    Author: mpoke <[email protected]>
    Date:   Tue Nov 8 20:17:52 2022 +0100

        remove pending slash requests from genesis

    commit 073f10160dd9a1d4cd857043e4dcff494230e489
    Author: mpoke <[email protected]>
    Date:   Tue Nov 8 19:44:46 2022 +0100

        replace pending SlashRequests w/ peding DataPackets

    commit a2d1069459f99de0c3d2ce8d4794e51cff5cd8ed
    Author: mpoke <[email protected]>
    Date:   Tue Nov 8 19:08:33 2022 +0100

        code for pending data packets

    commit acc3454279052237054abab26bf20c7f5a42c386
    Author: mpoke <[email protected]>
    Date:   Mon Nov 7 21:03:03 2022 +0100

        add e2e test

    commit 6170fa879745bb8f1e12f82b47deee13462f3c0e
    Author: mpoke <[email protected]>
    Date:   Mon Nov 7 11:37:57 2022 +0100

        handle expired client when sending packets

    * and packet queueing to consumer keeper

    * refactor e2e tests

    * refactor after review session

    * additional refactor after reviews

    Co-authored-by: Matija Salopek <[email protected]>
    Co-authored-by: Jehan <[email protected]>

commit 34c28bcd3f00afd6c2f0c7b4096abf4169accbec
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Mon Nov 14 16:32:31 2022 -0800

    circuit breaker params  (#444)

    * changes

    * Update params.go

commit b0840486632e85dffc18420d53a720619949e09f
Author: Marius Poke <[email protected]>
Date:   Fri Nov 4 21:49:06 2022 +0100

    VSCPackets should have timeout on provider (#422)

    * add provider-based timeout params

    * add InitTimeoutTimestamp to store

    * add init timeout logic

    * params boilerplate code & making tests pass

    * add TestInitTimeout* e2e tests

    * improve e2e tests; add test case to TestUndelegationDuringInit

    * remove VSC timeout

    * remove VSC timeout param

    * add testcase to TestValidateParams

    * handle StopConsumerChain error & gofmt

    * add VSC timeout period param

    * Fix init timeout conflicts (#409)

    * Importable e2e tests (#401)

    * fixes

    * add comment to GetInitTimeoutTimestamp

    * add VscTimeoutTimestamp key and tests

    * change VSCTimeoutTimestamp key

    * fix e2e tests

    * add e2e test

    * remove useless code

    * improve comment

    * copy -> append in provider key definitions (#426)

    Update keys.go

    * Update tests/e2e/unbonding.go

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>

    * Update x/ccv/provider/keeper/keeper_test.go

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>

    * update comment

    * replace removedChainIds w/ chainIdsToRemove

    * changing keys from (chainID, ts) to (chainID, vscID)

    * make UnbondingOpIndexKey consistent with VscSendingTimestampKey

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>

commit 46d5c056aa2affe2683dae389274afc4e81fdbf8
Author: Marius Poke <[email protected]>
Date:   Tue Nov 1 20:39:30 2022 +0100

    Channel initialization timeout (#406)

    * add provider-based timeout params

    * add InitTimeoutTimestamp to store

    * add init timeout logic

    * params boilerplate code & making tests pass

    * add TestInitTimeout* e2e tests

    * improve e2e tests; add test case to TestUndelegationDuringInit

    * remove VSC timeout

    * remove VSC timeout param

    * add testcase to TestValidateParams

    * handle StopConsumerChain error & gofmt

    * Fix init timeout conflicts (#409)

    * Importable e2e tests (#401)

    * fixes

    * add comment to GetInitTimeoutTimestamp

    * Update proto/interchain_security/ccv/provider/v1/provider.proto

    Co-authored-by: Aditya <[email protected]>

    * fix formatting in proto file

    * add comment to SetConsumerChain

    * fix typo

    * add comment re. EndBlock order

    * change name of testcase in TestUndelegationDuringInit

    Co-authored-by: Shawn Marshall-Spitzbart <[email protected]>
    Co-authored-by: Aditya <[email protected]>

commit a6b8233c72c17019c187e0b6698a260741bd7416
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Fri Oct 28 08:34:26 2022 -0700

    Consumer Unbonding As Param (#410)

    Co-authored-by: Daniel T <[email protected]>
    Co-authored-by: Daniel <[email protected]>

commit 2046d8fff17840f166bd0a0f49a3fa938022103a
Author: MSalopek <[email protected]>
Date:   Tue Oct 25 15:55:40 2022 +0200

    324 create queries for internal ccv state (#366)

    * add query protos

    * add ConsumerChains provider query

    * wip: add queries for pending proposals and distributions

    * wip: add queries for pending proposals and distributions

    * add stop, start proposals to queries

    * add stop, start proposals queries to cli

    * add consumer queries

    * add fee distribution tests

    * test getting consumer chain add/remove proposals

    * register consumer queries

    * rm unnecessary iterator checks

    * unify naming in query functions

    * remove matured proposals

    * refactor tests and grpc queries

    * add client ID to consumer list query

    * run make proto-gen after rebase on main

    * fix failing tests; reflect repo changes in testutils

    * address review comments and refactor

    * refactor query consumer chains

    * add missing newline in query.proto

    Co-authored-by: Marius Poke <[email protected]>
    Co-authored-by: Jehan <[email protected]>

commit d7bfd3a03b220618a9b5c82eaa8dc217384f39d8
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Thu Oct 20 10:47:27 2022 -0700

    Replace hardcoded constants with params (#393)

    * changes

    * edits

    * Update params_test.go

    * small

    * Update genesis_test.go

    * remove "num" from historical entries param

    * comment

    * use params p1

    * use params p2

    * use params p3

    * p4

    * change default transfer timeout period

    * Update proposal_test.go

    * default historical entries

    * is negative

    * add test case

    * forgot one

    * comment

commit a8d1ee86ba8a96cc53f9475c30db0e98f699c007
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Mon Oct 10 02:11:38 2022 -0700

    Make CCV packet timeout a param (#376)

    * large commit

    * got ridda stuff

    * Update params.go

    Co-authored-by: Jehan <[email protected]>
    Co-authored-by: Daniel T <[email protected]>

commit 46a9e1a0a5456617511ed18bf720d86f82ab8c92
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Tue Oct 4 15:41:29 2022 -0700

    close 339 (#373)

    Co-authored-by: Jehan <[email protected]>

commit 45d52e962e87239988297fd2cd4377fbf44f7b31
Author: Simon Noetzlin <[email protected]>
Date:   Wed Oct 5 00:09:58 2022 +0200

    Update export and init genesis (#264)

    * reformat consumer genesis test

    * remove validator fill in of ExportAppStateAndValidators

    * checkpoint, testing export genesis consumer

    * test consumer export

    * make pass the tests

    * fix export height to valset update id in consumer

    * pass the tests

    * pass the tests

    * * Update the provider and consumer export/init genesis with the new CCV states

    * Improve consumer export genesis UT when channel is established or not

    * Set the consumer ExportAppStateAndValidators to not return validators

    * Add the new CCV states to the provider and consumer gensis proto files

    * remove pendingVSCPackets

    * remove references in create consumer chain proposal setters and getters

    * fix unchecked errors

    * fix iterator bug

    * fix linter

    * format provider genesis tests

    * format consumer genesis tests

    Co-authored-by: Jehan <[email protected]>

commit 8ac91e113f156d812e9dca22f74991905372b985
Author: Marius Poke <[email protected]>
Date:   Fri Sep 23 01:22:54 2022 +0200

    gov-distribution module (#130)

    * distribution alternative allocation

    * update distribution to work off of bonded validators not votes

    * copy of consumer app

    * added ccvstaking, ccvdistribution, ccvgov and ccvminting

    * add cmd interchain-security-cdd

    * distribution tokens should be coming from ConsumerRedistributeName not feeCollector

    * beginning of tests

    * Rebase and fix build errors

    * Democracy chain integration tests, part 1

    * Democracy chain integration tests, part 2

    * Clean up and e2e test for democracy distribution

    * gov-distribution module - cr fix

    * fix small merge issue

    Co-authored-by: rigelrozanski <[email protected]>
    Co-authored-by: billy rennekamp <[email protected]>
    Co-authored-by: dusan-ethernal <[email protected]>
    Co-authored-by: stana-ethernal <[email protected]>
    Co-authored-by: Jehan <[email protected]>
    Co-authored-by: Jehan Tremback <[email protected]>

commit 2f1f620775e3f5450bc47e651db2d24ad11df03d
Author: MSalopek <[email protected]>
Date:   Wed Sep 21 00:55:21 2022 +0200

    use protobufs to define ccv state (#332)

    * refactor UnbondingOpsIndex operations

    Define message UnbondingOpsIndex in ccv protos.
    Use UnbondingOpsIndex instead of []uint64 where applicable.

    * update UnbondingOpsIndex tests

    * refactor MaturedUnboundingOps store operations

    Define message MaturedUnboundingOps in ccv protos.
    Refactor code to use new message where applicable.

    * update e2e tests

    * refactor protobuf usage for ccv state

    * add slash requests message

    * use protobuf for storing slashes on consumer

    * use protobuf for storing slash acks on provider

    Co-authored-by: Jehan <[email protected]>

commit 25bd62758a9940e55401075a2cb8505765e797aa
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Tue Sep 20 14:13:48 2022 -0700

    Proposal naming refactors (#354)

    * consumer addition props

    * missed one

    * acronyms

    * consumer removal props

    * the rest

    * comment

    * handle cli and integration tests

    * remove unneeded returned err

    Co-authored-by: Jehan <[email protected]>

commit d6a3b1cf62a7d35d2db82b0e2c44fa383c12b802
Author: MSalopek <[email protected]>
Date:   Fri Sep 9 14:15:12 2022 +0200

    update buf googleapis dependency (#352)

    * update buf googleapis dependency

    Updated buf dependencies usin
    buf mod update --only buf.build/googleapis/googleapis

    Changed tidy to be compatible to 1.18 only

    Closes: #347

    * update proto-builder; third party staking module

commit ea292999b84d5d075199cbc0d59f9fb0de459e24
Author: Shawn Marshall-Spitzbart <[email protected]>
Date:   Thu Sep 8 11:44:13 2022 -0700

    Extend #350 (#355)

    readme and makefile

commit 5dd941386ff560a92619a2f3cb9ee377449eb603
Author: MSalopek <[email protected]>
Date:   Thu Sep 8 15:43:38 2022 +0200

    allow selecting test granularity using make (#350)

    * allow selecting test granularity using make

    Adds new commands to makefile:
    * make test-short (unit, e2e)
    * make test-diff (difference tests only)
    * make test-integration (integration tests only)
    * make test-no-cache (equivalent to make test with caching disabled)

    Closes: #345

    * Update README.md (remove static analysis)

    Co-authored-by: Daniel T <[email protected]>

commit bfd886d4201d0dd7247df378e9d6e3c68379348b
Author: Marius Poke <[email protected]>
Date:   Thu Jul 7 14:15:10 2022 +0200

    Add VSCMatured packets instead of acks (#188)

    * iterate over all consumer chains

    * add pending VSCs

    * replace UnbondingTime with PacketMaturityTime; add method to compute consumer unbonding time

    * store unbonding time on consumer chain

    * Update x/ccv/consumer/keeper/keeper.go

    * fix EndBlockCallback on provider; add test for pendingVSCs

    * fix GetConsumerClient for nonexisting chainID

    * fix client unbonding times in tests

    * wip

    * TestUndelegationDuringInit done

    * fix TestUnbondingNoConsumer

    * test multiple pending VSC packets

    * add VSCMaturedPacketData and remove packets from UnbondingSequence

    * add found return to GetPendingVSCs

    * apply changes from review

    * fix TestUndelegationDuringInit

    * fix TestUndelegationEdgeCase

    * fix TestTimelyUndelegation1 and rename to TestUndelegationConsumerFirst

    * fix TestTimelyUndelegation2 and rename to TestUndelegationProviderFirst

    * cleanup unbonding tests

    * fix KeeperTestSuite/TestOnRecvPacket

    * fix KeeperTestSuite/TestUnbondMaturePackets

    * fix TestPacketRoundtrip

    * fixing ibc ack handling - wip

    * handle ibc acks correctly

    * remove TODO

    * fix typo

    * Update x/ccv/consumer/keeper/relay.go

    Co-authored-by: Aditya <[email protected]>

    * add logging error on ErrorAcknowledgement

    * add logging error on ErrorAcknowledgement

    Co-authored-by: Aditya <[email protected]>

commit 744d4a7dbfc17f737d6097ebd7a3d589e982ae8d
Merge: 27ab2ba5 d91b4101
Author: Simon Noetzlin <[email protected]>
Date:   Fri Jun 24 14:19:06 2022 +0200

    Merge pull request #124 from cosmos/sainoe/remove-consumer-chain

    Remove consumer chain from provider

commit d91b4101043625b715e3ee0301f92fac6be3f2c9
Merge: eeb3c9dc 27ab2ba5
Author: Simon <[email protected]>
Date:   Fri Jun 24 14:15:15 2022 +0200

    merge main

commit 27ab2ba594ab1f12e7490be5e4d702cd25ccafd7
Merge: e552182b df4138df
Author: Simon Noetzlin <[email protected]>
Date:   Mon Jun 20 11:02:55 2022 +0200

    Merge pull request #150 from cosmos/sainoe/mvcc-hist-info

    Add Historical Info to consumer

commit eeb3c9dca7af122fa514ab68f19a0c2f199cbac2
Author: Simon <[email protected]>
Date:   Thu Jun 16 10:02:12 2022 +0200

    * Move LockUbdOnTimeout from consumer parameters to CreateConsumerChainProposal to follow the spec

    * Close provider channel's end only for a passing governance StopChainProposal

    * Move LockUbdOnTimeout and ClientInfo setters and getters to keeper

commit df4138dfc0d8f9ed18c35328f14c2d54830e888a
Author: Simon <[email protected]>
Date:   Tue Jun 14 11:05:08 2022 +0200

    Implement Historical Info to consumer chain to work with IBC

      * Add validator public key to consumer chain states

      * Implement historical info and call TrackHistoricalInfo in consumer BeginBlock

      * Hardcode HistoricalEntries to 1000 like the staking module DefaultHistoricalEntries parameter

commit c1e2c196db7d6937ea32c0ce7dc554235830fe13
Author: Simon Noetzlin <[email protected]>
Date:   Tue Jun 7 08:44:38 2022 +0200

    Update proto/interchain_security/ccv/provider/v1/provider.proto

    Co-authored-by: Marius Poke <[email protected]>

commit d8c5f4fd2807329d94a859254e823b22eab86b93
Author: Simon <[email protected]>
Date:   Fri Jun 3 11:42:57 2022 +0200

    fix nits

commit 1b168595b20b76986b17c8f1210b9a66b1a6e921
Author: Simon <[email protected]>
Date:   Thu Jun 2 17:37:31 2022 +0200

    * Add lock_unbonding_on_timeout to consumer chain parameter

    * Create a new provider chain proposal to stop a consumer chain

    * Implement unbonding ops iterator to release locked fund in case of timeout

    * Implement StopConsumerChain

    * Generalize ConsumerChainProposal route in provider/app.go

    * Add StopConsumerChain call to in proposal handler, OnTimeout and BeginBlock logic

    * Add shutdown consumer if channel was established then closed

commit e552182bf2c4531542be7c1ca9e68f2a7d02d28f
Author: frog power 4000 <[email protected]>
Date:   Mon May 30 11:19:09 2022 -0700

    ConsumerRedistributeFrac now hardcoded (#102)

    * ConsumerRedistributeFrac now hardcoded

    * Update x/ccv/consumer/keeper/distribution.go

    * fix test to use 75% redistribution fraction

    Co-authored-by: Marius Poke <[email protected]>

commit 1ef5da1d808ab0b942d92d5ac54b9373cfa5bfd9
Author: Marius Poke <[email protected]>
Date:   Mon May 30 20:10:59 2022 +0200

    Fix proto-gen (#116)

    * fix proto-gen

    * go mod tidy

commit bf808402157c306b506164395896ec7ef82ecf8c
Merge: 616905be 3f7332b1
Author: Simon Noetzlin <[email protected]>
Date:   Mon May 23 20:35:40 2022 +0200

    Merge pull request #97 from cosmos/sainoe/consumer-initiated-slashing

    Add double-sign slashing

commit 3f7332b1812faa685dd1f00173be171773f7bc61
Merge: 852e3e7c 616905be
Author: Simon <[email protected]>
Date:   Mon May 23 19:02:30 2022 +0200

    Merge branch 'main' into sainoe/consumer-initiated-slashing

commit 852e3e7c6d3bfa9d6a3fcf8fb577e8c0ff2d523f
Author: Simon <[email protected]>
Date:   Mon May 23 13:40:32 2022 +0200

    Squashed commit of the following:

        * Use InfractionType enum in PendingSlashRequest

        * Reformat TestHandleSlashPacketDistribution

        * Update Cosmos-SDK import in go.mod

        * Vefify slash packet commit values in tests

        * Update Slash function to return when infraction argument is unspecified

        * Allow to slash jailed and not-tombstoned validator

commit aaa0ce4658c0041cd8d53f381f9c30e833f81d93
Author: Marius Poke <[email protected]>
Date:   Fri May 20 16:34:06 2022 +0200

    Add proto-gen to Makefile (#92)

    * enable make proto-gen

    * add validator.proto and proto docs

    * remove proto docs

    * Update Makefile

    Co-authored-by: Marko <[email protected]>

    * Update Makefile

    Co-authored-by: Marko <[email protected]>

    * Update Makefile

    Co-authored-by: Marko <[email protected]>

    * remove abci path duplicate from makefile

    * make proto generation work with buf (#108)

    * make proto generation work with buf

    * remove vscode

    * revert title change

    * proto cleanup (#109)

    * minor cleanup

    * fix test to comply with json

    * fix enabled

    authored-by: Marko Baricevic <[email protected]>

    * go mod tidy -compat=1.17

    * go mod tidy -go=1.16 && go mod tidy -go=1.17

    Co-authored-by: Marko <[email protected]>

commit 616905beadecfe0ffe4739a4a443b92e1668081b
Author: Marius Poke <[email protected]>
Date:   Mon May 23 18:06:05 2022 +0200

    Remove CCV channel state (rebased) (#110)

    * remove CCV channel state from code

    * go mod tidy -go=1.16 && go mod tidy -go=1.17

commit 85fac9c6e0c809c14cf7f37bb8e2b0333801dbe0
Author: Marius Poke <[email protected]>
Date:   Fri May 20 16:34:06 2022 +0200

    Add proto-gen to Makefile (#92)

    * enable make proto-gen

    * add validator.proto and proto docs

    * remove proto docs

    * Update Makefile

    Co-authored-by: Marko <[email protected]>

    * Update Makefile

    Co-authored-by: Marko <[email protected]>

    * Update Makefile

    Co-authored-by: Marko <[email protected]>

    * remove abci path duplicate from makefile

    * make proto generation work with buf (#108)

    * make proto generation work with buf

    * remove vscode

    * revert title change

    * proto cleanup (#109)

    * minor cleanup

    * fix test to comply with json

    * fix enabled

    authored-by: Marko Baricevic <[email protected]>

    * go mod tidy -compat=1.17

    * go mod tidy -go=1.16 && go mod tidy -go=1.17

    Co-authored-by: Marko <[email protected]>

commit 1961abfc5d9839094639fc88934ad55a5dbf5660
Merge: 01a1b45e 247d4e9d
Author: Simon <[email protected]>
Date:   Thu May 12 10:26:51 2022 +0200

    Merge branch 'main' into cis-merge-main

commit 247d4e9dcacbe4d3e510051f580544b0d3f5b91f
Merge: dcda8d3b 2115750f
Author: Daniel T <[email protected]>
Date:   Tue May 10 17:50:51 2022 +0100

    Merge pull request #84 from cosmos/danwt/support-different-app.go

    Support different app.go's for consumer and provider

commit 01a1b45ec03813935b5f8ef1569e96c7e468b1ee
Author: Simon <[email protected]>
Date:   Tue May 10 10:48:47 2022 +0200

    Double-sign slashing

    Close #65

    * Update the CCV slashing logic to handle double-signing evidences.

    * Add `InfractionType` enum to the `SlashPacketData` fields

    * Use `InfractionType` enum to distinguish between downtime and double-signing infractions in the logic

    * Use the provider chain slash fraction and jail duration parameters

    * Change the evidence keeper instantiation in app.go to use the CCV module instead of the staking module

commit 2115750fbbf076d383bcc9f33065c0d0a2e5c621
Author: Daniel <[email protected]>
Date:   Fri May 6 09:48:40 2022 +0100

    Updates integration tests to use 2 app.go's

commit dcda8d3b90e2c2aec45af7b05e11ffbb3d03214c
Merge: ef119ede 67443cd3
Author: Simon Noetzlin <[email protected]>
Date:   Tue May 3 16:15:21 2022 +0100

    Merge pull request #75 from cosmos/frog/naming-update

    Naming Updates

commit 67443cd33b21d79427ac24c69abad0bc7c813810
Author: rigelrozanski <[email protected]>
Date:   Thu Apr 28 11:15:41 2022 -0700

    child/baby->consumer, parent->provider renames

commit ef119ede0299b347b29bbc835bb2640fe6b9e19c
Merge: bcad4ce1 8eaf5882
Author: Jehan <[email protected]>
Date:   Wed Apr 27 15:53:42 2022 -0700

    Merge pull request #32 from cosmos/frog/simple-distr

    Simple Distribution

commit 8eaf5882b8c69753f388400d3b27db3974d03ed9
Merge: d9dbf450 bcad4ce1
Author: Jehan Tremback <[email protected]>
Date:   Wed Apr 27 15:49:51 2022 -0700

    Merge branch 'main' into frog/simple-distr

commit bcad4ce125c702112ed46318c038ca54c63e9057
Merge: 3b2fc9ea 3623b3b3
Author: Simon Noetzlin <[email protected]>
Date:   Wed Apr 27 08:25:16 2022 +0100

    Merge pull request #56 from cosmos/sainoe/consumer-initiated-slashing

    Add Pending Slashing

commit 3b2fc9eaf6856e4c0137f95cb69e0e0f5a46525c
Merge: 97223237 2c30f5ab
Author: Jehan <[email protected]>
Date:   Tue Apr 26 15:54:03 2022 -0700

    Merge pull request #62 from cosmos/finish-staking-hooks-cherry-pick

    Finish staking hooks

commit 2c30f5ab116e27923a464627c8752a67e10f01be
Author: Jehan Tremback <[email protected]>
Date:   Tue Apr 26 15:53:47 2022 -0700

    removed unused field

commit d9dbf450c55d92fe53b7d1d0c26188c4fdf02b33
Author: rigelrozanski <[email protected]>
Date:   Tue Apr 26 11:06:03 2022 -0700

    distribution param comments

commit 9ed45afc1fd88f6c213f71b65cfe562a1e5a47f2
Author: Jehan Tremback <[email protected]>
Date:   Wed Apr 20 15:23:24 2022 -0700

    renaming cleanup and WIP parent tests

commit 3623b3b385deea17bcb56aa63cdd81c8802d919c
Author: Simon <[email protected]>
Date:   Wed Apr 20 17:13:27 2022 +0200

    Feat: add pending slash requests logic on consumer

    - Store slash packet data into pending slash requests when ccv channel isn't established

    - Send and clear pending slash requests once CCV channel is established

commit 68089656b7402054dd623db6b23fac18062c147c
Author: rigelrozanski <[email protected]>
Date:   Tue Apr 5 16:36:40 2022 -0700

    consumer redistribution split

commit 511daef17d75c78988404abfe8511236e7c57755
Author: rigelrozanski <[email protected]>
Date:   Tue Apr 5 12:07:51 2022 -0700

    rebase, debug cleanup

commit 841a2b247c31f542b6680fb3a87ce9ba630d13fb
Author: rigelrozanski <[email protected]>
Date:   Mon Mar 7 12:07:40 2022 -0800

    params update, breaks tests

commit 9ab56c67f115478fd97d3cd7caa71a9830367d87
Author: rigelrozanski <[email protected]>
Date:   Wed Mar 2 12:40:39 2022 -0800

    distr code compiling, existing tests pass, fix old ibc in proto

commit 7917cf7f8b71707f612932b1f5970d062bbd6422
Author: rigelrozanski <[email protected]>
Date:   Mon Jan 10 18:29:57 2022 -0800

    Simple Distribution

    dist docs

    working dist

    ccv dist diagram

    diagram cleanup

    diagram update

    dist diagram

    diagram updates, excess model

    simplified distribution

    simple distribution

    .

    aditya ibc notes

    distr token transfer ibc working

    working parent-addr handshake information pass

    working simple distribution

    distribution near compiling, blocked on ibc-go upgrades

    address WIP PR comments

    connHops update

    merge conflict resolve

commit 972232378fa5d5b07e03b2d24182562d3a0d0d43
Merge: 4174b794 3087ab79
Author: Simon Noetzlin <[email protected]>
Date:   Tue Apr 5 16:48:19 2022 +0200

    Merge pull request #52 from sainoe/sainoe/consumer-initiated-slashing

    Consumer downtime slashing

commit 3087ab79932ea833d228ada01baed1e17c39cf85
Author: Simon <[email protected]>
Date:   Fri Apr 1 13:04:10 2022 +0200

    remove white space child proto

commit 358fcf548b414fd9db2a07777aa3600ec8371dd5
Author: Simon <[email protected]>
Date:   Fri Apr 1 12:59:19 2022 +0200

    * remove pubkey from cross-chain validators type fields

    * update and test ApplyCCValidatorChanges

commit 6750e1ef9819080ef6bc2123b45beb4b7edb3bc7
Author: Simon Noetzlin <[email protected]>
Date:   Mon Mar 28 17:34:08 2022 +0200

    Fix typo in app.go

    Co-authored-by: Aditya <[email protected]>

commit a06ee0628f626425a7b6707f08d62a02c2bb0c3b
Author: Simon <[email protected]>
Date:   Fri Mar 25 18:18:35 2022 +0100

    - Fix validator address issue

    - Merge PR#48 changes

commit 4174b794570e5d6ac4e8a47b18b0dc212547b4ed
Merge: 770d5cdc 7c534426
Author: Jehan <[email protected]>
Date:   Mon Mar 14 15:14:37 2022 -0700

    Merge pull request #31 from cosmos/gov-cli-and-query

    Gov proposal cli and genesis state query

commit 7c5344267a4d99f6ec6b7571514ba8adf9949078
Merge: e9e00ec0 770d5cdc
Author: Jehan Tremback <[email protected]>
Date:   Mon Mar 14 15:13:19 2022 -0700

    Merge branch 'main' into gov-cli-and-query

commit 770d5cdcb9a15a0bb83aab09e99409b15e9119ed
Author: rigelrozanski <[email protected]>
Date:   Mon Feb 14 13:43:49 2022 -0800

    upgrade compile errors worked through

commit da1a1211f04316b8d66766f1b6067459ad063d99
Merge: d5c395d5 359b4ae6
Author: Jehan <[email protected]>
Date:   Wed Feb 2 14:08:53 2022 -0800

    Merge pull request #29 from cosmos/local-testnet

    Gonna merge this myself because it is very small and does not involve any logic

commit e9e00ec0a85b8ba8b63c57b24b6ff1f7803b65a7
Author: Jehan Tremback <[email protected]>
Date:   Tue Feb 1 16:46:33 2022 -0800

    genesis query finished but untested

commit 863edec34d5d6df783b5d4474944e8697d5ce617
Author: Jehan Tremback <[email protected]>
Date:   Fri Jan 14 11:30:22 2022 -0800

    add minimal makefile

commit d5c395d52c4824d03510836a16024f673f9a0a80
Merge: db485fac …
  • Loading branch information
11 people authored May 22, 2023
1 parent 0437dc7 commit 95e0a7f
Show file tree
Hide file tree
Showing 205 changed files with 3,285 additions and 7,448 deletions.
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.git/
Dockerfile
*.md
.gitignore
.gitattributes
scripts/
.vscode/
.github/
proto/
2 changes: 2 additions & 0 deletions .github/workflows/automated-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ on:
branches:
- main
- release/v*
- feat/*
pull_request:
branches:
- main
- release/v*
- feat/*
jobs:
Automated_Tests:
runs-on: ubuntu-latest
Expand Down
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# syntax=docker/dockerfile:1

FROM golang:1.19-alpine AS is-builder

FROM golang:1.20-alpine AS is-builder

ENV PACKAGES curl make git libc-dev bash gcc linux-headers
RUN apk add --no-cache $PACKAGES
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.gaia
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:1

# build latest tagged gaia
FROM golang:1.19-alpine AS gaia-builder
FROM golang:1.20-alpine AS gaia-builder
# WORKDIR is set to /go by default
ARG USE_GAIA_TAG
ENV GAIA_TAG=${USE_GAIA_TAG}
Expand Down Expand Up @@ -43,7 +43,7 @@ RUN go mod tidy
RUN go list -m github.com/cosmos/cosmos-sdk
RUN make build

FROM golang:1.19-alpine AS is-builder
FROM golang:1.20-alpine AS is-builder

ENV PACKAGES curl make git libc-dev bash gcc linux-headers
RUN apk add --no-cache $PACKAGES
Expand Down
77 changes: 7 additions & 70 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ install: go.sum
test:
go test ./... && go run ./tests/e2e/...

# run all unit tests
test-unit:
go test ./...

# run unit and integration tests
test-short:
go test ./x/... ./app/... ./tests/integration/...
Expand Down Expand Up @@ -101,7 +105,7 @@ $(BUILDDIR)/:
### Protobuf ###
###############################################################################

containerProtoVer=0.9.0
containerProtoVer=0.13.0
containerProtoImage=ghcr.io/cosmos/proto-builder:$(containerProtoVer)
containerProtoGen=cosmos-sdk-proto-gen-$(containerProtoVer)
containerProtoGenSwagger=cosmos-sdk-proto-gen-swagger-$(containerProtoVer)
Expand Down Expand Up @@ -130,76 +134,9 @@ proto-lint:
proto-check-breaking:
@$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main

TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.5/proto/tendermint
GOGO_PROTO_URL = https://raw.githubusercontent.com/regen-network/protobuf/cosmos
CONFIO_URL = https://raw.githubusercontent.com/confio/ics23/v0.7.1
COSMOS_PROTO_URL = https://raw.githubusercontent.com/regen-network/cosmos-proto/master
SDK_PROTO_URL = https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.45.13-ics/proto/cosmos

TM_CRYPTO_TYPES = third_party/proto/tendermint/crypto
TM_ABCI_TYPES = third_party/proto/tendermint/abci
TM_TYPES = third_party/proto/tendermint/types
TM_VERSION = third_party/proto/tendermint/version
TM_LIBS = third_party/proto/tendermint/libs/bits
TM_P2P = third_party/proto/tendermint/p2p

SDK_QUERY = third_party/proto/cosmos/base/query/v1beta1
SDK_BASE = third_party/proto/cosmos/base/v1beta1
SDK_UPGRADE = third_party/proto/cosmos/upgrade/v1beta1
SDK_STAKING = third_party/proto/cosmos/staking/v1beta1
SDK_EVIDENCE = third_party/proto/cosmos/evidence/v1beta1

GOGO_PROTO_TYPES = third_party/proto/gogoproto
CONFIO_TYPES = third_party/proto/confio
COSMOS_PROTO_TYPES = third_party/proto/cosmos_proto

proto-update-deps:
@mkdir -p $(COSMOS_PROTO_TYPES)
@curl -sSL $(COSMOS_PROTO_URL)/cosmos.proto > $(COSMOS_PROTO_TYPES)/cosmos.proto

@mkdir -p $(SDK_QUERY)
@curl -sSL $(SDK_PROTO_URL)/base/query/v1beta1/pagination.proto > $(SDK_QUERY)/pagination.proto

@mkdir -p $(SDK_BASE)
@curl -sSL $(SDK_PROTO_URL)/base/v1beta1/coin.proto > $(SDK_BASE)/coin.proto

@mkdir -p $(SDK_UPGRADE)
@curl -sSL $(SDK_PROTO_URL)/upgrade/v1beta1/upgrade.proto > $(SDK_UPGRADE)/upgrade.proto

@mkdir -p $(SDK_STAKING)
@curl -sSL $(SDK_PROTO_URL)/staking/v1beta1/staking.proto > $(SDK_STAKING)/staking.proto

@mkdir -p $(SDK_EVIDENCE)
@curl -sSL $(SDK_PROTO_URL)/evidence/v1beta1/evidence.proto > $(SDK_EVIDENCE)/evidence.proto

## Importing of tendermint protobuf definitions currently requires the
## use of `sed` in order to build properly with cosmos-sdk's proto file layout
## (which is the standard Buf.build FILE_LAYOUT)
## Issue link: https://github.com/tendermint/tendermint/issues/5021
@mkdir -p $(TM_TYPES)
@curl -sSL $(TM_URL)/types/types.proto > $(TM_TYPES)/types.proto
@curl -sSL $(TM_URL)/types/params.proto > $(TM_TYPES)/params.proto
@curl -sSL $(TM_URL)/types/validator.proto > $(TM_TYPES)/validator.proto

@mkdir -p $(TM_ABCI_TYPES)
@curl -sSL $(TM_URL)/abci/types.proto > $(TM_ABCI_TYPES)/types.proto

@mkdir -p $(TM_VERSION)
@curl -sSL $(TM_URL)/version/types.proto > $(TM_VERSION)/types.proto

@mkdir -p $(TM_LIBS)
@curl -sSL $(TM_URL)/libs/bits/types.proto > $(TM_LIBS)/types.proto

@mkdir -p $(TM_CRYPTO_TYPES)
@curl -sSL $(TM_URL)/crypto/proof.proto > $(TM_CRYPTO_TYPES)/proof.proto
@curl -sSL $(TM_URL)/crypto/keys.proto > $(TM_CRYPTO_TYPES)/keys.proto

@mkdir -p $(CONFIO_TYPES)
@curl -sSL $(CONFIO_URL)/proofs.proto > $(CONFIO_TYPES)/proofs.proto

## insert go package option into proofs.proto file
## Issue link: https://github.com/confio/ics23/issues/32
@perl -i -l -p -e 'print "option go_package = \"github.com/confio/ics23/go\";" if $$. == 4' $(CONFIO_TYPES)/proofs.proto
@echo "Updating Protobuf dependencies"
$(DOCKER) run --rm -v $(CURDIR)/proto:/workspace --workdir /workspace $(protoImageName) buf mod update

.PHONY: proto-all proto-gen proto-gen-any proto-swagger-gen proto-format proto-lint proto-check-breaking proto-update-deps mocks

Expand Down
40 changes: 33 additions & 7 deletions app/consumer-democracy/ante/forbidden_proposals_ante.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,51 @@ import (
"fmt"

sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"

govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)

type ForbiddenProposalsDecorator struct {
IsProposalWhitelisted func(govtypes.Content) bool
isLegacyProposalWhitelisted func(govv1beta1.Content) bool
isModuleWhiteList func(string) bool
}

func NewForbiddenProposalsDecorator(whiteListFn func(govtypes.Content) bool) ForbiddenProposalsDecorator {
return ForbiddenProposalsDecorator{IsProposalWhitelisted: whiteListFn}
func NewForbiddenProposalsDecorator(
whiteListFn func(govv1beta1.Content) bool,
isModuleWhiteList func(string) bool,
) ForbiddenProposalsDecorator {
return ForbiddenProposalsDecorator{
isLegacyProposalWhitelisted: whiteListFn,
isModuleWhiteList: isModuleWhiteList,
}
}

func (decorator ForbiddenProposalsDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
currHeight := ctx.BlockHeight()

for _, msg := range tx.GetMsgs() {
submitProposalMgs, ok := msg.(*govtypes.MsgSubmitProposal)
// if the message is MsgSubmitProposal, check if proposal is whitelisted
if ok {
if !decorator.IsProposalWhitelisted(submitProposalMgs.GetContent()) {
submitProposalMgs, ok := msg.(*govv1.MsgSubmitProposal)
if !ok {
continue
}

messages := submitProposalMgs.GetMessages()
for _, message := range messages {
if sdkMsg, isLegacyProposal := message.GetCachedValue().(*govv1.MsgExecLegacyContent); isLegacyProposal {
// legacy gov proposal content
content, err := govv1.LegacyContentFromMessage(sdkMsg)
if err != nil {
return ctx, fmt.Errorf("tx contains invalid LegacyContent")
}
if !decorator.isLegacyProposalWhitelisted(content) {
return ctx, fmt.Errorf("tx contains unsupported proposal message types at height %d", currHeight)
}
continue
}
// not legacy gov proposal content and not whitelisted
if !decorator.isModuleWhiteList(message.TypeUrl) {
return ctx, fmt.Errorf("tx contains unsupported proposal message types at height %d", currHeight)
}
}
Expand Down
124 changes: 112 additions & 12 deletions app/consumer-democracy/ante/forbidden_proposals_ante_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,114 @@ import (
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/cosmos/cosmos-sdk/x/params/types/proposal"
app "github.com/cosmos/interchain-security/app/consumer-democracy"
"github.com/cosmos/interchain-security/app/consumer-democracy/ante"
"github.com/stretchr/testify/require"

ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
)

// in SDKv47 parameter updates full params object is required
// either all params can be updated or none can be updated
func TestForbiddenProposalsDecorator(t *testing.T) {
txCfg := app.MakeTestEncodingConfig().TxConfig

// here we try to set whatever params exist to their default values
// the actual parameter setting is not important, what's being tested is the ante handle filter
// Note: mint params CAN be changed according to WhiteListModule in proposals_whitelisting.go
updateMintParams := &minttypes.MsgUpdateParams{
Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(),
Params: minttypes.DefaultParams(),
}

// Note: auth params CANNOT be changed according to WhiteListModule in proposals_whitelisting.go
updateAuthParams := &authtypes.MsgUpdateParams{
Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(),
Params: authtypes.DefaultParams(),
}

testCases := []struct {
name string
ctx sdk.Context
msgs []sdk.Msg
expectErr bool
}{
{
name: "Allowed param change",
name: "Allowed param change - mint module",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]sdk.Msg{updateMintParams}),
},
expectErr: false,
},
{
name: "Forbidden param change - auth module",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]sdk.Msg{updateAuthParams}),
},
expectErr: true,
},
{
name: "Allowed and forbidden param changes in the same msg",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]proposal.ParamChange{
newParamChangeProposalMsg([]sdk.Msg{updateMintParams, updateAuthParams}),
},
expectErr: true,
},
{
name: "Allowed and forbidden param changes in different msg",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]sdk.Msg{updateMintParams}),
newParamChangeProposalMsg([]sdk.Msg{updateAuthParams}),
},
expectErr: true,
},
}

for _, tc := range testCases {
tc := tc

t.Run(tc.name, func(t *testing.T) {
handler := ante.NewForbiddenProposalsDecorator(app.IsProposalWhitelisted, app.IsModuleWhiteList)

txBuilder := txCfg.NewTxBuilder()
require.NoError(t, txBuilder.SetMsgs(tc.msgs...))

_, err := handler.AnteHandle(tc.ctx, txBuilder.GetTx(), false,
func(ctx sdk.Context, _ sdk.Tx, _ bool) (sdk.Context, error) { return ctx, nil })
if tc.expectErr {
require.Error(t, err)
} else {
require.NoError(t, err)
}
})
}
}

// Only ibctransfertypes.SendEnabled/ReceiveEnabled support legacy proposals for changing params
// Note: see LegacyWhitelistedParams in proposals_whitelisting.go
func TestForbiddenLegacyProposalsDecorator(t *testing.T) {
txCfg := app.MakeTestEncodingConfig().TxConfig

testCases := []struct {
name string
ctx sdk.Context
msgs []sdk.Msg
expectErr bool
}{
{
name: "Allowed legacy param change -- only for ibctransfertypes.SendEnabled/ReceiveEnabled",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newLegacyParamChangeProposalMsg([]proposal.ParamChange{
// only subspace and key are relevant for testing
{Subspace: banktypes.ModuleName, Key: "SendEnabled", Value: ""},
{Subspace: ibctransfertypes.ModuleName, Key: "SendEnabled", Value: "true"},
}),
},
expectErr: false,
Expand All @@ -37,7 +123,7 @@ func TestForbiddenProposalsDecorator(t *testing.T) {
name: "Forbidden param change",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]proposal.ParamChange{
newLegacyParamChangeProposalMsg([]proposal.ParamChange{
{Subspace: authtypes.ModuleName, Key: "MaxMemoCharacters", Value: ""},
}),
},
Expand All @@ -47,8 +133,10 @@ func TestForbiddenProposalsDecorator(t *testing.T) {
name: "Allowed and forbidden param changes in the same msg",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]proposal.ParamChange{
{Subspace: banktypes.ModuleName, Key: "SendEnabled", Value: ""},
newLegacyParamChangeProposalMsg([]proposal.ParamChange{
// allowed
{Subspace: ibctransfertypes.ModuleName, Key: "SendEnabled", Value: "true"},
// disallowed
{Subspace: authtypes.ModuleName, Key: "MaxMemoCharacters", Value: ""},
}),
},
Expand All @@ -58,11 +146,13 @@ func TestForbiddenProposalsDecorator(t *testing.T) {
name: "Allowed and forbidden param changes in different msg",
ctx: sdk.Context{},
msgs: []sdk.Msg{
newParamChangeProposalMsg([]proposal.ParamChange{
newLegacyParamChangeProposalMsg([]proposal.ParamChange{
// disallowed
{Subspace: banktypes.ModuleName, Key: "SendEnabled", Value: ""},
}),
newParamChangeProposalMsg([]proposal.ParamChange{
{Subspace: authtypes.ModuleName, Key: "MaxMemoCharacters", Value: ""},
newLegacyParamChangeProposalMsg([]proposal.ParamChange{
// allowed
{Subspace: ibctransfertypes.ModuleName, Key: "SendEnabled", Value: "true"},
}),
},
expectErr: true,
Expand All @@ -73,7 +163,7 @@ func TestForbiddenProposalsDecorator(t *testing.T) {
tc := tc

t.Run(tc.name, func(t *testing.T) {
handler := ante.NewForbiddenProposalsDecorator(app.IsProposalWhitelisted)
handler := ante.NewForbiddenProposalsDecorator(app.IsProposalWhitelisted, app.IsModuleWhiteList)

txBuilder := txCfg.NewTxBuilder()
require.NoError(t, txBuilder.SetMsgs(tc.msgs...))
Expand All @@ -89,8 +179,18 @@ func TestForbiddenProposalsDecorator(t *testing.T) {
}
}

func newParamChangeProposalMsg(changes []proposal.ParamChange) *govtypes.MsgSubmitProposal {
// Use ParamChangeProposal
func newLegacyParamChangeProposalMsg(changes []proposal.ParamChange) *govv1.MsgSubmitProposal {
paramChange := proposal.ParameterChangeProposal{Changes: changes}
msg, _ := govtypes.NewMsgSubmitProposal(&paramChange, sdk.NewCoins(), sdk.AccAddress{})
msgContent, err := govv1.NewLegacyContent(&paramChange, authtypes.NewModuleAddress(govtypes.ModuleName).String())
if err != nil {
return nil
}
msg, _ := govv1.NewMsgSubmitProposal([]sdk.Msg{msgContent}, sdk.NewCoins(), sdk.AccAddress{}.String(), "", "", "")
return msg
}

func newParamChangeProposalMsg(msgs []sdk.Msg) *govv1.MsgSubmitProposal {
msg, _ := govv1.NewMsgSubmitProposal(msgs, sdk.NewCoins(), sdk.AccAddress{}.String(), "", "", "")
return msg
}
Loading

0 comments on commit 95e0a7f

Please sign in to comment.