@@ -55,13 +55,16 @@ import (
5555 "github.com/bnb-chain/node/plugins/dex/list"
5656 "github.com/bnb-chain/node/plugins/dex/order"
5757 dextypes "github.com/bnb-chain/node/plugins/dex/types"
58+ migrate "github.com/bnb-chain/node/plugins/migrate"
59+ tokenRecover "github.com/bnb-chain/node/plugins/recover"
5860 "github.com/bnb-chain/node/plugins/tokens"
5961 "github.com/bnb-chain/node/plugins/tokens/issue"
6062 "github.com/bnb-chain/node/plugins/tokens/ownership"
6163 "github.com/bnb-chain/node/plugins/tokens/seturi"
6264 "github.com/bnb-chain/node/plugins/tokens/swap"
6365 "github.com/bnb-chain/node/plugins/tokens/timelock"
6466 "github.com/bnb-chain/node/wire"
67+ stakeMigration "github.com/cosmos/cosmos-sdk/x/stake/stake_migration"
6568)
6669
6770const (
@@ -359,6 +362,9 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) {
359362 upgrade .Mgr .AddUpgradeHeight (upgrade .FixDoubleSignChainId , upgradeConfig .FixDoubleSignChainIdHeight )
360363 upgrade .Mgr .AddUpgradeHeight (upgrade .BEP126 , upgradeConfig .BEP126Height )
361364 upgrade .Mgr .AddUpgradeHeight (upgrade .BEP255 , upgradeConfig .BEP255Height )
365+ upgrade .Mgr .AddUpgradeHeight (upgrade .FirstSunset , upgradeConfig .FirstSunsetHeight )
366+ upgrade .Mgr .AddUpgradeHeight (upgrade .SecondSunset , upgradeConfig .SecondSunsetHeight )
367+ upgrade .Mgr .AddUpgradeHeight (upgrade .FinalSunset , upgradeConfig .FinalSunsetHeight )
362368
363369 // register store keys of upgrade
364370 upgrade .Mgr .RegisterStoreKeys (upgrade .BEP9 , common .TimeLockStoreKey .Name ())
@@ -619,6 +625,11 @@ func (app *BNBBeaconChain) initStaking() {
619625 newCtx := ctx .WithSideChainKeyPrefix (storePrefix )
620626 app .stakeKeeper .ClearUpSideVoteAddrs (newCtx )
621627 })
628+ upgrade .Mgr .RegisterBeginBlocker (sdk .FirstSunsetFork , func (ctx sdk.Context ) {
629+ chainId := sdk .ChainID (ServerContext .BscIbcChainId )
630+ // enable channel but not send cross chain msg
631+ app .scKeeper .SetChannelSendPermission (ctx , chainId , sTypes .StakeMigrationChannelID , sdk .ChannelAllow )
632+ })
622633 app .stakeKeeper .SubscribeParamChange (app .ParamHub )
623634 app .stakeKeeper .SubscribeBCParamChange (app .ParamHub )
624635 app .stakeKeeper = app .stakeKeeper .WithHooks (app .slashKeeper .Hooks ())
@@ -629,6 +640,13 @@ func (app *BNBBeaconChain) initStaking() {
629640 if err != nil {
630641 panic (err )
631642 }
643+
644+ // register stake migration channel
645+ stakeMigrationApp := stakeMigration .NewStakeMigrationApp (app .stakeKeeper )
646+ err = app .scKeeper .RegisterChannel (sTypes .StakeMigrationChannel , sTypes .StakeMigrationChannelID , stakeMigrationApp )
647+ if err != nil {
648+ panic (err )
649+ }
632650}
633651
634652func (app * BNBBeaconChain ) initGov () {
@@ -880,7 +898,7 @@ func (app *BNBBeaconChain) isBreatheBlock(height int64, lastBlockTime time.Time,
880898 // lastBlockTime is zero if this blockTime is for the first block (first block doesn't mean height = 1, because after
881899 // state sync from breathe block, the height is breathe block + 1)
882900 if app .baseConfig .BreatheBlockInterval > 0 {
883- return height % int64 (app .baseConfig .BreatheBlockInterval ) == 0
901+ return ! lastBlockTime . IsZero () && ! utils . SamePeriodInUTC ( lastBlockTime , blockTime , int64 (app .baseConfig .BreatheBlockInterval ))
884902 } else {
885903 return ! lastBlockTime .IsZero () && ! utils .SameDayInUTC (lastBlockTime , blockTime )
886904 }
@@ -918,6 +936,7 @@ func (app *BNBBeaconChain) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock)
918936 tokens .EndBreatheBlock (ctx , app .swapKeeper )
919937 } else {
920938 app .Logger .Debug ("normal block" , "height" , height )
939+ tokens .EndBlocker (ctx , app .timeLockKeeper , app .swapKeeper )
921940 }
922941
923942 app .DexKeeper .StoreTradePrices (ctx )
@@ -945,6 +964,9 @@ func (app *BNBBeaconChain) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock)
945964 } else if ctx .RouterCallRecord ()["stake" ] || sdk .IsUpgrade (upgrade .BEP128 ) {
946965 validatorUpdates , completedUbd = stake .EndBlocker (ctx , app .stakeKeeper )
947966 }
967+
968+ // That is no deep copy when New IBC Keeper. need to set it again.
969+ app .ibcKeeper .SetSideChainKeeper (app .scKeeper )
948970 ibc .EndBlocker (ctx , app .ibcKeeper )
949971 if len (validatorUpdates ) != 0 {
950972 app .ValAddrCache .ClearCache ()
@@ -1156,6 +1178,8 @@ func MakeCodec() *wire.Codec {
11561178 bridge .RegisterWire (cdc )
11571179 oracle .RegisterWire (cdc )
11581180 ibc .RegisterWire (cdc )
1181+ tokenRecover .RegisterWire (cdc )
1182+ migrate .RegisterWire (cdc )
11591183 return cdc
11601184}
11611185
0 commit comments