/
oracle.go
37 lines (28 loc) · 1.06 KB
/
oracle.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package types
import (
"encoding/binary"
ctypes "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/sidechain"
)
type IbcChannelID = ctypes.ChannelID
type IbcChainID = ctypes.ChainID
const (
prefixLength = 1
destIbcChainIDLength = 2
channelIDLength = 1
)
var (
SideChainStorePrefixByIdKey = sidechain.SideChainStorePrefixByIdKey
PrefixForSendSequenceKey = sidechain.PrefixForSendSequenceKey
PrefixForReceiveSequenceKey = sidechain.PrefixForReceiveSequenceKey
)
func GetReceiveSequenceKey(destIbcChainID IbcChainID, channelID IbcChannelID) []byte {
return buildChannelSequenceKey(destIbcChainID, channelID, PrefixForReceiveSequenceKey)
}
func buildChannelSequenceKey(destIbcChainID IbcChainID, channelID IbcChannelID, prefix []byte) []byte {
key := make([]byte, prefixLength+destIbcChainIDLength+channelIDLength)
copy(key[:prefixLength], prefix)
binary.BigEndian.PutUint16(key[prefixLength:prefixLength+destIbcChainIDLength], uint16(destIbcChainID))
copy(key[prefixLength+destIbcChainIDLength:], []byte{byte(channelID)})
return key
}