lpmessage

package
v1.26.3 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2024 License: Apache-2.0, MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var SendLockedWait = 100 * time.Millisecond

Functions

func NewSender

func NewSender(api SenderAPI, signer SignerAPI, db *harmonydb.DB) (*Sender, *SendTask)

NewSender creates a new Sender.

Types

type SendTask

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

func (*SendTask) Adder

func (s *SendTask) Adder(taskFunc harmonytask.AddTaskFunc)

func (*SendTask) CanAccept

func (s *SendTask) CanAccept(ids []harmonytask.TaskID, engine *harmonytask.TaskEngine) (*harmonytask.TaskID, error)

func (*SendTask) Do

func (s *SendTask) Do(taskID harmonytask.TaskID, stillOwned func() bool) (done bool, err error)

func (*SendTask) TypeDetails

func (s *SendTask) TypeDetails() harmonytask.TaskTypeDetails

type Sender

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

Sender abstracts away highly-available message sending with coordination through HarmonyDB. It make sure that nonces are assigned transactionally, and that messages are correctly broadcasted to the network. It ensures that messages are sent serially, and that failures to send don't cause nonce gaps.

func (*Sender) Send

func (s *Sender) Send(ctx context.Context, msg *types.Message, mss *api.MessageSendSpec, reason string) (cid.Cid, error)

Send atomically assigns a nonce, signs, and pushes a message to mempool. maxFee is only used when GasFeeCap/GasPremium fields aren't specified

When maxFee is set to 0, Send will guess appropriate fee based on current chain conditions

Send behaves much like fullnodeApi.MpoolPushMessage, but it coordinates through HarmonyDB, making it safe to broadcast messages from multiple independent API nodes

Send is also currently more strict about required parameters than MpoolPushMessage

type SenderAPI

type SenderAPI interface {
	StateAccountKey(ctx context.Context, addr address.Address, tsk types.TipSetKey) (address.Address, error)
	GasEstimateMessageGas(ctx context.Context, msg *types.Message, spec *api.MessageSendSpec, tsk types.TipSetKey) (*types.Message, error)
	WalletBalance(ctx context.Context, addr address.Address) (big.Int, error)
	MpoolGetNonce(context.Context, address.Address) (uint64, error)
	MpoolPush(context.Context, *types.SignedMessage) (cid.Cid, error)
}

type SignerAPI

type SignerAPI interface {
	WalletSignMessage(context.Context, address.Address, *types.Message) (*types.SignedMessage, error)
}

Jump to

Keyboard shortcuts

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