Skip to content

Commit

Permalink
fix oracle activate; use codec to convert ValAddress, AccAddress
Browse files Browse the repository at this point in the history
  • Loading branch information
slandymani committed Aug 6, 2024
1 parent 648d407 commit 062d5d4
Show file tree
Hide file tree
Showing 15 changed files with 165 additions and 142 deletions.
2 changes: 1 addition & 1 deletion proto/oracle/v1/tx.proto
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ message MsgActivate {
option (gogoproto.equal) = true;
// Validator is the validator address who sign this message and request to be
// activated.
string validator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string validator = 1 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"];
}

// MsgActivateResponse is response data for MsgActivate message
Expand Down
7 changes: 5 additions & 2 deletions x/mint/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"

"cosmossdk.io/collections"
addresscodec "cosmossdk.io/core/address"
storetypes "cosmossdk.io/core/store"
"cosmossdk.io/errors"
"cosmossdk.io/log"
Expand All @@ -22,6 +23,7 @@ type Keeper struct {
stakingKeeper minttypes.StakingKeeper
authKeeper minttypes.AccountKeeper
bankKeeper minttypes.BankKeeper
addressCodec addresscodec.Codec
feeCollectorName string

// the address capable of executing a MsgUpdateParams message. Typically, this
Expand Down Expand Up @@ -57,6 +59,7 @@ func NewKeeper(
bankKeeper: bk,
authKeeper: ak,
feeCollectorName: feeCollectorName,
addressCodec: ak.AddressCodec(),
authority: authority,
Params: collections.NewItem(sb, minttypes.ParamsKey, "params", codec.CollValue[minttypes.Params](cdc)),
Minter: collections.NewItem(sb, minttypes.MinterKey, "minter", codec.CollValue[minttypes.Minter](cdc)),
Expand All @@ -82,12 +85,12 @@ func (k Keeper) Logger(ctx context.Context) log.Logger {
return sdkCtx.Logger().With("module", "x/"+minttypes.ModuleName)
}

// get the minter
// GetMinter returns the minter
func (k Keeper) GetMinter(ctx context.Context) (minttypes.Minter, error) {
return k.Minter.Get(ctx)
}

// set the minter
// SetMinter sets minter to the store
func (k Keeper) SetMinter(ctx context.Context, minter minttypes.Minter) error {
return k.Minter.Set(ctx, minter)
}
Expand Down
2 changes: 1 addition & 1 deletion x/mint/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (ms msgServer) WithdrawCoinsToAccFromTreasury(
return nil, errors.Wrapf(minttypes.ErrExceedsWithdrawalLimitPerTime, "amount: %s", msg.Amount.String())
}

receiver, err := sdk.AccAddressFromBech32(msg.Receiver)
receiver, err := ms.addressCodec.StringToBytes(msg.Receiver)
if err != nil {
return nil, errors.Wrapf(err, "failed to parse receiver address %s", msg.Receiver)
}
Expand Down
2 changes: 2 additions & 0 deletions x/mint/types/expected_keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package types
import (
"context"

"cosmossdk.io/core/address"
"cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
)
Expand All @@ -15,6 +16,7 @@ type StakingKeeper interface {

// AccountKeeper defines the contract required for account APIs.
type AccountKeeper interface {
AddressCodec() address.Codec
GetModuleAddress(name string) sdk.AccAddress

// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
Expand Down
4 changes: 2 additions & 2 deletions x/oracle/keeper/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (k Keeper) CollectReward(

accumulatedAmount := accumulatedDataProvidersRewards.AccumulatedAmount
currentRewardPerByte := accumulatedDataProvidersRewards.CurrentRewardPerByte
var rewPerByteInFeeDenom sdk.Coins
rewPerByteInFeeDenom := sdk.Coins{}

for _, rawReq := range rawRequests {
rawRep, ok := rawReportsMap[rawReq.GetExternalID()]
Expand All @@ -50,7 +50,7 @@ func (k Keeper) CollectReward(
}

ds := k.MustGetDataSource(ctx, rawReq.GetDataSourceID())
dsOwnerAddr, err := sdk.AccAddressFromBech32(ds.Owner)
dsOwnerAddr, err := k.addressCodec.StringToBytes(ds.Owner)
if err != nil {
return nil, errors.Wrapf(err, "parsing data source owner address: %s", dsOwnerAddr)
}
Expand Down
34 changes: 18 additions & 16 deletions x/oracle/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,13 +204,14 @@ func (k Querier) PendingRequests(
return nil, status.Error(codes.InvalidArgument, "empty request")
}
ctx := sdk.UnwrapSDKContext(c)
valAddress, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
val, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, status.Error(
codes.InvalidArgument,
fmt.Sprintf("unable to parse given validator address: %v", err),
)
}
valAddress := sdk.ValAddress(val)

lastExpired, err := k.GetRequestLastExpired(ctx)
if err != nil {
Expand Down Expand Up @@ -239,14 +240,14 @@ func (k Querier) PendingRequests(
// If the validator isn't in requested validators set, then skip it.
isInValidatorSet := false
for _, v := range oracleReq.RequestedValidators {
val, err := sdk.ValAddressFromBech32(v)
val, err := k.validatorAddressCodec.StringToBytes(v)
if err != nil {
return nil, status.Error(
codes.Internal,
fmt.Sprintf("unable to parse validator address in requested validators %v: %v", v, err),
)
}
if valAddress.Equals(val) {
if valAddress.Equals(sdk.ValAddress(val)) {
isInValidatorSet = true
break
}
Expand All @@ -258,14 +259,14 @@ func (k Querier) PendingRequests(
// If the validator has reported, then skip it.
reported := false
for _, r := range reports {
val, err := sdk.ValAddressFromBech32(r.Validator)
val, err := k.validatorAddressCodec.StringToBytes(r.Validator)
if err != nil {
return nil, status.Error(
codes.Internal,
fmt.Sprintf("unable to parse validator address in requested validators %v: %v", r.Validator, err),
)
}
if valAddress.Equals(val) {
if valAddress.Equals(sdk.ValAddress(val)) {
reported = true
break
}
Expand All @@ -290,7 +291,7 @@ func (k Querier) Validator(
return nil, status.Error(codes.InvalidArgument, "empty request")
}
ctx := sdk.UnwrapSDKContext(c)
val, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
val, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}
Expand All @@ -307,11 +308,11 @@ func (k Querier) IsReporter(
req *types.QueryIsReporterRequest,
) (*types.QueryIsReporterResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
val, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
val, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}
rep, err := sdk.AccAddressFromBech32(req.ReporterAddress)
rep, err := k.validatorAddressCodec.StringToBytes(req.ReporterAddress)
if err != nil {
return nil, err
}
Expand All @@ -327,7 +328,7 @@ func (k Querier) Reporters(
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
val, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
val, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -363,7 +364,7 @@ func (k Querier) ActiveValidators(
result := types.QueryActiveValidatorsResponse{}
err := k.stakingKeeper.IterateBondedValidatorsByPower(ctx,
func(idx int64, val stakingtypes.ValidatorI) (stop bool) {
valAddr, err := sdk.ValAddressFromBech32(val.GetOperator())
valAddr, err := k.validatorAddressCodec.StringToBytes(val.GetOperator())
if err != nil {
return false
}
Expand Down Expand Up @@ -443,13 +444,14 @@ func (k Querier) RequestVerification(
}

// Provided validator's address should be valid
validator, err := sdk.ValAddressFromBech32(req.Validator)
val, err := k.validatorAddressCodec.StringToBytes(req.Validator)
if err != nil {
return nil, status.Error(
codes.InvalidArgument,
fmt.Sprintf("unable to parse validator address: %s", err.Error()),
)
}
validator := sdk.ValAddress(val)

// Provided signature should be valid, which means this query request should be signed by the provided reporter
pk, err := hex.DecodeString(req.Reporter)
Expand Down Expand Up @@ -503,8 +505,8 @@ func (k Querier) RequestVerification(
// Provided validator should be assigned to response to the request
isValidatorAssigned := false
for _, requestedValidator := range request.RequestedValidators {
v, _ := sdk.ValAddressFromBech32(requestedValidator)
if validator.Equals(v) {
v, _ := k.validatorAddressCodec.StringToBytes(requestedValidator)
if validator.Equals(sdk.ValAddress(v)) {
isValidatorAssigned = true
break
}
Expand Down Expand Up @@ -553,8 +555,8 @@ func (k Querier) RequestVerification(

isValidatorReported := false
for _, report := range reports {
reportVal, _ := sdk.ValAddressFromBech32(report.Validator)
if reportVal.Equals(validator) {
reportVal, _ := k.validatorAddressCodec.StringToBytes(report.Validator)
if sdk.ValAddress(reportVal).Equals(validator) {
isValidatorReported = true
break
}
Expand Down Expand Up @@ -608,7 +610,7 @@ func (k Querier) DataProviderAccumulatedReward(c context.Context, req *types.Que
return nil, status.Error(codes.InvalidArgument, "empty request")
}
ctx := sdk.UnwrapSDKContext(c)
addr, err := sdk.AccAddressFromBech32(req.DataProviderAddress)
addr, err := k.addressCodec.StringToBytes(req.DataProviderAddress)
if err != nil {
return nil, err
}
Expand Down
48 changes: 26 additions & 22 deletions x/oracle/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"time"

"cosmossdk.io/collections"
addresscodec "cosmossdk.io/core/address"
corestoretypes "cosmossdk.io/core/store"
"cosmossdk.io/log"
owasm "github.com/ODIN-PROTOCOL/wasmvm/v2"
Expand All @@ -26,14 +27,16 @@ type Keeper struct {
feeCollectorName string
owasmVM *owasm.Vm

AuthKeeper types.AccountKeeper
BankKeeper types.BankKeeper
stakingKeeper types.StakingKeeper
distrKeeper types.DistrKeeper
authzKeeper types.AuthzKeeper
channelKeeper types.ChannelKeeper
portKeeper types.PortKeeper
scopedKeeper capabilitykeeper.ScopedKeeper
AuthKeeper types.AccountKeeper
BankKeeper types.BankKeeper
stakingKeeper types.StakingKeeper
distrKeeper types.DistrKeeper
authzKeeper types.AuthzKeeper
channelKeeper types.ChannelKeeper
portKeeper types.PortKeeper
scopedKeeper capabilitykeeper.ScopedKeeper
validatorAddressCodec addresscodec.Codec
addressCodec addresscodec.Codec

// the address capable of executing a MsgUpdateParams message. Typically, this
// should be the x/gov module account.
Expand Down Expand Up @@ -81,20 +84,21 @@ func NewKeeper(
sb := collections.NewSchemaBuilder(storeService)

k := Keeper{
cdc: cdc,
fileCache: filecache.New(fileDir),
feeCollectorName: feeCollectorName,
owasmVM: owasmVM,
AuthKeeper: authKeeper,
BankKeeper: bankKeeper,
stakingKeeper: stakingKeeper,
distrKeeper: distrKeeper,
authzKeeper: authzKeeper,
channelKeeper: channelKeeper,
portKeeper: portKeeper,
scopedKeeper: scopeKeeper,
authority: authority,
storeService: storeService,
cdc: cdc,
fileCache: filecache.New(fileDir),
feeCollectorName: feeCollectorName,
owasmVM: owasmVM,
AuthKeeper: authKeeper,
BankKeeper: bankKeeper,
stakingKeeper: stakingKeeper,
distrKeeper: distrKeeper,
authzKeeper: authzKeeper,
channelKeeper: channelKeeper,
portKeeper: portKeeper,
scopedKeeper: scopeKeeper,
validatorAddressCodec: stakingKeeper.ValidatorAddressCodec(),
authority: authority,
storeService: storeService,

Params: collections.NewItem(sb, types.ParamsKeyPrefix, "params", codec.CollValue[types.Params](cdc)),
DataSources: collections.NewMap(sb, types.DataSourceStoreKeyPrefix, "data_sources", collections.Uint64Key, codec.CollValue[types.DataSource](cdc)),
Expand Down
Loading

0 comments on commit 062d5d4

Please sign in to comment.