/
oracle_address.go
50 lines (42 loc) · 1.32 KB
/
oracle_address.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
package keeper
import (
"github.com/Carina-labs/nova/x/oracle/types"
"github.com/cosmos/cosmos-sdk/store/prefix"
sdk "github.com/cosmos/cosmos-sdk/types"
)
// set oracle
func (k Keeper) GetOracleAddressStore(ctx sdk.Context) prefix.Store {
return prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyOracleAddr)
}
// set oracle address
func (k Keeper) SetOracleAddress(ctx sdk.Context, zoneId string, oracleAddrs []string) {
store := k.GetOracleAddressStore(ctx)
key := zoneId
oracleAddrInfo := types.OracleAddressInfo{
ZoneId: zoneId,
OracleAddress: oracleAddrs,
}
bz := k.cdc.MustMarshal(&oracleAddrInfo)
store.Set([]byte(key), bz)
}
// get oracle address
func (k Keeper) GetOracleAddress(ctx sdk.Context, zoneId string) types.OracleAddressInfo {
store := k.GetOracleAddressStore(ctx)
bz := store.Get([]byte(zoneId))
var oracleAddrInfo types.OracleAddressInfo
k.cdc.MustUnmarshal(bz, &oracleAddrInfo)
return oracleAddrInfo
}
func (k Keeper) IsValidOracleAddress(ctx sdk.Context, zoneId, address string) bool {
addrs := k.GetOracleAddress(ctx, zoneId)
for i := range addrs.OracleAddress {
if addrs.OracleAddress[i] == address {
return true
}
}
return false
}
func (k Keeper) ValidZoneAddress(ctx sdk.Context, zoneId string) bool {
_, ok := k.icaControlKeeper.GetRegisteredZone(ctx, zoneId)
return ok
}