-
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
32 changed files
with
4,137 additions
and
3,481 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
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("node/eth") | ||
|
||
// SyncAPI is a minimal version of full.SyncAPI | ||
type SyncAPI interface { | ||
SyncState(ctx context.Context) (*api.SyncState, error) | ||
} | ||
|
||
// ChainStore is a minimal version of store.ChainStore just for tipsets | ||
type ChainStore 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) | ||
} | ||
|
||
// StateManager is a minimal version of stmgr.StateManager | ||
type StateManager 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 full.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) | ||
} | ||
|
||
// MessagePool is a minimal version of messagepool.MessagePool | ||
type MessagePool 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.