diff --git a/api/coreservice.go b/api/coreservice.go index 66ace25a13..42f4dabd01 100644 --- a/api/coreservice.go +++ b/api/coreservice.go @@ -82,7 +82,7 @@ type ( // CoreService provides api interface for user to interact with blockchain data CoreService interface { // Account returns the metadata of an account - Account(addr address.Address) (*iotextypes.AccountMeta, *iotextypes.BlockIdentifier, error) + Account(string) (*iotextypes.AccountMeta, *iotextypes.BlockIdentifier, error) // ChainMeta returns blockchain metadata ChainMeta() (*iotextypes.ChainMeta, string, error) // ServerMeta gets the server metadata @@ -306,14 +306,17 @@ func newCoreService( } // Account returns the metadata of an account -func (core *coreService) Account(addr address.Address) (*iotextypes.AccountMeta, *iotextypes.BlockIdentifier, error) { +func (core *coreService) Account(addrStr string) (*iotextypes.AccountMeta, *iotextypes.BlockIdentifier, error) { ctx, span := tracer.NewSpan(context.Background(), "coreService.Account") defer span.End() - addrStr := addr.String() if addrStr == address.RewardingPoolAddr || addrStr == address.StakingBucketPoolAddr { return core.getProtocolAccount(ctx, addrStr) } span.AddEvent("accountutil.AccountStateWithHeight") + addr, err := address.FromString(addrStr) + if err != nil { + return nil, nil, status.Error(codes.FailedPrecondition, err.Error()) + } ctx = genesis.WithGenesisContext(ctx, core.bc.Genesis()) state, tipHeight, err := accountutil.AccountStateWithHeight(ctx, core.sf, addr) if err != nil { @@ -1068,7 +1071,6 @@ func (core *coreService) ActionsByAddress(addr address.Address, start uint64, co if count > core.cfg.RangeQueryLimit { return nil, status.Error(codes.InvalidArgument, "range exceeds the limit") } - actions, err := core.indexer.GetActionsByAddress(hash.BytesToHash160(addr.Bytes()), start, count) if err != nil { if errors.Cause(err) == db.ErrBucketNotExist || errors.Cause(err) == db.ErrNotExist { diff --git a/api/grpcserver.go b/api/grpcserver.go index 3856a08fbd..18a9b052d7 100644 --- a/api/grpcserver.go +++ b/api/grpcserver.go @@ -159,11 +159,7 @@ func (svr *gRPCHandler) SuggestGasPrice(ctx context.Context, in *iotexapi.Sugges func (svr *gRPCHandler) GetAccount(ctx context.Context, in *iotexapi.GetAccountRequest) (*iotexapi.GetAccountResponse, error) { span := tracer.SpanFromContext(ctx) defer span.End() - addr, err := address.FromString(in.Address) - if err != nil { - return nil, err - } - accountMeta, blockIdentifier, err := svr.coreService.Account(addr) + accountMeta, blockIdentifier, err := svr.coreService.Account(in.Address) if err != nil { return nil, err } diff --git a/api/grpcserver_test.go b/api/grpcserver_test.go index ff6d987982..1897366ff8 100644 --- a/api/grpcserver_test.go +++ b/api/grpcserver_test.go @@ -70,9 +70,9 @@ func TestGrpcServer_GetAccount(t *testing.T) { request := &iotexapi.GetAccountRequest{ Address: "9254d943485d0fb859ff63c5581acc44f00fc2110343ac0445b99dfe39a6f1a5", } - + core.EXPECT().Account(gomock.Any()).Return(nil, nil, expectedErr) _, err := grpcSvr.GetAccount(context.Background(), request) - require.Contains(err.Error(), expectedErr.Error()) + require.ErrorContains(err, expectedErr.Error()) }) } diff --git a/api/web3server.go b/api/web3server.go index df14d98b45..2025072d98 100644 --- a/api/web3server.go +++ b/api/web3server.go @@ -412,7 +412,7 @@ func (svr *web3Handler) getBalance(in *gjson.Result) (interface{}, error) { if err != nil { return nil, err } - accountMeta, _, err := svr.coreService.Account(ioAddr) + accountMeta, _, err := svr.coreService.Account(ioAddr.String()) if err != nil { return nil, err } @@ -611,7 +611,7 @@ func (svr *web3Handler) getCode(in *gjson.Result) (interface{}, error) { if err != nil { return nil, err } - accountMeta, _, err := svr.coreService.Account(ioAddr) + accountMeta, _, err := svr.coreService.Account(ioAddr.String()) if err != nil { return nil, err } diff --git a/api/web3server_integrity_test.go b/api/web3server_integrity_test.go index 65dab79027..c018871182 100644 --- a/api/web3server_integrity_test.go +++ b/api/web3server_integrity_test.go @@ -252,11 +252,9 @@ func getBlockByNumber(t *testing.T, handler *hTTPHandler) { func getBalance(t *testing.T, handler *hTTPHandler) { require := require.New(t) result := serveTestHTTP(require, handler, "eth_getBalance", `["0xDa7e12Ef57c236a06117c5e0d04a228e7181CF36"]`) - ans, ok := new(big.Int).SetString("9999999999999999999999999991", 10) - require.True(ok) actual, ok := result.(string) require.True(ok) - ans, ok = new(big.Int).SetString("9999999999999999999999999991", 10) + ans, ok := new(big.Int).SetString("9999999999999999999999999991", 10) require.True(ok) require.Equal("0x"+fmt.Sprintf("%x", ans), actual) } diff --git a/api/web3server_utils.go b/api/web3server_utils.go index 6b07df3c63..76165c0d4e 100644 --- a/api/web3server_utils.go +++ b/api/web3server_utils.go @@ -193,11 +193,7 @@ func (svr *web3Handler) checkContractAddr(to string) (bool, error) { if to == "" { return true, nil } - ioAddr, err := address.FromString(to) - if err != nil { - return false, err - } - accountMeta, _, err := svr.coreService.Account(ioAddr) + accountMeta, _, err := svr.coreService.Account(to) if err != nil { return false, err } diff --git a/go.mod b/go.mod index 7bc3c3af2c..b2e8da2964 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/iotexproject/go-fsm v1.0.0 github.com/iotexproject/go-p2p v0.3.7-0.20240327085559-423bb9cc8f5f github.com/iotexproject/go-pkgs v0.1.13 - github.com/iotexproject/iotex-address v0.2.8 + github.com/iotexproject/iotex-address v0.2.9-0.20241020230354-523f3f51b5f9 github.com/iotexproject/iotex-antenna-go/v2 v2.5.1 github.com/iotexproject/iotex-election v0.3.5-0.20210611041425-20ddf674363d github.com/iotexproject/iotex-proto v0.6.4 diff --git a/go.sum b/go.sum index 9e3e683b0a..a8c8e889bf 100644 --- a/go.sum +++ b/go.sum @@ -1178,8 +1178,8 @@ github.com/iotexproject/go-pkgs v0.1.13 h1:bK48DVenkfYkC4TRoqL77RLFRBE1MUfscCW49 github.com/iotexproject/go-pkgs v0.1.13/go.mod h1:t5X9kQ1VL5H+L+DC5GmohXnFKlcxaTcRnIBBuydcsTQ= github.com/iotexproject/iotex-address v0.2.4/go.mod h1:K78yPSMB4K7gF/iQ7djT1amph0RBrP3rSkFfH7gNG70= github.com/iotexproject/iotex-address v0.2.7/go.mod h1:K78yPSMB4K7gF/iQ7djT1amph0RBrP3rSkFfH7gNG70= -github.com/iotexproject/iotex-address v0.2.8 h1:jaTR5pZe/ljiYW4OqHl9NKPs0h1o91Gi6FILOTaBCXw= -github.com/iotexproject/iotex-address v0.2.8/go.mod h1:K78yPSMB4K7gF/iQ7djT1amph0RBrP3rSkFfH7gNG70= +github.com/iotexproject/iotex-address v0.2.9-0.20241020230354-523f3f51b5f9 h1:WeEbCkm4t2I3RxsRZXzHUkDGE1VlGvDUIMR3S3nJFLw= +github.com/iotexproject/iotex-address v0.2.9-0.20241020230354-523f3f51b5f9/go.mod h1:LEpPNy+jJbMKaQ6XLEPBUkoyyllHgW9js1YdixMQL9k= github.com/iotexproject/iotex-antenna-go/v2 v2.5.1-0.20210604061028-2c2056a5bfdb/go.mod h1:NqFzRL8RtA3xfXGpYbs0IY71HDiD6Dh2hD9iYngKLIU= github.com/iotexproject/iotex-antenna-go/v2 v2.5.1 h1:Z7X0qXxc/4hSSE3koBaFRpLAdiD6MlCxKbn7iAdI+xQ= github.com/iotexproject/iotex-antenna-go/v2 v2.5.1/go.mod h1:8pDZcM45M0gY6jm3PoM20rzoD2Z0vg3Hg64RS4c3qx0= diff --git a/test/mock/mock_apicoreservice/mock_apicoreservice.go b/test/mock/mock_apicoreservice/mock_apicoreservice.go index 49890a041d..d51752b84c 100644 --- a/test/mock/mock_apicoreservice/mock_apicoreservice.go +++ b/test/mock/mock_apicoreservice/mock_apicoreservice.go @@ -48,9 +48,9 @@ func (m *MockCoreService) EXPECT() *MockCoreServiceMockRecorder { } // Account mocks base method. -func (m *MockCoreService) Account(addr address.Address) (*iotextypes.AccountMeta, *iotextypes.BlockIdentifier, error) { +func (m *MockCoreService) Account(arg0 string) (*iotextypes.AccountMeta, *iotextypes.BlockIdentifier, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Account", addr) + ret := m.ctrl.Call(m, "Account", arg0) ret0, _ := ret[0].(*iotextypes.AccountMeta) ret1, _ := ret[1].(*iotextypes.BlockIdentifier) ret2, _ := ret[2].(error) @@ -58,9 +58,9 @@ func (m *MockCoreService) Account(addr address.Address) (*iotextypes.AccountMeta } // Account indicates an expected call of Account. -func (mr *MockCoreServiceMockRecorder) Account(addr interface{}) *gomock.Call { +func (mr *MockCoreServiceMockRecorder) Account(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Account", reflect.TypeOf((*MockCoreService)(nil).Account), addr) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Account", reflect.TypeOf((*MockCoreService)(nil).Account), arg0) } // Action mocks base method.