diff --git a/itests/eth_config_test.go b/itests/eth_config_test.go index 5ce9516d2..8b74d011a 100644 --- a/itests/eth_config_test.go +++ b/itests/eth_config_test.go @@ -7,9 +7,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/chain/types/ethtypes" "github.com/filecoin-project/lotus/itests/kit" + "github.com/filecoin-project/lotus/node/impl/full" ) func TestEthFilterAPIDisabledViaConfig(t *testing.T) { @@ -22,41 +22,41 @@ func TestEthFilterAPIDisabledViaConfig(t *testing.T) { _, err := client.EthNewPendingTransactionFilter(ctx) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthGetLogs(ctx, ðtypes.EthFilterSpec{}) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthGetFilterChanges(ctx, ethtypes.EthFilterID{}) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthGetFilterLogs(ctx, ethtypes.EthFilterID{}) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthNewFilter(ctx, ðtypes.EthFilterSpec{}) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthNewBlockFilter(ctx) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthNewPendingTransactionFilter(ctx) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthUninstallFilter(ctx, ethtypes.EthFilterID{}) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) - _, err = client.EthSubscribe(ctx, []byte{}) + _, err = client.EthSubscribe(ctx, []byte("{}")) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) _, err = client.EthUnsubscribe(ctx, ethtypes.EthSubscriptionID{}) require.NotNil(t, err) - require.Equal(t, err.Error(), api.ErrNotSupported.Error()) + require.Equal(t, err.Error(), full.ErrModuleDisabled.Error()) } diff --git a/node/builder_chain.go b/node/builder_chain.go index 6f1ffd1da..3879ea3e3 100644 --- a/node/builder_chain.go +++ b/node/builder_chain.go @@ -261,10 +261,14 @@ func ConfigFullNode(c interface{}) Option { // in lite-mode Eth api is provided by gateway ApplyIf(isFullNode, - Override(new(full.EthEventAPI), modules.EthEventAPI(cfg.Fevm)), - - If(cfg.Fevm.EnableEthRPC, Override(new(full.EthModuleAPI), modules.EthModuleAPI(cfg.Fevm))), - If(!cfg.Fevm.EnableEthRPC, Override(new(full.EthModuleAPI), &full.EthModuleDummy{})), + If(cfg.Fevm.EnableEthRPC, + Override(new(full.EthModuleAPI), modules.EthModuleAPI(cfg.Fevm)), + Override(new(full.EthEventAPI), modules.EthEventAPI(cfg.Fevm)), + ), + If(!cfg.Fevm.EnableEthRPC, + Override(new(full.EthModuleAPI), &full.EthModuleDummy{}), + Override(new(full.EthEventAPI), &full.EthModuleDummy{}), + ), ), ) } diff --git a/node/impl/full/dummy.go b/node/impl/full/dummy.go index 182772189..c1c6ea975 100644 --- a/node/impl/full/dummy.go +++ b/node/impl/full/dummy.go @@ -6,6 +6,8 @@ import ( "github.com/ipfs/go-cid" + "github.com/filecoin-project/go-jsonrpc" + "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/chain/types/ethtypes" ) @@ -122,4 +124,41 @@ func (e *EthModuleDummy) Web3ClientVersion(ctx context.Context) (string, error) return "", ErrModuleDisabled } +func (e *EthModuleDummy) EthGetLogs(ctx context.Context, filter *ethtypes.EthFilterSpec) (*ethtypes.EthFilterResult, error) { + return ðtypes.EthFilterResult{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthGetFilterChanges(ctx context.Context, id ethtypes.EthFilterID) (*ethtypes.EthFilterResult, error) { + return ðtypes.EthFilterResult{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthGetFilterLogs(ctx context.Context, id ethtypes.EthFilterID) (*ethtypes.EthFilterResult, error) { + return ðtypes.EthFilterResult{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthNewFilter(ctx context.Context, filter *ethtypes.EthFilterSpec) (ethtypes.EthFilterID, error) { + return ethtypes.EthFilterID{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthNewBlockFilter(ctx context.Context) (ethtypes.EthFilterID, error) { + return ethtypes.EthFilterID{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthNewPendingTransactionFilter(ctx context.Context) (ethtypes.EthFilterID, error) { + return ethtypes.EthFilterID{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthUninstallFilter(ctx context.Context, id ethtypes.EthFilterID) (bool, error) { + return false, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthSubscribe(ctx context.Context, params jsonrpc.RawParams) (ethtypes.EthSubscriptionID, error) { + return ethtypes.EthSubscriptionID{}, ErrModuleDisabled +} + +func (e *EthModuleDummy) EthUnsubscribe(ctx context.Context, id ethtypes.EthSubscriptionID) (bool, error) { + return false, ErrModuleDisabled +} + var _ EthModuleAPI = &EthModuleDummy{} +var _ EthEventAPI = &EthModuleDummy{} diff --git a/node/impl/full/eth.go b/node/impl/full/eth.go index ef68b02e6..e0365b7db 100644 --- a/node/impl/full/eth.go +++ b/node/impl/full/eth.go @@ -1148,12 +1148,14 @@ func (e *EthEvent) EthSubscribe(ctx context.Context, p jsonrpc.RawParams) (ethty } var addresses []address.Address - for _, ea := range params.Params.Address { - a, err := ea.ToFilecoinAddress() - if err != nil { - return ethtypes.EthSubscriptionID{}, xerrors.Errorf("invalid address %x", ea) + if params.Params != nil { + for _, ea := range params.Params.Address { + a, err := ea.ToFilecoinAddress() + if err != nil { + return ethtypes.EthSubscriptionID{}, xerrors.Errorf("invalid address %x", ea) + } + addresses = append(addresses, a) } - addresses = append(addresses, a) } f, err := e.EventFilterManager.Install(ctx, -1, -1, cid.Undef, addresses, keys)