github.com/Finschia/finschia-sdk@v0.48.1/x/distribution/legacy/v043/helpers.go (about) 1 package v043 2 3 import ( 4 "github.com/Finschia/finschia-sdk/store/prefix" 5 sdk "github.com/Finschia/finschia-sdk/types" 6 "github.com/Finschia/finschia-sdk/types/address" 7 v040auth "github.com/Finschia/finschia-sdk/x/auth/legacy/v040" 8 ) 9 10 // MigratePrefixAddress is a helper function that migrates all keys of format: 11 // prefix_bytes | address_bytes 12 // into format: 13 // prefix_bytes | address_len (1 byte) | address_bytes 14 func MigratePrefixAddress(store sdk.KVStore, prefixBz []byte) { 15 oldStore := prefix.NewStore(store, prefixBz) 16 17 oldStoreIter := oldStore.Iterator(nil, nil) 18 defer oldStoreIter.Close() 19 20 for ; oldStoreIter.Valid(); oldStoreIter.Next() { 21 addr := oldStoreIter.Key() 22 newStoreKey := prefixBz 23 newStoreKey = append(newStoreKey, address.MustLengthPrefix(addr)...) 24 25 // Set new key on store. Values don't change. 26 store.Set(newStoreKey, oldStoreIter.Value()) 27 oldStore.Delete(oldStoreIter.Key()) 28 } 29 } 30 31 // MigratePrefixAddressBytes is a helper function that migrates all keys of format: 32 // prefix_bytes | address_bytes | arbitrary_bytes 33 // into format: 34 // prefix_bytes | address_len (1 byte) | address_bytes | arbitrary_bytes 35 func MigratePrefixAddressBytes(store sdk.KVStore, prefixBz []byte) { 36 oldStore := prefix.NewStore(store, prefixBz) 37 38 oldStoreIter := oldStore.Iterator(nil, nil) 39 defer oldStoreIter.Close() 40 41 for ; oldStoreIter.Valid(); oldStoreIter.Next() { 42 addr := oldStoreIter.Key()[:v040auth.AddrLen] 43 endBz := oldStoreIter.Key()[v040auth.AddrLen:] 44 newStoreKey := append(append(prefixBz, address.MustLengthPrefix(addr)...), endBz...) 45 46 // Set new key on store. Values don't change. 47 store.Set(newStoreKey, oldStoreIter.Value()) 48 oldStore.Delete(oldStoreIter.Key()) 49 } 50 } 51 52 // MigratePrefixAddressAddress is a helper function that migrates all keys of format: 53 // prefix_bytes | address_1_bytes | address_2_bytes 54 // into format: 55 // prefix_bytes | address_1_len (1 byte) | address_1_bytes | address_2_len (1 byte) | address_2_bytes 56 func MigratePrefixAddressAddress(store sdk.KVStore, prefixBz []byte) { 57 oldStore := prefix.NewStore(store, prefixBz) 58 59 oldStoreIter := oldStore.Iterator(nil, nil) 60 defer oldStoreIter.Close() 61 62 for ; oldStoreIter.Valid(); oldStoreIter.Next() { 63 addr1 := oldStoreIter.Key()[:v040auth.AddrLen] 64 addr2 := oldStoreIter.Key()[v040auth.AddrLen:] 65 newStoreKey := append(append(prefixBz, address.MustLengthPrefix(addr1)...), address.MustLengthPrefix(addr2)...) 66 67 // Set new key on store. Values don't change. 68 store.Set(newStoreKey, oldStoreIter.Value()) 69 oldStore.Delete(oldStoreIter.Key()) 70 } 71 }