Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Migrations for quicksilver issue #1976

Merged

Conversation

stana-miric
Copy link
Contributor

Migrations for stuck funds on quicksilver are added. These changes contain:

  1. Sending funds from address where the funds are stuck to the refund address
  2. Closing channels related to the incompletely registered quicksilver ica accounts

@glnro @jtremback This PR should be merged before this PR is merged into v.8.0.x release

mergify bot and others added 3 commits November 2, 2022 18:53
* prepare v8 release (cosmos#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>
(cherry picked from commit f0397fd)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Copy link

@crodriguezvega crodriguezvega left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! 👍 I left a few comments for now.

keepers.BankKeeper.SendCoins(ctx, sourceAddress, destinationAddress, sdk.NewCoins(refundBalance))

// Get connection to quicksilver chain
connectionId, err := getConnectionIdForChainId(ctx, keepers, "quicksilver-1")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of looping through all connections, would it be possible to just use directly the connection ID that we're interested in? Is it connection-707?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is connection-707.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We, can use the hard-coded connection id. I'll change it to that one.

closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.deposit")
closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.withdrawal")
closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.performance")
closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.delegate")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe similar comment as with the connection ID. If we know for sure that the channels that we want to close have channel IDs channel-462, channel-463, channel-464 and channel-465 then we could use those IDs directly instead. I see that all those channels are in connection connection-707, are OPEN and have the counterparty port IDs mentioned here (there's also a channel-466 with counterparty port ID icacontroller-cosmoshub-4.delegate in state TRYOPEN, but I think that would not be picked up by the call to GetActiveChannelID).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'll change the code to use the specific channel IDs, instead of retrieving the channel with GetActiveChannelID

func closeChannel(keepers *keepers.AppKeepers, ctx sdk.Context, connectionId string, port string) {
activeChannelId, found := keepers.ICAHostKeeper.GetActiveChannelID(ctx, connectionId, port)
if found {
channel, found := keepers.IBCKeeper.ChannelKeeper.GetChannel(ctx, icatypes.PortID, activeChannelId)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe an extra check you could add here is to make sure that the channel is indeed in state OPEN.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What happens here with icacontroller-cosmoshub-4.delegate - it is currently in TRYOPEN. Presumably it won't be CLOSED by this. Do we need it to be to be able to reopen @crodriguezvega ?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh - we have both 465 and 466 that are both icacontroller-cosmoshub-4.delegate. I guess this is okay?

Copy link

@crodriguezvega crodriguezvega Jan 2, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think it is fine the way it is because channel-465 is OPEN state and channel-466 is in TRYOPEN state, but 465 is the one that got stored as active channel in state because that's the channel that completed the handshake (storing the active channel happens in the OnChanOpenConfirm callback). Related to the comment above, maybe we could use the specific channel IDs that we want to close, to be extra sure.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we also close channel-466?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @damiannolan, if you or someone in ibc team can do a final review of this ? We plan to include it in the next release if possible, this week.

Thank you so much !

closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.deposit")
closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.withdrawal")
closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.performance")
closeChannel(keepers, ctx, connectionId, "icacontroller-cosmoshub-4.delegate")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another question: why do the channels with counterparty port IDs icacontroller-cosmoshub-4.deposit, icacontroller-cosmoshub-4.withdrawal and icacontroller-cosmoshub-4.performance also need to be closed if their ICA acccounts on the Hub were not affected?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We want to return to a state where Quicksilver can re-register the zone from scratch (i.e. channels closed on both ends) so return to the desired state.

@mpoke mpoke self-requested a review January 4, 2023 17:54
Copy link
Contributor

@mpoke mpoke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @stana-ethernal

@damiannolan
Copy link

Hey, been trying to catch up on the context of the migrations needed here. Thanks for handling this @stana-ethernal, nice work so far!

Is the idea that quicksilver will reopen the interchain accounts channels with the same port IDs?
i.e. the following:

icacontroller-cosmoshub-4.deposit
icacontroller-cosmoshub-4.withdrawal
icacontroller-cosmoshub-4.performance
icacontroller-cosmoshub-4.delegate

Closing the channels is fine, and it will be possible to reopen new ones using the port IDs above. However, I believe that during the handshake the host chain (cosmoshub-4) will still have an interchain account mapping set in the ICA keeper state for the (controller port / host connection) key. Thus, when attempting to reopen new channels you will simply have the same address as used previously. I imagine the desired outcome is to generate a new unique address with ibc-go v3.4.0.

This will occur on OnChanOpenTry here. In its current form found will be true, resulting in the same address. I think the desired behaviour is to have found return false such that a new unique address is created in createInterchainAccount. To accomplish this I think the migrations should delete the interchain account mapping in the ICA host keeper.

For example:

store := ctx.KVStore(k.storeKey) // store key is icahosttypes.StoreKey
store.Delete(icatypes.KeyOwnerAccount(portID, connectionID))

cc. @AdityaSripal

@stana-miric
Copy link
Contributor Author

Hey, been trying to catch up on the context of the migrations needed here. Thanks for handling this @stana-ethernal, nice work so far!

Is the idea that quicksilver will reopen the interchain accounts channels with the same port IDs? i.e. the following:

icacontroller-cosmoshub-4.deposit
icacontroller-cosmoshub-4.withdrawal
icacontroller-cosmoshub-4.performance
icacontroller-cosmoshub-4.delegate

Closing the channels is fine, and it will be possible to reopen new ones using the port IDs above. However, I believe that during the handshake the host chain (cosmoshub-4) will still have an interchain account mapping set in the ICA keeper state for the (controller port / host connection) key. Thus, when attempting to reopen new channels you will simply have the same address as used previously. I imagine the desired outcome is to generate a new unique address with ibc-go v3.4.0.

This will occur on OnChanOpenTry here. In its current form found will be true, resulting in the same address. I think the desired behaviour is to have found return false such that a new unique address is created in createInterchainAccount. To accomplish this I think the migrations should delete the interchain account mapping in the ICA host keeper.

For example:

store := ctx.KVStore(k.storeKey) // store key is icahosttypes.StoreKey
store.Delete(icatypes.KeyOwnerAccount(portID, connectionID))

cc. @AdityaSripal

@damiannolan yes that's right, the ica addresses which are previously successfully registered will remain the same. We've noticed that during testing and I've mentioned this in the slack group related to this problem but we are not sure if those predictable addresses can cause some security risks now when they are already registered. If that is the case, we should add deletion of those addresses to the migration script as mentioned above.

@damiannolan
Copy link

damiannolan commented Jan 5, 2023

@damiannolan yes that's right, the ica addresses which are previously successfully registered will remain the same. We've noticed that during testing and I've mentioned this in the slack group related to this problem but we are not sure if those predictable addresses can cause some security risks now when they are already registered. If that is the case, we should add deletion of those addresses to the migration script as mentioned above.

Okay, I believe the already generated addresses are fine.

To clear up my previous point re. the store deletion for (controller port / host conn) -> ica address. Thanks for the responses on slack which cleared this up. The v3.0.0 code no-ops here in the event that the account exists and as a result the state entry isn't made in the ICA keeper below on line 26.

When the handshake takes place post-migrations with v3.4.0 the code which I previously pointed to here will follow the execution path to create a new unique account address.

Copy link

@damiannolan damiannolan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @stana-ethernal!

I just left some minor nits, but nothing major. Feel free to ignore if codeowners here are happy to proceed.

}

// Get balance from stuck address and subtract 1 uatom sent by bad actor
sourceBalance := keepers.BankKeeper.GetBalance(ctx, sourceAddress, "uatom")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a constant for "uatom" that could be used?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not outside of testing...we should consider abstracting all instances out in a future refactor.

Comment on lines +74 to +78
closeChannel(keepers, ctx, "channel-462")
closeChannel(keepers, ctx, "channel-463")
closeChannel(keepers, ctx, "channel-464")
closeChannel(keepers, ctx, "channel-465")
closeChannel(keepers, ctx, "channel-466")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess you could define the channels in a static array and loop here... but not required.

@@ -69,6 +108,11 @@ func CreateUpgradeHandler(
return vm, err
}

err = QuicksilverFix(ctx, keepers)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be in its a separate (new) upgrade handler or is it that this PR is targeted towards a particular branch, and this upgrade handler hasn't actually been exec'd yet?

@glnro glnro changed the base branch from glnro/update-v8-release to main January 5, 2023 17:16

// Get balance from stuck address and subtract 1 uatom sent by bad actor
sourceBalance := keepers.BankKeeper.GetBalance(ctx, sourceAddress, "uatom")
refundBalance := sourceBalance.SubAmount(sdk.NewInt(1))
Copy link
Contributor

@glnro glnro Jan 5, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the TestFixBankMetadata upgrade test, there's no error handling for subtracting a zero sourceBalance.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#1985 addresses the failing test...we can write a separate test for the whole upgrade.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is because the source account does not exist in our test genesis, and also no balance

@glnro glnro mentioned this pull request Jan 5, 2023
@sonarqubecloud
Copy link

sonarqubecloud bot commented Jan 6, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

@codecov
Copy link

codecov bot commented Jan 6, 2023

Codecov Report

Merging #1976 (3d5df32) into main (0e77d69) will decrease coverage by 0.77%.
The diff coverage is 44.11%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1976      +/-   ##
==========================================
- Coverage   79.93%   79.16%   -0.78%     
==========================================
  Files          23       23              
  Lines        1540     1574      +34     
==========================================
+ Hits         1231     1246      +15     
- Misses        260      274      +14     
- Partials       49       54       +5     

err = keepers.BankKeeper.SendCoins(ctx, sourceAddress, destinationAddress, sdk.NewCoins(refundBalance))
if err != nil {
return errors.New("unable to refund coins")
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@stana-ethernal , since we might skip sendCoins if source does not have balance. maybe we can log here that the fund is sent back , so that we can make sure in mainnet and theta-testnet, we have this step executed

@yaruwangway yaruwangway merged commit 18b4a08 into cosmos:main Jan 6, 2023
glnro added a commit that referenced this pull request Jan 6, 2023
* feat: Add command bech32-convert (#1845)

* add bech32-convert command to gaiad

* add changelog notice

* add review fixes

* add tests for ConvertBech32Prefix

Co-authored-by: Petr Ivanov <petr.ivanov@tendermint.com>
Co-authored-by: Danilo Pantani <danpantani@gmail.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* fix feegrant test accounts (#1861)

* Updated and new links (#1862)

* Updated and added links

Current Telegram links directs to a chat that no longer exists, replaced it with the main Cosmos Telegram group. Also added link to Mintscan's list of on-chain proposals

* Updated Telegram link: t.me/atomgov

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* chore: bump sdk to v0.46.4 (#1863)

* chore: bump sdk

* rename flag

* prepare v8 release (#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>

* Add backport for v8 & future v9/v10 (#1865)

* Revert "prepare v8 release (#1860)" (#1866)

This reverts commit f0397fd.

* chore: changelog (#1868)

* fix: print in app.go (#1878)

* fix: print in app.go

* fix: change print err to panic in init

* refactor: simplify the logic in fee antehandler (#1877)

* refactor: simplify the logic in fee antehandler

* fix: test

* test: add test for disable checkTx

* fix: err check (#1880)

* fix: change log.Fatal to panic, defer iter.Close()

* update export.go

* fix: lint

* chore(deps): bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#1885)

Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/spf13/viper/releases)
- [Commits](spf13/viper@v1.13.0...v1.14.0)

---
updated-dependencies:
- dependency-name: github.com/spf13/viper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* test: export genesis (#1871)

* Add export test

* Add unit test for app export

* Refactor gaia helpers setup

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* fix(chore): fix gosec issues (#1881)

* gosec improvements

* fix gosec issues

* defer to close iterator

* add gas adjustment

* Merge PR #1893: Delete CODE_OF_CONDUCT.md

* test: Unit tests for global fee module (#1858)

* test: add test for globalfee validateMinimumGasPrices

* test: add test for querier

* fix: panic in test

* update test

* update test

* use original test

* Update x/globalfee/types/params_test.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* icamauth docs (#1813)

* docs: add icamauth docs

* docs: change uatom to stake

* chore: update docs

* docs: update icamuath.md according to review comments

* docs: rename icamauth.md to README.md

* docs: read mnemonic from file

* docs: add hermes download instruction

* update docs

* globalfee/README.md -> globalfee.md

* Update docs/modules/icamauth/hermes_setup.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* docs: fix dead link

* Update README.md

* Update README.md

* fixes

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* docs: correct `NoWithVeto` condition description (#1900)

According to (docs)[https://docs.cosmos.network/main/modules/gov#threshold] and [code](https://github.com/cosmos/cosmos-sdk/blob/bcff22a3767b9c5dd7d1d562aece90cf72e05e85/x/gov/keeper/tally.go#L115), it includes `abstain` when calculating the threshold of `NoWithVeto`.

* fix(CI): fix code coverage (#1903)

* fix the code test coverage measure

* fix folder type removal

* docs: update icamauth (#1905)

* docs: update icamauth

* docs: restructure icamauth docs

* docs: update links

* docs: fix dead links

* chore: update docs (#1906)

* feat(CI): skip run the go CI test for markdown/docs files (#1907)

* skip run the test CI for markdown files

* remove skip from the codeql ci

* only ignore md files for codeql

* feat(x/ica): add tests for icamauth module (#1897)

* add unit tests methods

* add tests for the types folder

* remove query test

* add test description

* refactor: e2e test (#1840)

* refactor: ica e2e test

* refactor: globalfee e2e test

* refactor: add execBankSendBatch

* refactor: add const proposalGlobalFee

* refactor: execBankSendBatch

* Update tests/e2e/e2e_exec_test.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* test: refactor execBankSendBatch

* fix: failure test

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update ibc-go v5.1.0 (#1898)

* Strangelove/forward middleware atomic (#1911)

* Update forward middleware to use packet memo field, async acks

* fixed e2e

Co-authored-by: Andrew Gouin <andrew@gouin.io>

* fix bank migration in upgrade handler (#1892)

* fix bank migtation in upgrade handler

* try atomated upgrade test

* fix build

* change so runs on yml change too

* change so runs on yml change too

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* passing upgrade test

* Update app/upgrades/v8/upgrades.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* add unit test

* Update app/upgrades/v8/upgrades_test.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* added check for deformed being removed

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* chore: simplify logic of getting allFees (#1917)

* Updated codeowners, removed pantani, cmwaters & noomski

* Makefile: add govulnchecker (#1927)

Adds the Go vulnerability checker to the Makefile as a directive
dependency to the all directive.

Updates #1879

* spike to test feasibility of downgrade to v0.45 (#1902)

* pause

* no vscode errors

* rewrite go.sum, go.work.sum and fix amino import

* remove mauth docs

* gofumpt

* fix find

* cant get docker to build locally

* debug ibc test

* fix ibc test

* passing e2e

* clean up commented out tests

* remove more mauth

* forgot to save

* add back middleware test

* fix upgrade

* fix test setup

* add TODO note

* remove multihop test

* Update docs/modules/gov.md

* Update tests/e2e/query.go

Co-authored-by: lg <8335464+glnro@users.noreply.github.com>

* remove groups and gov docs

* laurens comment re moduleAccountAddress

* remove commented code that should not be added back

Co-authored-by: lg <8335464+glnro@users.noreply.github.com>

* feat: proto dependencies for downgrade to 0.45 (#1933)

* feat: add third_party proto

* feat: add script for generating go files from proto, and swagger

* feat: add protoc-doc-gen.sh

* fix: antehandler to fit sdk v0.45 (#1918)

* pause

* no vscode errors

* rewrite go.sum, go.work.sum and fix amino import

* remove mauth docs

* gofumpt

* fix find

* cant get docker to build locally

* debug ibc test

* fix ibc test

* passing e2e

* clean up commented out tests

* remove more mauth

* forgot to save

* add back middleware test

* fix upgrade

* fix test setup

* add TODO note

* remove multihop test

* fix: antehandler in sdkv0.45

* test: add back globalfee e2e test

* fix: failure of verifying sending token amount

* chore: remove comments

* feat: simplify fee logic

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* test re-org (#1913)

* pause

* no vscode errors

* rewrite go.sum, go.work.sum and fix amino import

* remove mauth docs

* gofumpt

* fix find

* cant get docker to build locally

* debug ibc test

* fix ibc test

* passing e2e

* clean up commented out tests

* remove more mauth

* forgot to save

* add back middleware test

* fix upgrade

* fix test setup

* add TODO note

* remove multihop test

* re-organized tests to make it easier to skip when working on a single one

* remove gov tests

* removed multihop tests

* markdownlint (#1936)

* fix: feegrant e2e test (#1940)

* docs: update state sync (#1946)

* Updated roadmap (#1947)

* bump versions, remove e2e go.mod (#1944)

* bump versions, remove e2e go.mod

* stupid gofumpt errors

* fixed packet forward configuration (#1941)

* exclude e2e tests from test coverage upload (#1953)

* exclude e2e tests from test coverage upload

* swap order of test to exclude e2e

* remove e2e from find

* updated gov docs as specified in issue #1948 (#1949)

* updated gov docs as specified in issue #1948

* fixed links

* missed a few links

* fix links (#1954)

* test: Refactor gov e2e for v0.45 Rho (#1951)

* WIP

* Refactor gov tests for v45

* Refactor gov and add community spend test

* Refactor

* Set explicit sdk & tm versions for all dependencies

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* Skip broken redirect link check

* Restrict disable link to single link

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* add back TestGaiaApp_Export  (#1955)

* pause

* unit pasing, check e2e

* Update test_helpers.go

* fix: put iterator in closure (#1934)

Co-authored-by: Milan Mulji <98309852+mmulji-ic@users.noreply.github.com>

* uncomment still existing test (#1956)

* uncomment still existing test

* forgot to include this file

* pause

* remove again

* add back rest of tests

* push e2e image and use released versions in docker push action (#1939)

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* lint tests, too (#1960)

* feat: Change MaxBypassMinFeeMsgGasUsage via NewFeeDecorator (#1961)

* change MaxBypassMinFeeMsgGasUsage easily

* move test to newTestGasLimit

* chore: remove unneeded replace tags (#1959)

* remove unneeded replace tags

* remove ibc dep

* Update go.mod

Co-authored-by: Marko Baricevic <markobaricevic3778@gmail.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* chore(docs): add code guidelines (#1819)

* code guidelines

* add resources

* Update docs/code-guidelines.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* git guidelines

* small fixes and final steps

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* Update ko genesis.md (#1964)

* offboarding (#1969)

* chore(deps): bump actions/cache from 3.0.10 to 3.2.0 (#1968)

Bumps [actions/cache](https://github.com/actions/cache) from 3.0.10 to 3.2.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v3.0.10...v3.2.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs: fix global fee link (#1978)

* chore(deps): bump github.com/gravity-devs/liquidity from 1.5.1 to 1.5.3 (#1981)

Bumps [github.com/gravity-devs/liquidity](https://github.com/gravity-devs/liquidity) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/gravity-devs/liquidity/releases)
- [Changelog](https://github.com/Gravity-Devs/liquidity/blob/master/CHANGELOG.md)
- [Commits](Gravity-Devs/liquidity@v1.5.1...v1.5.3)

---
updated-dependencies:
- dependency-name: github.com/gravity-devs/liquidity
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix: minor typos (#1984)

Fix: minor typos

* Migrations for quicksilver issue (#1976)

* prepare v8 release (backport #1860) (#1867)

* prepare v8 release (#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>
(cherry picked from commit f0397fd)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* Added migrations for quicksilver stuck fund fix

* Migrations for quicksilver

* Check if balance of the refund addess is positive

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Co-authored-by: lg <lauren@interchain.io>

* test: remove unused const (#1988)

* test: remove unused const

* fix: lint

* Changelog for V8 (#1982)

* Update changelog for v8

* Update changelog for v8

* Update changelog

* Make requested changes

* Update date

* Point to informal's fork of tendermint (#1990)

* fix: remove ica controller params setup from upgrade handler (#1989)

Signed-off-by: Yaru Wang <yaru@interchain.io>

* Update codeowners (#1993)

* preparing for v8.0.0-rc1 release (#1994)

* prepare v8 release (backport #1860) (#1867)

* prepare v8 release (#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>
(cherry picked from commit f0397fd)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* docs: update changelog

Signed-off-by: Yaru Wang <yaru@interchain.io>

* docs: update docs

Signed-off-by: Yaru Wang <yaru@interchain.io>

Signed-off-by: Yaru Wang <yaru@interchain.io>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* docs: changelog for v8.0.0-rc1 (#1997)

Signed-off-by: Yaru Wang <yaru@interchain.io>

Signed-off-by: Yaru Wang <yaru@interchain.io>

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Yaru Wang <yaru@interchain.io>
Co-authored-by: Petr Ivanov <krest2005@yandex.ru>
Co-authored-by: Petr Ivanov <petr.ivanov@tendermint.com>
Co-authored-by: Danilo Pantani <danpantani@gmail.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Co-authored-by: ZorroZ77 <94570964+ZorroZ77@users.noreply.github.com>
Co-authored-by: Yaru Wang <yaru@interchain.io>
Co-authored-by: yaruwangway <69694322+yaruwangway@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jacob Gadikian <jacobgadikian@gmail.com>
Co-authored-by: Yongwoo Lee <whylee259@gmail.com>
Co-authored-by: Giancarlos Salas <giansalex@gmail.com>
Co-authored-by: Andrew Gouin <andrew@gouin.io>
Co-authored-by: Milan Mulji <98309852+mmulji-ic@users.noreply.github.com>
Co-authored-by: Emmanuel T Odeke <emmanuel@orijtech.com>
Co-authored-by: Lexa Michaelides <32111123+LexaMichaelides@users.noreply.github.com>
Co-authored-by: Reece Williams <31943163+Reecepbcups@users.noreply.github.com>
Co-authored-by: Marko <marbar3778@yahoo.com>
Co-authored-by: Marko Baricevic <markobaricevic3778@gmail.com>
Co-authored-by: GwangIl-Park <40749130+GwangIl-Park@users.noreply.github.com>
Co-authored-by: omahs <73983677+omahs@users.noreply.github.com>
Co-authored-by: stana-ethernal <94966829+stana-ethernal@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
glnro added a commit that referenced this pull request Jan 16, 2023
* feat: Add command bech32-convert (#1845)

* add bech32-convert command to gaiad

* add changelog notice

* add review fixes

* add tests for ConvertBech32Prefix

Co-authored-by: Petr Ivanov <petr.ivanov@tendermint.com>
Co-authored-by: Danilo Pantani <danpantani@gmail.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* fix feegrant test accounts (#1861)

* Updated and new links (#1862)

* Updated and added links

Current Telegram links directs to a chat that no longer exists, replaced it with the main Cosmos Telegram group. Also added link to Mintscan's list of on-chain proposals

* Updated Telegram link: t.me/atomgov

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* chore: bump sdk to v0.46.4 (#1863)

* chore: bump sdk

* rename flag

* prepare v8 release (#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>

* Add backport for v8 & future v9/v10 (#1865)

* Revert "prepare v8 release (#1860)" (#1866)

This reverts commit f0397fd.

* chore: changelog (#1868)

* fix: print in app.go (#1878)

* fix: print in app.go

* fix: change print err to panic in init

* refactor: simplify the logic in fee antehandler (#1877)

* refactor: simplify the logic in fee antehandler

* fix: test

* test: add test for disable checkTx

* fix: err check (#1880)

* fix: change log.Fatal to panic, defer iter.Close()

* update export.go

* fix: lint

* chore(deps): bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#1885)

Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.13.0 to 1.14.0.
- [Release notes](https://github.com/spf13/viper/releases)
- [Commits](spf13/viper@v1.13.0...v1.14.0)

---
updated-dependencies:
- dependency-name: github.com/spf13/viper
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* test: export genesis (#1871)

* Add export test

* Add unit test for app export

* Refactor gaia helpers setup

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* fix(chore): fix gosec issues (#1881)

* gosec improvements

* fix gosec issues

* defer to close iterator

* add gas adjustment

* Merge PR #1893: Delete CODE_OF_CONDUCT.md

* test: Unit tests for global fee module (#1858)

* test: add test for globalfee validateMinimumGasPrices

* test: add test for querier

* fix: panic in test

* update test

* update test

* use original test

* Update x/globalfee/types/params_test.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* icamauth docs (#1813)

* docs: add icamauth docs

* docs: change uatom to stake

* chore: update docs

* docs: update icamuath.md according to review comments

* docs: rename icamauth.md to README.md

* docs: read mnemonic from file

* docs: add hermes download instruction

* update docs

* globalfee/README.md -> globalfee.md

* Update docs/modules/icamauth/hermes_setup.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* docs: fix dead link

* Update README.md

* Update README.md

* fixes

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* docs: correct `NoWithVeto` condition description (#1900)

According to (docs)[https://docs.cosmos.network/main/modules/gov#threshold] and [code](https://github.com/cosmos/cosmos-sdk/blob/bcff22a3767b9c5dd7d1d562aece90cf72e05e85/x/gov/keeper/tally.go#L115), it includes `abstain` when calculating the threshold of `NoWithVeto`.

* fix(CI): fix code coverage (#1903)

* fix the code test coverage measure

* fix folder type removal

* docs: update icamauth (#1905)

* docs: update icamauth

* docs: restructure icamauth docs

* docs: update links

* docs: fix dead links

* chore: update docs (#1906)

* feat(CI): skip run the go CI test for markdown/docs files (#1907)

* skip run the test CI for markdown files

* remove skip from the codeql ci

* only ignore md files for codeql

* feat(x/ica): add tests for icamauth module (#1897)

* add unit tests methods

* add tests for the types folder

* remove query test

* add test description

* refactor: e2e test (#1840)

* refactor: ica e2e test

* refactor: globalfee e2e test

* refactor: add execBankSendBatch

* refactor: add const proposalGlobalFee

* refactor: execBankSendBatch

* Update tests/e2e/e2e_exec_test.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* test: refactor execBankSendBatch

* fix: failure test

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update ibc-go v5.1.0 (#1898)

* Strangelove/forward middleware atomic (#1911)

* Update forward middleware to use packet memo field, async acks

* fixed e2e

Co-authored-by: Andrew Gouin <andrew@gouin.io>

* fix bank migration in upgrade handler (#1892)

* fix bank migtation in upgrade handler

* try atomated upgrade test

* fix build

* change so runs on yml change too

* change so runs on yml change too

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* change again

* passing upgrade test

* Update app/upgrades/v8/upgrades.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* Update contrib/scripts/run-gaia-v7.sh

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* add unit test

* Update app/upgrades/v8/upgrades_test.go

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* added check for deformed being removed

Co-authored-by: Danilo Pantani <danpantani@gmail.com>

* chore: simplify logic of getting allFees (#1917)

* Updated codeowners, removed pantani, cmwaters & noomski

* Makefile: add govulnchecker (#1927)

Adds the Go vulnerability checker to the Makefile as a directive
dependency to the all directive.

Updates #1879

* spike to test feasibility of downgrade to v0.45 (#1902)

* pause

* no vscode errors

* rewrite go.sum, go.work.sum and fix amino import

* remove mauth docs

* gofumpt

* fix find

* cant get docker to build locally

* debug ibc test

* fix ibc test

* passing e2e

* clean up commented out tests

* remove more mauth

* forgot to save

* add back middleware test

* fix upgrade

* fix test setup

* add TODO note

* remove multihop test

* Update docs/modules/gov.md

* Update tests/e2e/query.go

Co-authored-by: lg <8335464+glnro@users.noreply.github.com>

* remove groups and gov docs

* laurens comment re moduleAccountAddress

* remove commented code that should not be added back

Co-authored-by: lg <8335464+glnro@users.noreply.github.com>

* feat: proto dependencies for downgrade to 0.45 (#1933)

* feat: add third_party proto

* feat: add script for generating go files from proto, and swagger

* feat: add protoc-doc-gen.sh

* fix: antehandler to fit sdk v0.45 (#1918)

* pause

* no vscode errors

* rewrite go.sum, go.work.sum and fix amino import

* remove mauth docs

* gofumpt

* fix find

* cant get docker to build locally

* debug ibc test

* fix ibc test

* passing e2e

* clean up commented out tests

* remove more mauth

* forgot to save

* add back middleware test

* fix upgrade

* fix test setup

* add TODO note

* remove multihop test

* fix: antehandler in sdkv0.45

* test: add back globalfee e2e test

* fix: failure of verifying sending token amount

* chore: remove comments

* feat: simplify fee logic

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* test re-org (#1913)

* pause

* no vscode errors

* rewrite go.sum, go.work.sum and fix amino import

* remove mauth docs

* gofumpt

* fix find

* cant get docker to build locally

* debug ibc test

* fix ibc test

* passing e2e

* clean up commented out tests

* remove more mauth

* forgot to save

* add back middleware test

* fix upgrade

* fix test setup

* add TODO note

* remove multihop test

* re-organized tests to make it easier to skip when working on a single one

* remove gov tests

* removed multihop tests

* markdownlint (#1936)

* fix: feegrant e2e test (#1940)

* docs: update state sync (#1946)

* Updated roadmap (#1947)

* bump versions, remove e2e go.mod (#1944)

* bump versions, remove e2e go.mod

* stupid gofumpt errors

* fixed packet forward configuration (#1941)

* exclude e2e tests from test coverage upload (#1953)

* exclude e2e tests from test coverage upload

* swap order of test to exclude e2e

* remove e2e from find

* updated gov docs as specified in issue #1948 (#1949)

* updated gov docs as specified in issue #1948

* fixed links

* missed a few links

* fix links (#1954)

* test: Refactor gov e2e for v0.45 Rho (#1951)

* WIP

* Refactor gov tests for v45

* Refactor gov and add community spend test

* Refactor

* Set explicit sdk & tm versions for all dependencies

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* Skip broken redirect link check

* Restrict disable link to single link

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* add back TestGaiaApp_Export  (#1955)

* pause

* unit pasing, check e2e

* Update test_helpers.go

* fix: put iterator in closure (#1934)

Co-authored-by: Milan Mulji <98309852+mmulji-ic@users.noreply.github.com>

* uncomment still existing test (#1956)

* uncomment still existing test

* forgot to include this file

* pause

* remove again

* add back rest of tests

* push e2e image and use released versions in docker push action (#1939)

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* lint tests, too (#1960)

* feat: Change MaxBypassMinFeeMsgGasUsage via NewFeeDecorator (#1961)

* change MaxBypassMinFeeMsgGasUsage easily

* move test to newTestGasLimit

* chore: remove unneeded replace tags (#1959)

* remove unneeded replace tags

* remove ibc dep

* Update go.mod

Co-authored-by: Marko Baricevic <markobaricevic3778@gmail.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* chore(docs): add code guidelines (#1819)

* code guidelines

* add resources

* Update docs/code-guidelines.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* git guidelines

* small fixes and final steps

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* Update ko genesis.md (#1964)

* offboarding (#1969)

* chore(deps): bump actions/cache from 3.0.10 to 3.2.0 (#1968)

Bumps [actions/cache](https://github.com/actions/cache) from 3.0.10 to 3.2.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v3.0.10...v3.2.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs: fix global fee link (#1978)

* chore(deps): bump github.com/gravity-devs/liquidity from 1.5.1 to 1.5.3 (#1981)

Bumps [github.com/gravity-devs/liquidity](https://github.com/gravity-devs/liquidity) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/gravity-devs/liquidity/releases)
- [Changelog](https://github.com/Gravity-Devs/liquidity/blob/master/CHANGELOG.md)
- [Commits](Gravity-Devs/liquidity@v1.5.1...v1.5.3)

---
updated-dependencies:
- dependency-name: github.com/gravity-devs/liquidity
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix: minor typos (#1984)

Fix: minor typos

* Migrations for quicksilver issue (#1976)

* prepare v8 release (backport #1860) (#1867)

* prepare v8 release (#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>
(cherry picked from commit f0397fd)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* Added migrations for quicksilver stuck fund fix

* Migrations for quicksilver

* Check if balance of the refund addess is positive

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Co-authored-by: lg <lauren@interchain.io>

* test: remove unused const (#1988)

* test: remove unused const

* fix: lint

* Changelog for V8 (#1982)

* Update changelog for v8

* Update changelog for v8

* Update changelog

* Make requested changes

* Update date

* Point to informal's fork of tendermint (#1990)

* fix: remove ica controller params setup from upgrade handler (#1989)

Signed-off-by: Yaru Wang <yaru@interchain.io>

* Update codeowners (#1993)

* preparing for v8.0.0-rc1 release (#1994)

* prepare v8 release (backport #1860) (#1867)

* prepare v8 release (#1860)

* chore: changelog

* chore: update changelog

* chore: add changelog for v7.0.3

* chore: add v7.1.0 to changelog

Co-authored-by: Yaru Wang <yaru@interchain.io>
(cherry picked from commit f0397fd)

# Conflicts:
#	CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* docs: update changelog

Signed-off-by: Yaru Wang <yaru@interchain.io>

* docs: update docs

Signed-off-by: Yaru Wang <yaru@interchain.io>

Signed-off-by: Yaru Wang <yaru@interchain.io>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>

* docs: changelog for v8.0.0-rc1 (#1997)

Signed-off-by: Yaru Wang <yaru@interchain.io>

Signed-off-by: Yaru Wang <yaru@interchain.io>

* fix: correct ica wiring and update pfm fixes for v8 upgrade (#2008)

* fix: remove duplicates of ica module

* Remove ICAController

* Add back ica new module config

* Move migration run to end of upgrade

* Update strangelove

* Fix pfm

* Add sdk logging

* Add fix for pfm spelling mistake

* Update ugrade handler logging, update pfm config

* Fix linter

* Update pfm

* Update TransferKeeper to pass ChannelKeeper instead of RouterKeeper

* Update pfm config

* Update

* Fix pfm again

Co-authored-by: lg <lauren@interchain.io>

* Update changelog for rc2 (#2022)

* Update v8 backport rules (#2025)

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Yaru Wang <yaru@interchain.io>
Co-authored-by: Petr Ivanov <krest2005@yandex.ru>
Co-authored-by: Petr Ivanov <petr.ivanov@tendermint.com>
Co-authored-by: Danilo Pantani <danpantani@gmail.com>
Co-authored-by: billy rennekamp <billy.rennekamp@gmail.com>
Co-authored-by: ZorroZ77 <94570964+ZorroZ77@users.noreply.github.com>
Co-authored-by: Yaru Wang <yaru@interchain.io>
Co-authored-by: yaruwangway <69694322+yaruwangway@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jacob Gadikian <jacobgadikian@gmail.com>
Co-authored-by: Yongwoo Lee <whylee259@gmail.com>
Co-authored-by: Giancarlos Salas <giansalex@gmail.com>
Co-authored-by: Andrew Gouin <andrew@gouin.io>
Co-authored-by: Milan Mulji <98309852+mmulji-ic@users.noreply.github.com>
Co-authored-by: Emmanuel T Odeke <emmanuel@orijtech.com>
Co-authored-by: Lexa Michaelides <32111123+LexaMichaelides@users.noreply.github.com>
Co-authored-by: Reece Williams <31943163+Reecepbcups@users.noreply.github.com>
Co-authored-by: Marko <marbar3778@yahoo.com>
Co-authored-by: Marko Baricevic <markobaricevic3778@gmail.com>
Co-authored-by: GwangIl-Park <40749130+GwangIl-Park@users.noreply.github.com>
Co-authored-by: omahs <73983677+omahs@users.noreply.github.com>
Co-authored-by: stana-ethernal <94966829+stana-ethernal@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants