-
Notifications
You must be signed in to change notification settings - Fork 0
/
keys.go
55 lines (43 loc) · 1.85 KB
/
keys.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package types
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/address"
)
var (
VeValidatorsKey = []byte{0xA1}
VeDelegationKey = []byte{0xA2}
VeUnbondingDelegationKey = []byte{0xA3}
VeRedelegationKey = []byte{0xA4}
VeTokensKey = []byte{0xA5}
)
func GetVeValidatorKey(operatorAddr sdk.ValAddress) []byte {
return append(VeValidatorsKey, address.MustLengthPrefix(operatorAddr)...)
}
func GetVeDelegationKey(delAddr sdk.AccAddress, valAddr sdk.ValAddress) []byte {
return append(GetVeDelegationsKey(delAddr), address.MustLengthPrefix(valAddr)...)
}
func GetVeDelegationsKey(delAddr sdk.AccAddress) []byte {
return append(VeDelegationKey, address.MustLengthPrefix(delAddr)...)
}
func GetVeUBDKey(delAddr sdk.AccAddress, valAddr sdk.ValAddress) []byte {
return append(GetVeUBDsKey(delAddr.Bytes()), address.MustLengthPrefix(valAddr)...)
}
func GetVeUBDsKey(delAddr sdk.AccAddress) []byte {
return append(VeUnbondingDelegationKey, address.MustLengthPrefix(delAddr)...)
}
func GetVeREDKey(delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress) []byte {
// key is of the form GetVeREDsKey || valSrcAddrLen (1 byte) || valSrcAddr || valDstAddrLen (1 byte) || valDstAddr
key := make([]byte, 1+3+len(delAddr)+len(valSrcAddr)+len(valDstAddr))
copy(key[0:2+len(delAddr)], GetVeREDsKey(delAddr.Bytes()))
key[2+len(delAddr)] = byte(len(valSrcAddr))
copy(key[3+len(delAddr):3+len(delAddr)+len(valSrcAddr)], valSrcAddr.Bytes())
key[3+len(delAddr)+len(valSrcAddr)] = byte(len(valDstAddr))
copy(key[4+len(delAddr)+len(valSrcAddr):], valDstAddr.Bytes())
return key
}
func GetVeREDsKey(delAddr sdk.AccAddress) []byte {
return append(VeRedelegationKey, address.MustLengthPrefix(delAddr)...)
}
func GetVeTokensKey(veID uint64) []byte {
return append(VeTokensKey, sdk.Uint64ToBigEndian(veID)...)
}