messagepool

package
v0.0.0-...-484cccf Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2023 License: Apache-2.0, MIT Imports: 41 Imported by: 0

Documentation

Index

Constants

View Source
const MaxBlocks = 15
View Source
const MaxMessageSize = 64 << 10 // 64KiB

Variables

View Source
var (
	ReplaceByFeePercentageMinimum types.Percent = 110
	ReplaceByFeePercentageDefault types.Percent = 125
)
View Source
var (
	MemPoolSizeLimitHiDefault = 30000
	MemPoolSizeLimitLoDefault = 20000
	PruneCooldownDefault      = time.Minute
	GasLimitOverestimation    = 1.25

	ConfigKey = datastore.NewKey("/mpool/config")
)
View Source
var (
	ErrMessageTooBig = errors.New("message too big")

	ErrMessageValueTooHigh = errors.New("cannot send more filecoin than will ever exist")

	ErrNonceTooLow = errors.New("message nonce too low")

	ErrGasFeeCapTooLow = errors.New("gas fee cap too low")

	ErrNotEnoughFunds = errors.New("not enough funds to execute transaction")

	ErrInvalidToAddr = errors.New("message had invalid to address")

	ErrSoftValidationFailure  = errors.New("validation failure")
	ErrRBFTooLowPremium       = errors.New("replace by fee has too low GasPremium")
	ErrTooManyPendingMessages = errors.New("too many pending messages for actor")
	ErrNonceGap               = errors.New("unfulfilled nonce gap")
	ErrExistingNonce          = errors.New("message with nonce already exists")
)
View Source
var (
	HeadChangeCoalesceMinDelay      = 2 * time.Second
	HeadChangeCoalesceMaxDelay      = 6 * time.Second
	HeadChangeCoalesceMergeInterval = time.Second
)
View Source
var MaxActorPendingMessages = 1000
View Source
var MaxNonceGap = uint64(4)
View Source
var MaxUntrustedActorPendingMessages = 10
View Source
var RepublishBatchDelay = 100 * time.Millisecond

Functions

func CapGasFee

func CapGasFee(mff dtypes.DefaultMaxFeeFunc, msg *types.Message, sendSpec *api.MessageSendSpec)

func ComputeMinRBF

func ComputeMinRBF(curPrem abi.TokenAmount) abi.TokenAmount

func ComputeRBF

func ComputeRBF(curPrem abi.TokenAmount, replaceByFeeRatio types.Percent) abi.TokenAmount

func DefaultConfig

func DefaultConfig() *types.MpoolConfig

Types

type MessagePool

type MessagePool struct {
	// contains filtered or unexported fields
}

func (*MessagePool) Add

func (*MessagePool) CheckMessages

func (mp *MessagePool) CheckMessages(ctx context.Context, protos []*api.MessagePrototype) ([][]api.MessageCheckStatus, error)

CheckMessages performs a set of logic checks for a list of messages, prior to submitting it to the mpool

func (*MessagePool) CheckPendingMessages

func (mp *MessagePool) CheckPendingMessages(ctx context.Context, from address.Address) ([][]api.MessageCheckStatus, error)

CheckPendingMessages performs a set of logical sets for all messages pending from a given actor

func (*MessagePool) CheckReplaceMessages

func (mp *MessagePool) CheckReplaceMessages(ctx context.Context, replace []*types.Message) ([][]api.MessageCheckStatus, error)

CheckReplaceMessages performs a set of logical checks for related messages while performing a replacement.

func (*MessagePool) Clear

func (mp *MessagePool) Clear(ctx context.Context, local bool)

func (*MessagePool) Close

func (mp *MessagePool) Close() error

func (*MessagePool) GetActor

func (mp *MessagePool) GetActor(_ context.Context, addr address.Address, _ types.TipSetKey) (*types.Actor, error)

GetActor should not be used. It is only here to satisfy interface mess caused by lite node handling

func (*MessagePool) GetConfig

func (mp *MessagePool) GetConfig() *types.MpoolConfig

func (*MessagePool) GetNonce

func (mp *MessagePool) GetNonce(ctx context.Context, addr address.Address, _ types.TipSetKey) (uint64, error)

func (*MessagePool) HeadChange

func (mp *MessagePool) HeadChange(ctx context.Context, revert []*types.TipSet, apply []*types.TipSet) error

func (*MessagePool) MessagesForBlocks

func (mp *MessagePool) MessagesForBlocks(ctx context.Context, blks []*types.BlockHeader) ([]*types.SignedMessage, error)

func (*MessagePool) Pending

func (mp *MessagePool) Pending(ctx context.Context) ([]*types.SignedMessage, *types.TipSet)

func (*MessagePool) PendingFor

func (mp *MessagePool) PendingFor(ctx context.Context, a address.Address) ([]*types.SignedMessage, *types.TipSet)

func (*MessagePool) Prune

func (mp *MessagePool) Prune()

func (*MessagePool) Push

func (mp *MessagePool) Push(ctx context.Context, m *types.SignedMessage, publish bool) (cid.Cid, error)

Push checks the signed message for any violations, adds the message to the message pool and publishes the message if the publish flag is set

func (*MessagePool) PushUntrusted

func (mp *MessagePool) PushUntrusted(ctx context.Context, m *types.SignedMessage) (cid.Cid, error)

this method is provided for the gateway to push messages. differences from Push:

  • strict checks are enabled
  • extra strict add checks are used when adding the messages to the msgSet that means: no nonce gaps, at most 10 pending messages for the actor

func (*MessagePool) RecoverSig

func (mp *MessagePool) RecoverSig(msg *types.Message) *types.SignedMessage

func (*MessagePool) Remove

func (mp *MessagePool) Remove(ctx context.Context, from address.Address, nonce uint64, applied bool)

func (*MessagePool) SelectMessages

func (mp *MessagePool) SelectMessages(ctx context.Context, ts *types.TipSet, tq float64) ([]*types.SignedMessage, error)

func (*MessagePool) SetConfig

func (mp *MessagePool) SetConfig(ctx context.Context, cfg *types.MpoolConfig) error

func (*MessagePool) TryForEachPendingMessage

func (mp *MessagePool) TryForEachPendingMessage(f func(cid.Cid) error) error

func (*MessagePool) Updates

func (mp *MessagePool) Updates(ctx context.Context) (<-chan api.MpoolUpdate, error)

func (*MessagePool) VerifyMsgSig

func (mp *MessagePool) VerifyMsgSig(m *types.SignedMessage) error

type MessagePoolEvt

type MessagePoolEvt struct {
	Action   string
	Messages []MessagePoolEvtMessage
	Error    error `json:",omitempty"`
}

MessagePoolEvt is the journal entry for message pool events.

type MessagePoolEvtMessage

type MessagePoolEvtMessage struct {
	types.Message

	CID cid.Cid
}

type MpoolNonceAPI

type MpoolNonceAPI interface {
	GetNonce(context.Context, address.Address, types.TipSetKey) (uint64, error)
	GetActor(context.Context, address.Address, types.TipSetKey) (*types.Actor, error)
}

type Provider

type Provider interface {
	SubscribeHeadChanges(func(rev, app []*types.TipSet) error) *types.TipSet
	PutMessage(ctx context.Context, m types.ChainMsg) (cid.Cid, error)
	PubSubPublish(string, []byte) error
	GetActorAfter(address.Address, *types.TipSet) (*types.Actor, error)
	StateDeterministicAddressAtFinality(context.Context, address.Address, *types.TipSet) (address.Address, error)
	StateNetworkVersion(context.Context, abi.ChainEpoch) network.Version
	MessagesForBlock(context.Context, *types.BlockHeader) ([]*types.Message, []*types.SignedMessage, error)
	MessagesForTipset(context.Context, *types.TipSet) ([]types.ChainMsg, error)
	LoadTipSet(ctx context.Context, tsk types.TipSetKey) (*types.TipSet, error)
	ChainComputeBaseFee(ctx context.Context, ts *types.TipSet) (types.BigInt, error)
	IsLite() bool
}

func NewProvider

func NewProvider(sm *stmgr.StateManager, ps *pubsub.PubSub) Provider

func NewProviderLite

func NewProviderLite(sm *stmgr.StateManager, ps *pubsub.PubSub, noncer MpoolNonceAPI) Provider

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL