github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/keeper/keys.go (about) 1 package keeper 2 3 var ( 4 swapPrefix = []byte{0x01} 5 swapStatsKey = []byte{0x02} 6 swappedKeyPrefix = []byte{0x03} 7 ) 8 9 // swapKey key(prefix + (lengthPrefixed+)fromDenom + (lengthPrefixed+)toDenom) 10 func swapKey(fromDenom, toDenom string) []byte { 11 denoms := combineDenoms(fromDenom, toDenom) 12 return append(swapPrefix, denoms...) 13 } 14 15 // swappedKey key(prefix + (lengthPrefixed+)fromDenom + (lengthPrefixed+)toDenom) 16 func swappedKey(fromDenom, toDenom string) []byte { 17 denoms := combineDenoms(fromDenom, toDenom) 18 return append(swappedKeyPrefix, denoms...) 19 } 20 21 func combineDenoms(fromDenom, toDenom string) []byte { 22 lengthPrefixedFromDenom := lengthPrefix([]byte(fromDenom)) 23 lengthPrefixedToDenom := lengthPrefix([]byte(toDenom)) 24 return append(lengthPrefixedFromDenom, lengthPrefixedToDenom...) 25 } 26 27 // lengthPrefix prefixes the address bytes with its length, this is used 28 // for example for variable-length components in store keys. 29 func lengthPrefix(bz []byte) []byte { 30 bzLen := len(bz) 31 if bzLen == 0 { 32 return bz 33 } 34 35 return append([]byte{byte(bzLen)}, bz...) 36 }