From fee480193e2a562e92ef0d12dd0726e02bf74d08 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 13 Mar 2023 21:59:16 -0700 Subject: [PATCH] feat: apply gateway lookback limit to eth API lookback This change: 1. Introduces new "limited" API endpoints for EthGetTransactionByHash and EthGetTransactionReceipt that accept lookback-limits. 2. Implements the gateway version of these API endpoints by calling the limited variants with the default message search lookback limit. fixes #10412 --- api/api_full.go | 2 + api/mocks/mock_full.go | 30 +++++++ api/proxy_gen.go | 26 ++++++ build/openrpc/full.json.gz | Bin 33618 -> 33805 bytes build/openrpc/gateway.json.gz | Bin 9079 -> 9078 bytes build/openrpc/miner.json.gz | Bin 15864 -> 15865 bytes build/openrpc/worker.json.gz | Bin 5225 -> 5223 bytes documentation/en/api-v1-unstable-methods.md | 89 ++++++++++++++++++++ gateway/node.go | 4 +- gateway/proxy_eth.go | 4 +- node/impl/full/dummy.go | 9 ++ node/impl/full/eth.go | 13 ++- 12 files changed, 171 insertions(+), 6 deletions(-) diff --git a/api/api_full.go b/api/api_full.go index 37e197ab3a1..6ce061865ef 100644 --- a/api/api_full.go +++ b/api/api_full.go @@ -797,10 +797,12 @@ type FullNode interface { EthGetBlockByHash(ctx context.Context, blkHash ethtypes.EthHash, fullTxInfo bool) (ethtypes.EthBlock, error) //perm:read EthGetBlockByNumber(ctx context.Context, blkNum string, fullTxInfo bool) (ethtypes.EthBlock, error) //perm:read EthGetTransactionByHash(ctx context.Context, txHash *ethtypes.EthHash) (*ethtypes.EthTx, error) //perm:read + EthGetTransactionByHashLimited(ctx context.Context, txHash *ethtypes.EthHash, limit abi.ChainEpoch) (*ethtypes.EthTx, error) //perm:read EthGetTransactionHashByCid(ctx context.Context, cid cid.Cid) (*ethtypes.EthHash, error) //perm:read EthGetMessageCidByTransactionHash(ctx context.Context, txHash *ethtypes.EthHash) (*cid.Cid, error) //perm:read EthGetTransactionCount(ctx context.Context, sender ethtypes.EthAddress, blkOpt string) (ethtypes.EthUint64, error) //perm:read EthGetTransactionReceipt(ctx context.Context, txHash ethtypes.EthHash) (*EthTxReceipt, error) //perm:read + EthGetTransactionReceiptLimited(ctx context.Context, txHash ethtypes.EthHash, limit abi.ChainEpoch) (*EthTxReceipt, error) //perm:read EthGetTransactionByBlockHashAndIndex(ctx context.Context, blkHash ethtypes.EthHash, txIndex ethtypes.EthUint64) (ethtypes.EthTx, error) //perm:read EthGetTransactionByBlockNumberAndIndex(ctx context.Context, blkNum ethtypes.EthUint64, txIndex ethtypes.EthUint64) (ethtypes.EthTx, error) //perm:read diff --git a/api/mocks/mock_full.go b/api/mocks/mock_full.go index fc7ff558834..83efbffdb27 100644 --- a/api/mocks/mock_full.go +++ b/api/mocks/mock_full.go @@ -1296,6 +1296,21 @@ func (mr *MockFullNodeMockRecorder) EthGetTransactionByHash(arg0, arg1 interface return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EthGetTransactionByHash", reflect.TypeOf((*MockFullNode)(nil).EthGetTransactionByHash), arg0, arg1) } +// EthGetTransactionByHashLimited mocks base method. +func (m *MockFullNode) EthGetTransactionByHashLimited(arg0 context.Context, arg1 *ethtypes.EthHash, arg2 abi.ChainEpoch) (*ethtypes.EthTx, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "EthGetTransactionByHashLimited", arg0, arg1, arg2) + ret0, _ := ret[0].(*ethtypes.EthTx) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EthGetTransactionByHashLimited indicates an expected call of EthGetTransactionByHashLimited. +func (mr *MockFullNodeMockRecorder) EthGetTransactionByHashLimited(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EthGetTransactionByHashLimited", reflect.TypeOf((*MockFullNode)(nil).EthGetTransactionByHashLimited), arg0, arg1, arg2) +} + // EthGetTransactionCount mocks base method. func (m *MockFullNode) EthGetTransactionCount(arg0 context.Context, arg1 ethtypes.EthAddress, arg2 string) (ethtypes.EthUint64, error) { m.ctrl.T.Helper() @@ -1341,6 +1356,21 @@ func (mr *MockFullNodeMockRecorder) EthGetTransactionReceipt(arg0, arg1 interfac return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EthGetTransactionReceipt", reflect.TypeOf((*MockFullNode)(nil).EthGetTransactionReceipt), arg0, arg1) } +// EthGetTransactionReceiptLimited mocks base method. +func (m *MockFullNode) EthGetTransactionReceiptLimited(arg0 context.Context, arg1 ethtypes.EthHash, arg2 abi.ChainEpoch) (*api.EthTxReceipt, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "EthGetTransactionReceiptLimited", arg0, arg1, arg2) + ret0, _ := ret[0].(*api.EthTxReceipt) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EthGetTransactionReceiptLimited indicates an expected call of EthGetTransactionReceiptLimited. +func (mr *MockFullNodeMockRecorder) EthGetTransactionReceiptLimited(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EthGetTransactionReceiptLimited", reflect.TypeOf((*MockFullNode)(nil).EthGetTransactionReceiptLimited), arg0, arg1, arg2) +} + // EthMaxPriorityFeePerGas mocks base method. func (m *MockFullNode) EthMaxPriorityFeePerGas(arg0 context.Context) (ethtypes.EthBigInt, error) { m.ctrl.T.Helper() diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 24b11df3f16..dbae138a929 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -290,12 +290,16 @@ type FullNodeMethods struct { EthGetTransactionByHash func(p0 context.Context, p1 *ethtypes.EthHash) (*ethtypes.EthTx, error) `perm:"read"` + EthGetTransactionByHashLimited func(p0 context.Context, p1 *ethtypes.EthHash, p2 abi.ChainEpoch) (*ethtypes.EthTx, error) `perm:"read"` + EthGetTransactionCount func(p0 context.Context, p1 ethtypes.EthAddress, p2 string) (ethtypes.EthUint64, error) `perm:"read"` EthGetTransactionHashByCid func(p0 context.Context, p1 cid.Cid) (*ethtypes.EthHash, error) `perm:"read"` EthGetTransactionReceipt func(p0 context.Context, p1 ethtypes.EthHash) (*EthTxReceipt, error) `perm:"read"` + EthGetTransactionReceiptLimited func(p0 context.Context, p1 ethtypes.EthHash, p2 abi.ChainEpoch) (*EthTxReceipt, error) `perm:"read"` + EthMaxPriorityFeePerGas func(p0 context.Context) (ethtypes.EthBigInt, error) `perm:"read"` EthNewBlockFilter func(p0 context.Context) (ethtypes.EthFilterID, error) `perm:"write"` @@ -2274,6 +2278,17 @@ func (s *FullNodeStub) EthGetTransactionByHash(p0 context.Context, p1 *ethtypes. return nil, ErrNotSupported } +func (s *FullNodeStruct) EthGetTransactionByHashLimited(p0 context.Context, p1 *ethtypes.EthHash, p2 abi.ChainEpoch) (*ethtypes.EthTx, error) { + if s.Internal.EthGetTransactionByHashLimited == nil { + return nil, ErrNotSupported + } + return s.Internal.EthGetTransactionByHashLimited(p0, p1, p2) +} + +func (s *FullNodeStub) EthGetTransactionByHashLimited(p0 context.Context, p1 *ethtypes.EthHash, p2 abi.ChainEpoch) (*ethtypes.EthTx, error) { + return nil, ErrNotSupported +} + func (s *FullNodeStruct) EthGetTransactionCount(p0 context.Context, p1 ethtypes.EthAddress, p2 string) (ethtypes.EthUint64, error) { if s.Internal.EthGetTransactionCount == nil { return *new(ethtypes.EthUint64), ErrNotSupported @@ -2307,6 +2322,17 @@ func (s *FullNodeStub) EthGetTransactionReceipt(p0 context.Context, p1 ethtypes. return nil, ErrNotSupported } +func (s *FullNodeStruct) EthGetTransactionReceiptLimited(p0 context.Context, p1 ethtypes.EthHash, p2 abi.ChainEpoch) (*EthTxReceipt, error) { + if s.Internal.EthGetTransactionReceiptLimited == nil { + return nil, ErrNotSupported + } + return s.Internal.EthGetTransactionReceiptLimited(p0, p1, p2) +} + +func (s *FullNodeStub) EthGetTransactionReceiptLimited(p0 context.Context, p1 ethtypes.EthHash, p2 abi.ChainEpoch) (*EthTxReceipt, error) { + return nil, ErrNotSupported +} + func (s *FullNodeStruct) EthMaxPriorityFeePerGas(p0 context.Context) (ethtypes.EthBigInt, error) { if s.Internal.EthMaxPriorityFeePerGas == nil { return *new(ethtypes.EthBigInt), ErrNotSupported diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index aec3cf7b3efcab1a5f8c0a3478f095ee4bdf20af..d15fd5b6deee8f0610a4432f583e1c10407d87a5 100644 GIT binary patch delta 33464 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 diff --git a/build/openrpc/gateway.json.gz b/build/openrpc/gateway.json.gz index 575f79a1a7cd242d8649fef67c3dc5c3aa978551..06583cf0624ca65bb3fc9d67ddd6a3cd34bc7e71 100644 GIT binary patch delta 6151 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 ZgTDIk@Z;hC4Fv!I|Nomr(i%eJ0RVR^#V!B< delta 6153 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 bmmhRT>chj2hyNE000960jJJ`@LgN7dHjUxP diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 5ea8edb34ddbc254334f6f50535476feee74f1ff..1a4946ee049ec852b606f727107f93a941c79635 100644 GIT binary patch delta 12496 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 ajGr7CkB?s-|6c$A0RR88!|37a5(5C*Y%U}K delta 12494 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 diff --git a/build/openrpc/worker.json.gz b/build/openrpc/worker.json.gz index ab8a27e92c9bf117a0b679f62a3025213f390801..0e0734c8db511306cf9dbc9137cf74f26f2028df 100644 GIT binary patch delta 2881 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 delta 2911 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 JA4RP$0Ra9Ftt9{e diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index aedfbfce014..8d95c7e0cd2 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -91,9 +91,11 @@ * [EthGetTransactionByBlockHashAndIndex](#EthGetTransactionByBlockHashAndIndex) * [EthGetTransactionByBlockNumberAndIndex](#EthGetTransactionByBlockNumberAndIndex) * [EthGetTransactionByHash](#EthGetTransactionByHash) + * [EthGetTransactionByHashLimited](#EthGetTransactionByHashLimited) * [EthGetTransactionCount](#EthGetTransactionCount) * [EthGetTransactionHashByCid](#EthGetTransactionHashByCid) * [EthGetTransactionReceipt](#EthGetTransactionReceipt) + * [EthGetTransactionReceiptLimited](#EthGetTransactionReceiptLimited) * [EthMaxPriorityFeePerGas](#EthMaxPriorityFeePerGas) * [EthNewBlockFilter](#EthNewBlockFilter) * [EthNewFilter](#EthNewFilter) @@ -2810,6 +2812,45 @@ Response: } ``` +### EthGetTransactionByHashLimited + + +Perms: read + +Inputs: +```json +[ + "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + 10101 +] +``` + +Response: +```json +{ + "chainId": "0x5", + "nonce": "0x5", + "hash": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "blockHash": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "blockNumber": "0x5", + "transactionIndex": "0x5", + "from": "0x5cbeecf99d3fdb3f25e309cc264f240bb0664031", + "to": "0x5cbeecf99d3fdb3f25e309cc264f240bb0664031", + "value": "0x0", + "type": "0x5", + "input": "0x07", + "gas": "0x5", + "maxFeePerGas": "0x0", + "maxPriorityFeePerGas": "0x0", + "accessList": [ + "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e" + ], + "v": "0x0", + "r": "0x0", + "s": "0x0" +} +``` + ### EthGetTransactionCount @@ -2888,6 +2929,54 @@ Response: } ``` +### EthGetTransactionReceiptLimited + + +Perms: read + +Inputs: +```json +[ + "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + 10101 +] +``` + +Response: +```json +{ + "transactionHash": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "transactionIndex": "0x5", + "blockHash": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "blockNumber": "0x5", + "from": "0x5cbeecf99d3fdb3f25e309cc264f240bb0664031", + "to": "0x5cbeecf99d3fdb3f25e309cc264f240bb0664031", + "root": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "status": "0x5", + "contractAddress": "0x5cbeecf99d3fdb3f25e309cc264f240bb0664031", + "cumulativeGasUsed": "0x5", + "gasUsed": "0x5", + "effectiveGasPrice": "0x0", + "logsBloom": "0x07", + "logs": [ + { + "address": "0x5cbeecf99d3fdb3f25e309cc264f240bb0664031", + "data": "0x07", + "topics": [ + "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e" + ], + "removed": true, + "logIndex": "0x5", + "transactionIndex": "0x5", + "transactionHash": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "blockHash": "0x37690cfec6c1bf4c3b9288c7a5d783e98731e90b0a4c177c2a374c7a9427355e", + "blockNumber": "0x5" + } + ], + "type": "0x5" +} +``` + ### EthMaxPriorityFeePerGas diff --git a/gateway/node.go b/gateway/node.go index 494aa2dc87e..b263a75bdc6 100644 --- a/gateway/node.go +++ b/gateway/node.go @@ -101,11 +101,11 @@ type TargetAPI interface { EthGetBlockTransactionCountByHash(ctx context.Context, blkHash ethtypes.EthHash) (ethtypes.EthUint64, error) EthGetBlockByHash(ctx context.Context, blkHash ethtypes.EthHash, fullTxInfo bool) (ethtypes.EthBlock, error) EthGetBlockByNumber(ctx context.Context, blkNum string, fullTxInfo bool) (ethtypes.EthBlock, error) - EthGetTransactionByHash(ctx context.Context, txHash *ethtypes.EthHash) (*ethtypes.EthTx, error) + EthGetTransactionByHashLimited(ctx context.Context, txHash *ethtypes.EthHash, limit abi.ChainEpoch) (*ethtypes.EthTx, error) EthGetTransactionHashByCid(ctx context.Context, cid cid.Cid) (*ethtypes.EthHash, error) EthGetMessageCidByTransactionHash(ctx context.Context, txHash *ethtypes.EthHash) (*cid.Cid, error) EthGetTransactionCount(ctx context.Context, sender ethtypes.EthAddress, blkOpt string) (ethtypes.EthUint64, error) - EthGetTransactionReceipt(ctx context.Context, txHash ethtypes.EthHash) (*api.EthTxReceipt, error) + EthGetTransactionReceiptLimited(ctx context.Context, txHash ethtypes.EthHash, limit abi.ChainEpoch) (*api.EthTxReceipt, error) EthGetTransactionByBlockHashAndIndex(ctx context.Context, blkHash ethtypes.EthHash, txIndex ethtypes.EthUint64) (ethtypes.EthTx, error) EthGetTransactionByBlockNumberAndIndex(ctx context.Context, blkNum ethtypes.EthUint64, txIndex ethtypes.EthUint64) (ethtypes.EthTx, error) EthGetCode(ctx context.Context, address ethtypes.EthAddress, blkOpt string) (ethtypes.EthBytes, error) diff --git a/gateway/proxy_eth.go b/gateway/proxy_eth.go index e6f266d550f..7e1659f0873 100644 --- a/gateway/proxy_eth.go +++ b/gateway/proxy_eth.go @@ -149,7 +149,7 @@ func (gw *Node) EthGetTransactionByHash(ctx context.Context, txHash *ethtypes.Et return nil, err } - return gw.target.EthGetTransactionByHash(ctx, txHash) + return gw.target.EthGetTransactionByHashLimited(ctx, txHash, gw.stateWaitLookbackLimit) } func (gw *Node) EthGetTransactionHashByCid(ctx context.Context, cid cid.Cid) (*ethtypes.EthHash, error) { @@ -185,7 +185,7 @@ func (gw *Node) EthGetTransactionReceipt(ctx context.Context, txHash ethtypes.Et return nil, err } - return gw.target.EthGetTransactionReceipt(ctx, txHash) + return gw.target.EthGetTransactionReceiptLimited(ctx, txHash, gw.stateWaitLookbackLimit) } func (gw *Node) EthGetCode(ctx context.Context, address ethtypes.EthAddress, blkOpt string) (ethtypes.EthBytes, error) { diff --git a/node/impl/full/dummy.go b/node/impl/full/dummy.go index d86b02d4b8b..a4a125d6f9c 100644 --- a/node/impl/full/dummy.go +++ b/node/impl/full/dummy.go @@ -8,6 +8,7 @@ import ( "github.com/filecoin-project/go-address" "github.com/filecoin-project/go-jsonrpc" + "github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/chain/types/ethtypes" @@ -57,6 +58,10 @@ func (e *EthModuleDummy) EthGetTransactionByHash(ctx context.Context, txHash *et return nil, ErrModuleDisabled } +func (e *EthModuleDummy) EthGetTransactionByHashLimited(ctx context.Context, txHash *ethtypes.EthHash, limit abi.ChainEpoch) (*ethtypes.EthTx, error) { + return nil, ErrModuleDisabled +} + func (e *EthModuleDummy) EthGetTransactionCount(ctx context.Context, sender ethtypes.EthAddress, blkOpt string) (ethtypes.EthUint64, error) { return 0, ErrModuleDisabled } @@ -65,6 +70,10 @@ func (e *EthModuleDummy) EthGetTransactionReceipt(ctx context.Context, txHash et return nil, ErrModuleDisabled } +func (e *EthModuleDummy) EthGetTransactionReceiptLimited(ctx context.Context, txHash ethtypes.EthHash, limit abi.ChainEpoch) (*api.EthTxReceipt, error) { + return nil, ErrModuleDisabled +} + func (e *EthModuleDummy) EthGetTransactionByBlockHashAndIndex(ctx context.Context, blkHash ethtypes.EthHash, txIndex ethtypes.EthUint64) (ethtypes.EthTx, error) { return ethtypes.EthTx{}, ErrModuleDisabled } diff --git a/node/impl/full/eth.go b/node/impl/full/eth.go index 64592a4c6cd..266ad9ce908 100644 --- a/node/impl/full/eth.go +++ b/node/impl/full/eth.go @@ -54,10 +54,12 @@ type EthModuleAPI interface { EthGetBlockByHash(ctx context.Context, blkHash ethtypes.EthHash, fullTxInfo bool) (ethtypes.EthBlock, error) EthGetBlockByNumber(ctx context.Context, blkNum string, fullTxInfo bool) (ethtypes.EthBlock, error) EthGetTransactionByHash(ctx context.Context, txHash *ethtypes.EthHash) (*ethtypes.EthTx, error) + EthGetTransactionByHashLimited(ctx context.Context, txHash *ethtypes.EthHash, limit abi.ChainEpoch) (*ethtypes.EthTx, error) EthGetMessageCidByTransactionHash(ctx context.Context, txHash *ethtypes.EthHash) (*cid.Cid, error) EthGetTransactionHashByCid(ctx context.Context, cid cid.Cid) (*ethtypes.EthHash, error) EthGetTransactionCount(ctx context.Context, sender ethtypes.EthAddress, blkOpt string) (ethtypes.EthUint64, error) EthGetTransactionReceipt(ctx context.Context, txHash ethtypes.EthHash) (*api.EthTxReceipt, error) + EthGetTransactionReceiptLimited(ctx context.Context, txHash ethtypes.EthHash, limit abi.ChainEpoch) (*api.EthTxReceipt, error) EthGetCode(ctx context.Context, address ethtypes.EthAddress, blkOpt string) (ethtypes.EthBytes, error) EthGetStorageAt(ctx context.Context, address ethtypes.EthAddress, position ethtypes.EthBytes, blkParam string) (ethtypes.EthBytes, error) EthGetBalance(ctx context.Context, address ethtypes.EthAddress, blkParam string) (ethtypes.EthBigInt, error) @@ -89,8 +91,6 @@ type EthEventAPI interface { var ( _ EthModuleAPI = *new(api.FullNode) _ EthEventAPI = *new(api.FullNode) - - _ EthModuleAPI = *new(api.Gateway) ) // EthModule provides the default implementation of the standard Ethereum JSON-RPC API. @@ -278,6 +278,11 @@ func (a *EthModule) EthGetBlockByNumber(ctx context.Context, blkParam string, fu } func (a *EthModule) EthGetTransactionByHash(ctx context.Context, txHash *ethtypes.EthHash) (*ethtypes.EthTx, error) { + return a.EthGetTransactionByHashLimited(ctx, txHash, api.LookbackNoLimit) + +} + +func (a *EthModule) EthGetTransactionByHashLimited(ctx context.Context, txHash *ethtypes.EthHash, limit abi.ChainEpoch) (*ethtypes.EthTx, error) { // Ethereum's behavior is to return null when the txHash is invalid, so we use nil to check if txHash is valid if txHash == nil { return nil, nil @@ -409,6 +414,10 @@ func (a *EthModule) EthGetTransactionCount(ctx context.Context, sender ethtypes. } func (a *EthModule) EthGetTransactionReceipt(ctx context.Context, txHash ethtypes.EthHash) (*api.EthTxReceipt, error) { + return a.EthGetTransactionReceiptLimited(ctx, txHash, api.LookbackNoLimit) +} + +func (a *EthModule) EthGetTransactionReceiptLimited(ctx context.Context, txHash ethtypes.EthHash, limit abi.ChainEpoch) (*api.EthTxReceipt, error) { c, err := a.EthTxHashManager.TransactionHashLookup.GetCidFromHash(txHash) if err != nil { log.Debug("could not find transaction hash %s in lookup table", txHash.String())