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  }