github.com/Finschia/finschia-sdk@v0.49.1/x/bankplus/keeper/inactive.go (about) 1 package keeper 2 3 import ( 4 sdk "github.com/Finschia/finschia-sdk/types" 5 "github.com/Finschia/finschia-sdk/x/bankplus/types" 6 ) 7 8 // Keys for bankplus store but this prefix must not be overlap with bank key prefix. 9 var inactiveAddrsKeyPrefix = []byte{0xa0} 10 11 // inactiveAddrKey key of a specific inactiveAddr from store 12 func inactiveAddrKey(addr sdk.AccAddress) []byte { 13 return append(inactiveAddrsKeyPrefix, addr.Bytes()...) 14 } 15 16 // isStoredInactiveAddr checks if the address is stored or not as blocked address 17 func (keeper BaseKeeper) isStoredInactiveAddr(ctx sdk.Context, address sdk.AccAddress) bool { 18 store := ctx.KVStore(keeper.storeKey) 19 bz := store.Get(inactiveAddrKey(address)) 20 return bz != nil 21 } 22 23 // addToInactiveAddr adds a blocked address to the store. 24 func (keeper BaseKeeper) addToInactiveAddr(ctx sdk.Context, address sdk.AccAddress) { 25 store := ctx.KVStore(keeper.storeKey) 26 blockedCAddr := types.InactiveAddr{Address: address.String()} 27 bz := keeper.cdc.MustMarshal(&blockedCAddr) 28 store.Set(inactiveAddrKey(address), bz) 29 } 30 31 // deleteFromInactiveAddr deletes blocked address from store 32 func (keeper BaseKeeper) deleteFromInactiveAddr(ctx sdk.Context, address sdk.AccAddress) { 33 store := ctx.KVStore(keeper.storeKey) 34 store.Delete(inactiveAddrKey(address)) 35 } 36 37 // loadAllInactiveAddrs loads all blocked address and set to `inactiveAddr`. 38 // This function is executed when the app is initiated and save all inactive address in caches 39 // in order to prevent to query to store in every time to send 40 func (keeper BaseKeeper) loadAllInactiveAddrs(ctx sdk.Context) { 41 store := ctx.KVStore(keeper.storeKey) 42 iterator := sdk.KVStorePrefixIterator(store, inactiveAddrsKeyPrefix) 43 44 defer iterator.Close() 45 for ; iterator.Valid(); iterator.Next() { 46 var bAddr types.InactiveAddr 47 keeper.cdc.MustUnmarshal(iterator.Value(), &bAddr) 48 49 keeper.inactiveAddrs[bAddr.Address] = true 50 } 51 }