-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(eth): refactor eth API module into separate pieces in new pkg
- Loading branch information
Showing
30 changed files
with
4,143 additions
and
3,478 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
package eth | ||
|
||
import ( | ||
"context" | ||
|
||
"github.com/ipfs/go-cid" | ||
logging "github.com/ipfs/go-log/v2" | ||
"golang.org/x/xerrors" | ||
|
||
"github.com/filecoin-project/go-address" | ||
"github.com/filecoin-project/go-state-types/abi" | ||
"github.com/filecoin-project/go-state-types/network" | ||
|
||
"github.com/filecoin-project/lotus/api" | ||
"github.com/filecoin-project/lotus/chain/actors/adt" | ||
"github.com/filecoin-project/lotus/chain/state" | ||
"github.com/filecoin-project/lotus/chain/store" | ||
"github.com/filecoin-project/lotus/chain/types" | ||
) | ||
|
||
var ( | ||
ErrChainIndexerDisabled = xerrors.New("chain indexer is disabled; please enable the ChainIndexer to use the ETH RPC API") | ||
ErrModuleDisabled = xerrors.New("module disabled, enable with Fevm.EnableEthRPC / LOTUS_FEVM_ENABLEETHRPC") | ||
) | ||
|
||
var log = logging.Logger("fullnode/eth") | ||
|
||
// SyncAPI is a minimal version of full.SyncAPI | ||
type SyncAPI interface { | ||
SyncState(ctx context.Context) (*api.SyncState, error) | ||
} | ||
|
||
// ChainStoreAPI is a minimal version of store.ChainStoreAPI just for tipsets | ||
type ChainStoreAPI interface { | ||
// TipSets | ||
GetHeaviestTipSet() *types.TipSet | ||
GetTipsetByHeight(ctx context.Context, h abi.ChainEpoch, ts *types.TipSet, prev bool) (*types.TipSet, error) | ||
GetTipSetFromKey(ctx context.Context, tsk types.TipSetKey) (*types.TipSet, error) | ||
GetTipSetByCid(ctx context.Context, c cid.Cid) (*types.TipSet, error) | ||
LoadTipSet(ctx context.Context, tsk types.TipSetKey) (*types.TipSet, error) | ||
|
||
// Messages | ||
GetSignedMessage(ctx context.Context, c cid.Cid) (*types.SignedMessage, error) | ||
GetMessage(ctx context.Context, c cid.Cid) (*types.Message, error) | ||
BlockMsgsForTipset(ctx context.Context, ts *types.TipSet) ([]store.BlockMessages, error) | ||
MessagesForTipset(ctx context.Context, ts *types.TipSet) ([]types.ChainMsg, error) | ||
ReadReceipts(ctx context.Context, root cid.Cid) ([]types.MessageReceipt, error) | ||
|
||
// Misc | ||
ActorStore(ctx context.Context) adt.Store | ||
} | ||
|
||
// StateAPI is a minimal version of full.StateAPI | ||
type StateAPI interface { | ||
StateSearchMsg(ctx context.Context, from types.TipSetKey, msg cid.Cid, limit abi.ChainEpoch, allowReplaced bool) (*api.MsgLookup, error) | ||
} | ||
|
||
// StateManagerAPI is a minimal version of stmgr.StateManagerAPI | ||
type StateManagerAPI interface { | ||
GetNetworkVersion(ctx context.Context, height abi.ChainEpoch) network.Version | ||
|
||
TipSetState(ctx context.Context, ts *types.TipSet) (cid.Cid, cid.Cid, error) | ||
ParentState(ts *types.TipSet) (*state.StateTree, error) | ||
StateTree(st cid.Cid) (*state.StateTree, error) | ||
|
||
LookupIDAddress(ctx context.Context, addr address.Address, ts *types.TipSet) (address.Address, error) | ||
LoadActor(ctx context.Context, addr address.Address, ts *types.TipSet) (*types.Actor, error) | ||
LoadActorRaw(ctx context.Context, addr address.Address, st cid.Cid) (*types.Actor, error) | ||
ResolveToDeterministicAddress(ctx context.Context, addr address.Address, ts *types.TipSet) (address.Address, error) | ||
|
||
ExecutionTrace(ctx context.Context, ts *types.TipSet) (cid.Cid, []*api.InvocResult, error) | ||
Call(ctx context.Context, msg *types.Message, ts *types.TipSet) (*api.InvocResult, error) | ||
CallWithGas(ctx context.Context, msg *types.Message, priorMsgs []types.ChainMsg, ts *types.TipSet, applyTsMessages bool) (*api.InvocResult, error) | ||
ApplyOnStateWithGas(ctx context.Context, stateCid cid.Cid, msg *types.Message, ts *types.TipSet) (*api.InvocResult, error) | ||
|
||
HasExpensiveForkBetween(parent, height abi.ChainEpoch) bool | ||
} | ||
|
||
// MpoolAPI is a minimal version of MpoolAPI | ||
type MpoolAPI interface { | ||
MpoolPending(ctx context.Context, tsk types.TipSetKey) ([]*types.SignedMessage, error) | ||
MpoolGetNonce(ctx context.Context, addr address.Address) (uint64, error) | ||
MpoolPushUntrusted(ctx context.Context, smsg *types.SignedMessage) (cid.Cid, error) | ||
MpoolPush(ctx context.Context, smsg *types.SignedMessage) (cid.Cid, error) | ||
} | ||
|
||
// MessagePoolAPI is a minimal version of messagepool.MessagePool | ||
type MessagePoolAPI interface { | ||
PendingFor(ctx context.Context, a address.Address) ([]*types.SignedMessage, *types.TipSet) | ||
GetConfig() *types.MpoolConfig | ||
} | ||
|
||
// GasAPI is a minimal version of full.GasAPI | ||
type GasAPI interface { | ||
GasEstimateGasPremium(ctx context.Context, nblocksincl uint64, sender address.Address, gaslimit int64, ts types.TipSetKey) (types.BigInt, error) | ||
GasEstimateMessageGas(ctx context.Context, msg *types.Message, spec *api.MessageSendSpec, ts types.TipSetKey) (*types.Message, error) | ||
} |
Oops, something went wrong.