packet_key.gno
2.31 Kb · 57 lines
1package host
2
3import "gno.land/p/aib/encoding"
4
5const (
6 PacketCommitmentBasePrefix = byte(1)
7 PacketReceiptBasePrefix = byte(2)
8 PacketAcknowledgementBasePrefix = byte(3)
9)
10
11// PacketCommitmentPrefixKey returns the store key prefix under which packet
12// commitments for a particular client are stored.
13// clientID must be a generated identifier, not provided externally so key
14// collisions are not possible.
15func PacketCommitmentPrefixKey(clientID string) []byte {
16 return append([]byte(clientID), PacketCommitmentBasePrefix)
17}
18
19// PacketCommitmentKey returns the store key of under which a packet commitment
20// is stored.
21// clientID must be a generated identifier, not provided externally so key
22// collisions are not possible.
23func PacketCommitmentKey(clientID string, sequence uint64) []byte {
24 return append(PacketCommitmentPrefixKey(clientID), encoding.Uint64ToBigEndian(sequence)...)
25}
26
27// PacketReceiptPrefixKey returns the store key prefix under which packet
28// receipts for a particular channel are stored.
29// clientID must be a generated identifier, not provided externally so key
30// collisions are not possible.
31func PacketReceiptPrefixKey(clientID string) []byte {
32 return append([]byte(clientID), PacketReceiptBasePrefix)
33}
34
35// PacketReceiptKey returns the store key of under which a packet receipt is
36// stored.
37// clientID must be a generated identifier, not provided externally so key
38// collisions are not possible.
39func PacketReceiptKey(clientID string, sequence uint64) []byte {
40 return append(PacketReceiptPrefixKey(clientID), encoding.Uint64ToBigEndian(sequence)...)
41}
42
43// PacketAcknowledgementPrefixKey returns the store key prefix under which
44// packet acknowledgements for a particular channel are stored. clientID must
45// be a generated identifier, not provided externally so key collisions are not
46// possible.
47func PacketAcknowledgementPrefixKey(clientID string) []byte {
48 return append([]byte(clientID), PacketAcknowledgementBasePrefix)
49}
50
51// PacketAcknowledgementKey returns the store key of under which a packet
52// acknowledgement is stored.
53// clientID must be a generated identifier, not provided externally so key
54// collisions are not possible.
55func PacketAcknowledgementKey(clientID string, sequence uint64) []byte {
56 return append(PacketAcknowledgementPrefixKey(clientID), encoding.Uint64ToBigEndian(sequence)...)
57}