Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement nv23 #6375

Merged
merged 87 commits into from
Jul 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
643724f
fix: api: skip evm events where we no longer have the associated txn
simlecode Jun 13, 2024
4103f45
chore: update mainnet bootstrap
jokewes Jun 13, 2024
6abf506
chore: add log
jokewes Jun 13, 2024
959213e
opt: migrate config
jokewes Jun 13, 2024
b7537ec
Merge pull request #6347 from jokewes/chore/update-boostrap
simlecode Jun 13, 2024
f271234
Merge pull request #6346 from filecoin-project/fix/empty-eth-hash-gc
simlecode Jun 13, 2024
92c5a10
fix: api: return the correct block gas limit in the EthAPI
simlecode Jun 13, 2024
104f15b
Merge pull request #6348 from jokewes/opt/migrate-config
simlecode Jun 13, 2024
a95d789
Merge pull request #6349 from filecoin-project/fix/incorrect-gas-limit
simlecode Jun 13, 2024
73bd245
fix : ETH RPC API: eth subscribe tipsets API should only return tipse…
simlecode Jun 13, 2024
11a6323
opt: optimize FVM lanes a bit
argse Jun 13, 2024
474589d
Merge pull request #6350 from argse/opt/fvm-lane
simlecode Jun 13, 2024
a469ae5
Merge pull request #6351 from filecoin-project/fix/eth-subscribe-off-…
simlecode Jun 13, 2024
1e3dc2e
fix: pass timestamp through ExecuteMessageParams
simlecode Jun 13, 2024
df9cf88
fix(events): check for sync-in-progress
simlecode Jun 13, 2024
cb12a73
Merge pull request #6352 from filecoin-project/fix/miss-timestamp
simlecode Jun 13, 2024
f390c95
Merge pull request #6353 from filecoin-project/fix/sync-in-progress-e…
simlecode Jun 13, 2024
035c6bb
chore: add v14 builtin actors
simlecode Jun 18, 2024
49cd4cc
chore: update ffi
simlecode Jun 18, 2024
a1e18c4
feat: Skeleton for nv23
simlecode Jun 18, 2024
79f324f
chore: fix lint
simlecode Jun 18, 2024
c1d355f
fix: bootstrap: Update list to support both IPv4 and IPv6
argse Jun 18, 2024
d6ad3ad
Merge pull request #6355 from argse/fix/update-bootstrap-dns
simlecode Jun 18, 2024
868b0c7
Merge pull request #6354 from filecoin-project/feat/skeleton-nv23
simlecode Jun 18, 2024
9c8238e
fix: migrate config failed
simlecode Jun 18, 2024
d6bf149
chore: fix test
simlecode Jun 18, 2024
bf830c7
Merge pull request #6356 from filecoin-project/fix/migrate-config-failed
simlecode Jun 18, 2024
bda58fe
feat: Ignore market balance after nv23
simlecode Jun 19, 2024
89a17a7
chore: fix lint
simlecode Jun 19, 2024
295773e
fix: not check nil
simlecode Jun 19, 2024
70ff456
Merge pull request #6357 from filecoin-project/feat/fip-065
simlecode Jun 19, 2024
f852d90
feat: libp2p: stream cleanup
simlecode Jun 19, 2024
a8d2410
Merge pull request #6358 from filecoin-project/feat/limit-stream-dead…
simlecode Jun 19, 2024
8789683
chore: update drand
simlecode Jun 20, 2024
661dbc7
chore: use v9 miner types
simlecode Jun 20, 2024
fec152a
Merge pull request #6359 from filecoin-project/chore/update-drand
simlecode Jun 20, 2024
08d3ae2
fix: hello: avoid dialing when fetching hello tipset
simlecode Jun 20, 2024
f8fa844
Merge pull request #6360 from filecoin-project/chore/miner-type-v9
simlecode Jun 20, 2024
e5325e8
Merge pull request #6361 from filecoin-project/fix/hello-no-dial
simlecode Jun 20, 2024
3f207f0
chore: Remove stray C dependency
simlecode Jun 20, 2024
07d71df
Merge pull request #6362 from filecoin-project/chore/types_no_cgo
simlecode Jun 20, 2024
b2e32e8
feat: Support Homestead and EIP-155 Ethereum transactions
simlecode Jun 20, 2024
5fb1bf1
chore: fix lint
simlecode Jun 20, 2024
40d82bb
chore: make compatible-all
simlecode Jun 21, 2024
f1b346f
chore: make api-gen
simlecode Jun 21, 2024
4c05025
Merge pull request #6363 from filecoin-project/feat/legacy-homestead-tx
simlecode Jun 21, 2024
0b3efb4
feat: Add trace transaction API
simlecode Jun 21, 2024
85a2cec
fix: ETH Call should use the parent state root of the subsequent tipset
simlecode Jun 21, 2024
373f429
chore: fix lint
simlecode Jun 21, 2024
886dbab
Merge pull request #6364 from filecoin-project/fix/eth-call
simlecode Jun 21, 2024
a0eeb61
chore: update ffi
simlecode Jun 24, 2024
39df735
chore: update go-state-types
simlecode Jun 24, 2024
8cc0cef
Merge pull request #6365 from filecoin-project/chore/dep
simlecode Jun 24, 2024
f967a66
fix: events: sqlite db improvements
simlecode Jun 24, 2024
c7e8fa7
Merge pull request #6366 from filecoin-project/fix/events-db-improvem…
simlecode Jun 24, 2024
936d433
feat: support safe param for eth_getBlockByNumber for 30 blocks
simlecode Jun 24, 2024
abeac91
Merge pull request #6367 from filecoin-project/feat/safeEthGetBlockBy…
simlecode Jun 24, 2024
eaba66c
chore: update ffi
simlecode Jun 28, 2024
141ba3f
fix: state: rename Actor.Address and only use it for f4 addresses
simlecode Jun 28, 2024
2d77a36
chore: update builtin actor
simlecode Jun 28, 2024
7453a55
fix: genesis preseal: get it working
simlecode Jun 28, 2024
78756f3
fix: bootstrap: remove discontinued bootstrap node
simlecode Jun 28, 2024
74d2adb
chore: testnet: update genesis network version for dev testnets
simlecode Jun 28, 2024
626c96f
fix: remove duplicate error check
simlecode Jun 28, 2024
aec2b7e
Merge pull request #6370 from filecoin-project/chore/transport
simlecode Jun 28, 2024
08adf12
pic f3 api methods from lotus
beeleelee Jul 2, 2024
a63923f
fix: update butterfly asset
simlecode Jul 2, 2024
88a4979
set f3 params #6371
beeleelee Jul 2, 2024
dc07156
chain api add f3 methods & pic lf3 from lotus as vf3 #6371
beeleelee Jul 3, 2024
3499160
set f3 params fields in config #6371
beeleelee Jul 3, 2024
4f7cfb9
without fx life circle context #6371
beeleelee Jul 3, 2024
a58dfe0
f3 pubsub topic #6371
beeleelee Jul 3, 2024
6c6c086
f3 params should not put in constants #6371
beeleelee Jul 3, 2024
f37e7a6
chore: fix lint
simlecode Jul 3, 2024
203746d
Merge pull request #6372 from filecoin-project/fix/bufferfly-asset
simlecode Jul 3, 2024
3fec014
fix: sanity check the to address of outgoing messages
simlecode Jul 3, 2024
835dcf9
Merge pull request #6373 from filecoin-project/fix/sanity-check-outgo…
simlecode Jul 3, 2024
ed61479
api refactor #6371
beeleelee Jul 4, 2024
fd77729
build f3 submodule #6371
beeleelee Jul 4, 2024
d9d4803
forcenet network params adjust #6371
beeleelee Jul 4, 2024
9b97ad7
make sure f3 is enabled before add it to pubsub #6371
beeleelee Jul 4, 2024
0fa19fc
handle not found situation #6371
beeleelee Jul 4, 2024
83e8a88
lint #6371
beeleelee Jul 5, 2024
7a19742
Merge pull request #6371 from beeleelee/feat/f3
simlecode Jul 5, 2024
2756179
chore: update network params
simlecode Jul 5, 2024
076f0f8
feat:ec: integrate F3 dynamic manifest
simlecode Jul 5, 2024
5faee07
Merge pull request #6374 from filecoin-project/chore/transport
simlecode Jul 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions app/node/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/filecoin-project/venus/app/submodule/dagservice"
"github.com/filecoin-project/venus/app/submodule/eth"
"github.com/filecoin-project/venus/app/submodule/f3"
"github.com/filecoin-project/venus/app/submodule/network"
"github.com/ipfs-force-community/sophon-auth/core"
"github.com/ipfs-force-community/sophon-auth/jwtclient"
Expand Down Expand Up @@ -103,9 +104,6 @@ func (b *Builder) build(ctx context.Context) (*Node, error) {
chainClock: b.chainClock,
}

// modules
nd.circulatiingSupplyCalculator = chain2.NewCirculatingSupplyCalculator(b.repo.Datastore(), b.genBlk.ParentStateRoot, b.repo.Config().NetworkParams.ForkUpgradeParam)

// services
nd.configModule = config2.NewConfigModule(b.repo)

Expand All @@ -114,7 +112,7 @@ func (b *Builder) build(ctx context.Context) (*Node, error) {
return nil, errors.Wrap(err, "failed to build node.blockstore")
}

nd.chain, err = chain.NewChainSubmodule(ctx, (*builder)(b), nd.circulatiingSupplyCalculator)
nd.chain, err = chain.NewChainSubmodule(ctx, (*builder)(b))
if err != nil {
return nil, errors.Wrap(err, "failed to build node.Chain")
}
Expand All @@ -129,7 +127,7 @@ func (b *Builder) build(ctx context.Context) (*Node, error) {
return nil, errors.Wrap(err, "failed to build node.dagservice")
}

nd.syncer, err = syncer.NewSyncerSubmodule(ctx, (*builder)(b), nd.blockstore, nd.network, nd.chain, nd.circulatiingSupplyCalculator)
nd.syncer, err = syncer.NewSyncerSubmodule(ctx, (*builder)(b), nd.blockstore, nd.network, nd.chain, nd.chain.CirculatingSupplyCalculator)
if err != nil {
return nil, errors.Wrap(err, "failed to build node.Syncer")
}
Expand All @@ -139,6 +137,11 @@ func (b *Builder) build(ctx context.Context) (*Node, error) {
return nil, errors.Wrap(err, "failed to build node.wallet")
}

nd.f3, err = f3.NewF3Submodule(ctx, nd.repo, nd.chain, nd.network, nd.wallet.API())
if err != nil {
return nil, errors.Wrap(err, "failed to build node.f3")
}

nd.mpool, err = mpool.NewMpoolSubmodule(ctx, (*builder)(b), nd.network, nd.chain, nd.wallet)
if err != nil {
return nil, errors.Wrap(err, "failed to build node.mpool")
Expand Down Expand Up @@ -194,6 +197,7 @@ func (b *Builder) build(ctx context.Context) (*Node, error) {
nd.common,
nd.eth,
nd.actorEvent,
nd.f3,
)

if err != nil {
Expand Down
2 changes: 2 additions & 0 deletions app/node/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/filecoin-project/venus/app/submodule/storagenetworking"
v1api "github.com/filecoin-project/venus/venus-shared/api/chain/v1"
"github.com/filecoin-project/venus/venus-shared/api/f3"
)

// Env is the environment for command API handlers.
Expand All @@ -26,6 +27,7 @@ type Env struct {
PaychAPI v1api.IPaychan
CommonAPI v1api.ICommon
EthAPI v1api.IETH
F3API f3.F3
}

var _ cmds.Environment = (*Env)(nil)
Expand Down
6 changes: 3 additions & 3 deletions app/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
configModule "github.com/filecoin-project/venus/app/submodule/config"
"github.com/filecoin-project/venus/app/submodule/dagservice"
"github.com/filecoin-project/venus/app/submodule/eth"
"github.com/filecoin-project/venus/app/submodule/f3"
"github.com/filecoin-project/venus/app/submodule/market"
"github.com/filecoin-project/venus/app/submodule/mining"
"github.com/filecoin-project/venus/app/submodule/mpool"
Expand All @@ -26,7 +27,6 @@ import (
"github.com/filecoin-project/venus/app/submodule/storagenetworking"
syncer2 "github.com/filecoin-project/venus/app/submodule/syncer"
"github.com/filecoin-project/venus/app/submodule/wallet"
"github.com/filecoin-project/venus/pkg/chain"
"github.com/filecoin-project/venus/pkg/clock"
"github.com/filecoin-project/venus/pkg/config"
_ "github.com/filecoin-project/venus/pkg/crypto/bls" // enable bls signatures
Expand Down Expand Up @@ -71,8 +71,6 @@ type Node struct {
// It contains all persistent artifacts of the filecoin node.
repo repo.Repo

// moduls
circulatiingSupplyCalculator chain.ICirculatingSupplyCalcualtor
//
// Core services
//
Expand All @@ -94,6 +92,7 @@ type Node struct {
wallet *wallet.WalletSubmodule
mpool *mpool.MessagePoolSubmodule
storageNetworking *storagenetworking.StorageNetworkingSubmodule
f3 *f3.F3Submodule

// paychannel and market
market *market.MarketSubmodule
Expand Down Expand Up @@ -381,6 +380,7 @@ func (node *Node) createServerEnv(ctx context.Context) *Env {
MarketAPI: node.market.API(),
CommonAPI: node.common,
EthAPI: node.eth.API(),
F3API: node.f3.API(),
}

return &env
Expand Down
1 change: 1 addition & 0 deletions app/node/rpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ func aliasETHAPI(rpcServer *jsonrpc.RPCServer) {

rpcServer.AliasMethod("trace_block", "Filecoin.EthTraceBlock")
rpcServer.AliasMethod("trace_replayBlockTransactions", "Filecoin.EthTraceReplayBlockTransactions")
rpcServer.AliasMethod("trace_transaction", "Filecoin.EthTraceTransaction")

rpcServer.AliasMethod("net_version", "Filecoin.NetVersion")
rpcServer.AliasMethod("net_listening", "Filecoin.NetListening")
Expand Down
38 changes: 21 additions & 17 deletions app/submodule/chain/chain_submodule.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ import (

// ChainSubmodule enhances the `Node` with chain capabilities.
type ChainSubmodule struct { //nolint
ChainReader *chain.Store
MessageStore *chain.MessageStore
Processor *consensus.DefaultProcessor
Fork fork.IFork
SystemCall vm.SyscallsImpl
ChainReader *chain.Store
MessageStore *chain.MessageStore
Processor *consensus.DefaultProcessor
Fork fork.IFork
SystemCall vm.SyscallsImpl
CirculatingSupplyCalculator *chain.CirculatingSupplyCalculator

CheckPoint types.TipSetKey
Drand beacon.Schedule
Expand All @@ -52,11 +53,10 @@ type chainConfig interface {
// NewChainSubmodule creates a new chain submodule.
func NewChainSubmodule(ctx context.Context,
config chainConfig,
circulatiingSupplyCalculator chain.ICirculatingSupplyCalcualtor,
) (*ChainSubmodule, error) {
repo := config.Repo()
// initialize chain store
chainStore := chain.NewStore(repo.ChainDatastore(), repo.Datastore(), config.GenesisCid(), circulatiingSupplyCalculator, chainselector.Weight)
chainStore := chain.NewStore(repo.ChainDatastore(), repo.Datastore(), config.GenesisCid(), chainselector.Weight)
// drand
genBlk, err := chainStore.GetGenesisBlock(context.TODO())
if err != nil {
Expand All @@ -73,22 +73,26 @@ func NewChainSubmodule(ctx context.Context,
if err != nil {
return nil, err
}

circulatingSupplyCalculator := chain.NewCirculatingSupplyCalculator(repo.Datastore(), genBlk.ParentStateRoot, repo.Config().NetworkParams.ForkUpgradeParam, fork.GetNetworkVersion)

faultChecker := consensusfault.NewFaultChecker(chainStore, fork)
syscalls := vmsupport.NewSyscalls(faultChecker, config.Verifier())
processor := consensus.NewDefaultProcessor(syscalls, circulatiingSupplyCalculator, chainStore, config.Repo().Config().NetworkParams)
processor := consensus.NewDefaultProcessor(syscalls, circulatingSupplyCalculator, chainStore, config.Repo().Config().NetworkParams)

waiter := chain.NewWaiter(chainStore, messageStore, config.Repo().Datastore(), cbor.NewCborStore(config.Repo().Datastore()))

store := &ChainSubmodule{
ChainReader: chainStore,
MessageStore: messageStore,
Processor: processor,
SystemCall: syscalls,
Fork: fork,
Drand: drand,
config: config,
Waiter: waiter,
CheckPoint: chainStore.GetCheckPoint(),
ChainReader: chainStore,
MessageStore: messageStore,
Processor: processor,
SystemCall: syscalls,
Fork: fork,
CirculatingSupplyCalculator: circulatingSupplyCalculator,
Drand: drand,
config: config,
Waiter: waiter,
CheckPoint: chainStore.GetCheckPoint(),
}
err = store.ChainReader.Load(context.TODO())
if err != nil {
Expand Down
1 change: 1 addition & 0 deletions app/submodule/chain/chaininfo_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,7 @@ func (cia *chainInfoAPI) StateGetNetworkParams(ctx context.Context) (*types.Netw
UpgradeWatermelonHeight: cfg.NetworkParams.ForkUpgradeParam.UpgradeWatermelonHeight,
UpgradeDragonHeight: cfg.NetworkParams.ForkUpgradeParam.UpgradeDragonHeight,
UpgradePhoenixHeight: cfg.NetworkParams.ForkUpgradeParam.UpgradePhoenixHeight,
UpgradeWaffleHeight: cfg.NetworkParams.ForkUpgradeParam.UpgradeWaffleHeight,
},
Eip155ChainID: cfg.NetworkParams.Eip155ChainID,
}
Expand Down
42 changes: 35 additions & 7 deletions app/submodule/chain/miner_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func (msa *minerStateAPI) StateSectorPreCommitInfo(ctx context.Context, maddr ad
// NOTE: returned info.Expiration may not be accurate in some cases, use StateSectorExpiration to get accurate
// expiration epoch
// return nil if sector not found
func (msa *minerStateAPI) StateSectorGetInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*types.SectorOnChainInfo, error) {
func (msa *minerStateAPI) StateSectorGetInfo(ctx context.Context, maddr address.Address, n abi.SectorNumber, tsk types.TipSetKey) (*lminer.SectorOnChainInfo, error) {
_, view, err := msa.Stmgr.ParentStateViewTsk(ctx, tsk)
if err != nil {
return nil, fmt.Errorf("loading tipset %s: %v", tsk, err)
Expand Down Expand Up @@ -141,8 +141,21 @@ func (msa *minerStateAPI) StateMinerInfo(ctx context.Context, maddr address.Addr
ConsensusFaultElapsed: minfo.ConsensusFaultElapsed,
PendingOwnerAddress: minfo.PendingOwnerAddress,
Beneficiary: minfo.Beneficiary,
BeneficiaryTerm: &minfo.BeneficiaryTerm,
PendingBeneficiaryTerm: minfo.PendingBeneficiaryTerm,
BeneficiaryTerm: &types.BeneficiaryTerm{
Quota: minfo.BeneficiaryTerm.Quota,
UsedQuota: minfo.BeneficiaryTerm.UsedQuota,
Expiration: minfo.BeneficiaryTerm.Expiration,
},
}

if minfo.PendingBeneficiaryTerm != nil {
ret.PendingBeneficiaryTerm = &types.PendingBeneficiaryChange{
NewBeneficiary: minfo.PendingBeneficiaryTerm.NewBeneficiary,
NewQuota: minfo.PendingBeneficiaryTerm.NewQuota,
NewExpiration: minfo.PendingBeneficiaryTerm.NewExpiration,
ApprovedByBeneficiary: minfo.PendingBeneficiaryTerm.ApprovedByBeneficiary,
ApprovedByNominee: minfo.PendingBeneficiaryTerm.ApprovedByNominee,
}
}

if minfo.PendingWorkerKey != nil {
Expand Down Expand Up @@ -320,7 +333,7 @@ func (msa *minerStateAPI) StateMinerDeadlines(ctx context.Context, maddr address
}

// StateMinerSectors returns info about the given miner's sectors. If the filter bitfield is nil, all sectors are included.
func (msa *minerStateAPI) StateMinerSectors(ctx context.Context, maddr address.Address, sectorNos *bitfield.BitField, tsk types.TipSetKey) ([]*types.SectorOnChainInfo, error) {
func (msa *minerStateAPI) StateMinerSectors(ctx context.Context, maddr address.Address, sectorNos *bitfield.BitField, tsk types.TipSetKey) ([]*lminer.SectorOnChainInfo, error) {
_, view, err := msa.Stmgr.ParentStateViewTsk(ctx, tsk)
if err != nil {
return nil, fmt.Errorf("Stmgr.ParentStateViewTsk failed:%v", err)
Expand Down Expand Up @@ -856,7 +869,7 @@ func (msa *minerStateAPI) StateVMCirculatingSupplyInternal(ctx context.Context,
return types.CirculatingSupply{}, err
}

return msa.ChainReader.GetCirculatingSupplyDetailed(ctx, ts.Height(), sTree)
return msa.CirculatingSupplyCalculator.GetCirculatingSupplyDetailed(ctx, ts.Height(), sTree)
}

// StateCirculatingSupply returns the exact circulating supply of Filecoin at the given tipset.
Expand All @@ -869,7 +882,22 @@ func (msa *minerStateAPI) StateCirculatingSupply(ctx context.Context, tsk types.
tsk.String(), err)
}

return msa.ChainReader.StateCirculatingSupply(ctx, parent.Key())
ts, err := msa.ChainReader.GetTipSet(ctx, parent.Key())
if err != nil {
return abi.TokenAmount{}, err
}

root, err := msa.ChainReader.GetTipSetStateRoot(ctx, ts)
if err != nil {
return abi.TokenAmount{}, err
}

sTree, err := tree.LoadState(ctx, msa.ChainReader.StateStore(), root)
if err != nil {
return abi.TokenAmount{}, err
}

return msa.CirculatingSupplyCalculator.GetCirculatingSupply(ctx, ts.Height(), sTree)
}

// StateMarketDeals returns information about every deal in the Storage Market
Expand All @@ -882,7 +910,7 @@ func (msa *minerStateAPI) StateMarketDeals(ctx context.Context, tsk types.TipSet
}

// StateMinerActiveSectors returns info about sectors that a given miner is actively proving.
func (msa *minerStateAPI) StateMinerActiveSectors(ctx context.Context, maddr address.Address, tsk types.TipSetKey) ([]*types.SectorOnChainInfo, error) { // TODO: only used in cli
func (msa *minerStateAPI) StateMinerActiveSectors(ctx context.Context, maddr address.Address, tsk types.TipSetKey) ([]*lminer.SectorOnChainInfo, error) { // TODO: only used in cli
_, view, err := msa.Stmgr.ParentStateViewTsk(ctx, tsk)
if err != nil {
return nil, fmt.Errorf("Stmgr.ParentStateViewTsk failed:%v", err)
Expand Down
4 changes: 4 additions & 0 deletions app/submodule/eth/dummy.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,10 @@ func (e *ethAPIDummy) EthTraceReplayBlockTransactions(ctx context.Context, blkNu
return nil, ErrModuleDisabled
}

func (e *ethAPIDummy) EthTraceTransaction(ctx context.Context, txHash string) ([]*types.EthTraceTransaction, error) {
return nil, ErrModuleDisabled
}

func (e *ethAPIDummy) start(_ context.Context) error {
return nil
}
Expand Down
Loading
Loading