paychmgr

package
v1.14.1 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2023 License: Apache-2.0, MIT Imports: 29 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrChannelNotTracked = errors.New("channel not tracked")

Functions

func BestSpendableByLane

func BestSpendableByLane(ctx context.Context, api BestSpendableAPI, ch address.Address) (map[uint64]*paych.SignedVoucher, error)

BestSpendableByLane return spendable voucher in channel address

Types

type BestSpendableAPI

type BestSpendableAPI interface {
	PaychVoucherList(context.Context, address.Address) ([]*paych.SignedVoucher, error)
	PaychVoucherCheckSpendable(context.Context, address.Address, *paych.SignedVoucher, []byte, []byte) (bool, error)
}

type ErrInsufficientFunds

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

func (*ErrInsufficientFunds) Error

func (e *ErrInsufficientFunds) Error() string

func (*ErrInsufficientFunds) Shortfall

func (e *ErrInsufficientFunds) Shortfall() big.Int

type GetOpts added in v1.6.0

type GetOpts struct {
	Reserve  bool
	OffChain bool
}

type IChainInfo added in v1.1.0

type IChainInfo interface {
	StateAccountKey(ctx context.Context, addr address.Address, tsk types.TipSetKey) (address.Address, error)
	StateNetworkVersion(ctx context.Context, tsk types.TipSetKey) (network.Version, error)
	StateWaitMsg(ctx context.Context, cid cid.Cid, confidence uint64, limit abi.ChainEpoch, allowReplaced bool) (*types.MsgLookup, error)
}

type IMessagePush added in v1.1.0

type IMessagePush interface {
	MpoolPushMessage(ctx context.Context, msg *types.Message, spec *types.MessageSendSpec) (*types.SignedMessage, error)
}

type IWalletAPI added in v1.1.0

type IWalletAPI interface {
	WalletHas(ctx context.Context, addr address.Address) (bool, error)
	WalletSign(ctx context.Context, k address.Address, msg []byte, meta types.MsgMeta) (*crypto.Signature, error)
}

type Manager

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

func NewManager

func NewManager(ctx context.Context, ds datastore.Batching, params *ManagerParams) (*Manager, error)

func (*Manager) AddVoucherInbound

func (pm *Manager) AddVoucherInbound(ctx context.Context, ch address.Address, sv *types.SignedVoucher, proof []byte, minDelta big.Int) (big.Int, error)

AddVoucherInbound adds a voucher for an inbound channel. If the channel is not in the store, fetches the channel from state (and checks that the channel To address is owned by the wallet).

func (*Manager) AddVoucherOutbound

func (pm *Manager) AddVoucherOutbound(ctx context.Context, ch address.Address, sv *types.SignedVoucher, proof []byte, minDelta big.Int) (big.Int, error)

AddVoucherOutbound adds a voucher for an outbound channel. Returns an error if the channel is not already in the store.

func (*Manager) AllocateLane

func (pm *Manager) AllocateLane(ctx context.Context, ch address.Address) (uint64, error)

func (*Manager) AvailableFunds

func (pm *Manager) AvailableFunds(ctx context.Context, ch address.Address) (*types.ChannelAvailableFunds, error)

func (*Manager) AvailableFundsByFromTo

func (pm *Manager) AvailableFundsByFromTo(ctx context.Context, from address.Address, to address.Address) (*types.ChannelAvailableFunds, error)

func (*Manager) CheckVoucherSpendable

func (pm *Manager) CheckVoucherSpendable(ctx context.Context, ch address.Address, sv *types.SignedVoucher, secret []byte, proof []byte) (bool, error)

CheckVoucherSpendable checks if the given voucher is currently spendable

func (*Manager) CheckVoucherValid

func (pm *Manager) CheckVoucherValid(ctx context.Context, ch address.Address, sv *types.SignedVoucher) error

CheckVoucherValid checks if the given voucher is valid (is or could become spendable at some point). If the channel is not in the store, fetches the channel from state (and checks that the channel To address is owned by the wallet).

func (*Manager) Collect

func (pm *Manager) Collect(ctx context.Context, addr address.Address) (cid.Cid, error)

func (*Manager) CreateVoucher

func (pm *Manager) CreateVoucher(ctx context.Context, ch address.Address, voucher types.SignedVoucher) (*types.VoucherCreateResult, error)

func (*Manager) GetChannelInfo

func (pm *Manager) GetChannelInfo(ctx context.Context, addr address.Address) (*pchTypes.ChannelInfo, error)

func (*Manager) GetPaych

func (pm *Manager) GetPaych(ctx context.Context, from, to address.Address, amt big.Int, opts GetOpts) (address.Address, cid.Cid, error)

func (*Manager) GetPaychWaitReady

func (pm *Manager) GetPaychWaitReady(ctx context.Context, mcid cid.Cid) (address.Address, error)

GetPaychWaitReady waits until the create channel / add funds message with the given message CID arrives. The returned channel address can safely be used against the Manager methods.

func (*Manager) ListChannels

func (pm *Manager) ListChannels(ctx context.Context) ([]address.Address, error)

func (*Manager) ListVouchers

func (pm *Manager) ListVouchers(ctx context.Context, ch address.Address) ([]*pchTypes.VoucherInfo, error)

func (*Manager) Settle

func (pm *Manager) Settle(ctx context.Context, addr address.Address) (cid.Cid, error)

func (*Manager) Start

func (pm *Manager) Start(ctx context.Context) error

Start restarts tracking of any messages that were sent to chain.

func (*Manager) Stop

func (pm *Manager) Stop()

Stop shuts down any processes used by the manager

func (*Manager) SubmitVoucher

func (pm *Manager) SubmitVoucher(ctx context.Context, ch address.Address, sv *types.SignedVoucher, secret []byte, proof []byte) (cid.Cid, error)

TODO: secret vs proof doesn't make sense, there is only one, not two

type ManagerParams

type ManagerParams struct {
	MPoolAPI     IMessagePush
	ChainInfoAPI IChainInfo
	WalletAPI    IWalletAPI
	SM           statemanger.IStateManager
}

type Store

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

func NewStore

func NewStore(ds repo.Datastore) *Store

for test

func (*Store) AllocateLane

func (ps *Store) AllocateLane(ctx context.Context, ch address.Address) (uint64, error)

AllocateLane allocates a new lane for the given channel

func (*Store) ByAddress

func (ps *Store) ByAddress(ctx context.Context, addr address.Address) (*pchTypes.ChannelInfo, error)

ByAddress gets the channel that matches the given address

func (*Store) ByChannelID

func (ps *Store) ByChannelID(ctx context.Context, channelID string) (*pchTypes.ChannelInfo, error)

ByChannelID gets channel info by channel ID

func (*Store) ByMessageCid

func (ps *Store) ByMessageCid(ctx context.Context, mcid cid.Cid) (*pchTypes.ChannelInfo, error)

ByMessageCid gets the channel associated with a message

func (*Store) CreateChannel

func (ps *Store) CreateChannel(ctx context.Context, from address.Address, to address.Address, createMsgCid cid.Cid, amt, avail fbig.Int) (*pchTypes.ChannelInfo, error)

CreateChannel creates an outbound channel for the given from / to

func (*Store) GetMessage

func (ps *Store) GetMessage(ctx context.Context, mcid cid.Cid) (*pchTypes.MsgInfo, error)

GetMessage gets the message info for a given message CID

func (*Store) ListChannels

func (ps *Store) ListChannels(ctx context.Context) ([]address.Address, error)

ListChannels returns the addresses of all channels that have been created

func (*Store) MarkVoucherSubmitted

func (ps *Store) MarkVoucherSubmitted(ctx context.Context, ci *pchTypes.ChannelInfo, sv *paych.SignedVoucher) error

func (*Store) OutboundActiveByFromTo

func (ps *Store) OutboundActiveByFromTo(ctx context.Context, sma managerAPI, from address.Address, to address.Address) (*pchTypes.ChannelInfo, error)

OutboundActiveByFromTo looks for outbound channels that have not been settled, with the given from / to addresses

func (*Store) RemoveChannel

func (ps *Store) RemoveChannel(ctx context.Context, channelID string) error

RemoveChannel removes the channel with the given channel ID

func (*Store) SaveMessageResult

func (ps *Store) SaveMessageResult(ctx context.Context, mcid cid.Cid, msgErr error) error

SaveMessageResult is called when the result of a message is received

func (*Store) SaveNewMessage

func (ps *Store) SaveNewMessage(ctx context.Context, channelID string, mcid cid.Cid) error

SaveNewMessage is called when a message is sent

func (*Store) TrackChannel

func (ps *Store) TrackChannel(ctx context.Context, ci *pchTypes.ChannelInfo) (*pchTypes.ChannelInfo, error)

TrackChannel stores a channel, returning an error if the channel was already being tracked

func (*Store) VouchersForPaych

func (ps *Store) VouchersForPaych(ctx context.Context, ch address.Address) ([]*pchTypes.VoucherInfo, error)

VouchersForPaych gets the vouchers for the given channel

func (*Store) WithPendingAddFunds

func (ps *Store) WithPendingAddFunds(ctx context.Context) ([]pchTypes.ChannelInfo, error)

WithPendingAddFunds is used on startup to find channels for which a create channel or add funds message has been sent, but lotus shut down before the response was received.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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