github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/auth/keeper/adapter.go (about)

     1  package keeper
     2  
     3  import (
     4  	"context"
     5  
     6  	codectypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec/types"
     7  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/prefix"
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/query"
    10  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/exported"
    11  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/types"
    12  	internaltypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/typesadapter"
    13  	"google.golang.org/grpc/codes"
    14  	"google.golang.org/grpc/status"
    15  )
    16  
    17  var (
    18  	_ types.QueryServer = (*AccountKeeper)(nil)
    19  )
    20  
    21  func (ak AccountKeeper) Accounts(c context.Context, req *types.QueryAccountsRequest) (*types.QueryAccountsResponse, error) {
    22  	if req == nil {
    23  		return nil, status.Error(codes.InvalidArgument, "empty request")
    24  	}
    25  
    26  	ctx := sdk.UnwrapSDKContext(c)
    27  	store := ctx.KVStore(ak.key)
    28  	accountsStore := prefix.NewStore(store, types.AddressStoreKeyPrefix)
    29  
    30  	var accounts []*codectypes.Any
    31  	pageRes, err := query.Paginate(accountsStore, req.Pagination, func(key, value []byte) error {
    32  		account := ak.decodeAccount(value)
    33  		ba := convEthAccountToBaseAccount(account)
    34  		any, err := codectypes.NewAnyWithValue(ba)
    35  		if err != nil {
    36  			return err
    37  		}
    38  
    39  		accounts = append(accounts, any)
    40  		return nil
    41  	})
    42  
    43  	if err != nil {
    44  		return nil, status.Errorf(codes.Internal, "paginate: %v", err)
    45  	}
    46  
    47  	return &types.QueryAccountsResponse{Accounts: accounts, Pagination: pageRes}, err
    48  
    49  	return nil, nil
    50  }
    51  
    52  func (ak AccountKeeper) Account(conte context.Context, req *types.QueryAccountRequest) (*types.QueryAccountResponse, error) {
    53  	if req == nil {
    54  		return nil, status.Errorf(codes.InvalidArgument, "empty request")
    55  	}
    56  
    57  	if req.Address == "" {
    58  		return nil, status.Error(codes.InvalidArgument, "Address cannot be empty")
    59  	}
    60  
    61  	ctx := sdk.UnwrapSDKContext(conte)
    62  	addr, err := sdk.AccAddressFromBech32(req.Address)
    63  
    64  	if err != nil {
    65  		return nil, err
    66  	}
    67  
    68  	account := ak.GetAccount(ctx, addr)
    69  	if account == nil {
    70  		return nil, status.Errorf(codes.NotFound, "account %s not found", req.Address)
    71  	}
    72  	//ethA:=account.(*ethermint.EthAccount)
    73  	ba := &internaltypes.BaseAccount{
    74  		Address:       account.GetAddress().String(),
    75  		PubKey:        nil,
    76  		AccountNumber: account.GetAccountNumber(),
    77  		Sequence:      account.GetSequence(),
    78  	}
    79  	any, err := codectypes.NewAnyWithValue(ba)
    80  	if err != nil {
    81  		return nil, status.Errorf(codes.Internal, err.Error())
    82  	}
    83  
    84  	return &types.QueryAccountResponse{Account: any}, nil
    85  }
    86  
    87  // Params returns parameters of auth module
    88  func (ak AccountKeeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
    89  	if req == nil {
    90  		return nil, status.Error(codes.InvalidArgument, "empty request")
    91  	}
    92  	ctx := sdk.UnwrapSDKContext(c)
    93  	params := ak.GetParams(ctx)
    94  
    95  	return &types.QueryParamsResponse{Params: params}, nil
    96  }
    97  
    98  func convEthAccountToBaseAccount(account exported.Account) *internaltypes.BaseAccount {
    99  	ba := &internaltypes.BaseAccount{
   100  		Address:       account.GetAddress().String(),
   101  		PubKey:        nil,
   102  		AccountNumber: account.GetAccountNumber(),
   103  		Sequence:      account.GetSequence(),
   104  	}
   105  	return ba
   106  }