# ICS upgrade to 47 change
### stakingtypes minor changes
- Downtime -> Infraction_INFRACTION_DOWNTIME
- DoubleSign -> Infraction_INFRACTION_DOUBLE_SIGN
- Empty -> Infraction_INFRACTION_UNSPECIFIED
### event attributes
- Convert from byte to string
### tendermint light client
- NewClientState remove 2 tmConfig.AllowUpdateAfterExpiry, tmConfig.AllowUpdateAfterMisbehaviour in the params
### test/integration/democarcy.go
- #### TestDemocracyGovernanceWhitelisting
1. govkeeper GetDepositParams, GetVotingParams move to get the whole params from GetParams then access the properties (depositParams and votingParams from the params ) since the old func has been remove from govkeeper interface
2. govkeeper SetDepositParams, SetVotingParams move to set the whole params from SetParams since the old setter func has been remove from govkeeper interface
3. Fetch senderAccount from testchain as proposer
- #### submitProposalWithDepositAndVote
1. SubmitProposal now take `[]sdk.Msg` msgExacLegacyContent need to be create from paramChange content
2. Add proposer into the params for SubmitProposal func
### ante handler
- NewRejectExtensionOptionsDecorator -> NewExtensionOptionsDecorator
- NewMempoolFeeDecorator -> NewDeductFeeDecorator
- (ibc ante) ibcante.NewAnteDecorator -> ibcante.NewRedundantRelayDecorator
- remove baseproposerreward and bonusproposerreward (deprecated key) from params whitelist
### consumer app.go
- Add
### Slashing in sdk
- API change in Slash
- New function and slashing handle
- Remove check pubkey in
### Gov change
- Change `govtypes` dependency and logic to handle gov, following gov module sdk changes between 45 and 47
- Rename API in gov :
```]\
| x/gov | keeper.DeleteDeposits | keeper.DeleteAndBurnDeposits |
| x/gov | keeper.RefundDeposits | keeper.RefundAndDeleteDeposits |
```
- Get Content now need to create a MsgExecLegacyContent first from proposal's messages
### Delete Proposal
- Check all message from proposal, get content from each message and check if it in proposal whitelist
### hooks update
- update hooks for `consumerkeeper` and `providerkeeper` to match `stakingkeeper` hooks interfaces
### module.go
- Remove `Route`, `QuerierRoute` and `LegacyQuerierHandler` from AppModule Interface.
- Remove RandomizedParams in simulation.
- NewAppModule in staking change: need to add subspace when call func NewAppModule()
- NewClientState api changed (ibc v4 vs v7)
### ccvdistr, ccvstaking, ccvgov NewAppModule
- add subspace register with respective module name (distribution, gov, staking) in the func parameter
### ibctransferkeeper API change
- `SendTransfer(
ctx sdk.Context,
sourcePort,
sourceChannel string,
token sdk.Coin,
sender sdk.AccAddress,
receiver string,
timeoutHeight clienttypes.Height,
timeoutTimestamp uint64,
) error` -> `Transfer(context.Context, *transfertypes.MsgTransfer) (*transfertypes.MsgTransferResponse, error)`
### provider client proposal handler
- remove all func that use deprecated rest package from cosmos sdk
- create `NewLegacyContent` from the content first in order to create a `NewMsgSubmitProposal`
### testutil: regenerate mocks due to SendTransfer -> Transfer IBC keeper's migration
mockgen ...
### Linted packages:
#### sdk.Int -> math.Int; sdkerrors -> cosmossdk.io/errors
#### Remove unneeded SA1019 disablers
### API change
- Slash() function
- change `GetParam` to comply with staking interface restriction
- add `GetConsumerParam` to get consumer module params
### Do not use deprecated simtypes.WeightedProposalContent
### sdk fork
- evidenctkeeper `HandleEquivocationEvidence` remove check for consAddr
- slashingkeeper `HandleValidatorSignature` remove check for consAddr