paychmgr

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2020 License: Apache-2.0, MIT Imports: 34 Imported by: 12

Documentation

Index

Constants

View Source
const (
	DirInbound  = 1
	DirOutbound = 2
)

Variables

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

Functions

func HandleManager added in v0.5.0

func HandleManager(lc fx.Lifecycle, pm *Manager)

HandleManager is called by dependency injection to set up hooks

Types

type ChannelInfo

type ChannelInfo struct {
	// ChannelID is a uuid set at channel creation
	ChannelID string
	// Channel address - may be nil if the channel hasn't been created yet
	Channel *address.Address
	// Control is the address of the account that created the channel
	Control address.Address
	// Target is the address of the account on the other end of the channel
	Target address.Address
	// Direction indicates if the channel is inbound (this node is the Target)
	// or outbound (this node is the Control)
	Direction uint64
	// Vouchers is a list of all vouchers sent on the channel
	Vouchers []*VoucherInfo
	// NextLane is the number of the next lane that should be used when the
	// client requests a new lane (eg to create a voucher for a new deal)
	NextLane uint64
	// Amount added to the channel.
	// Note: This amount is only used by GetPaych to keep track of how much
	// has locally been added to the channel. It should reflect the channel's
	// Balance on chain as long as all operations occur on the same datastore.
	Amount types.BigInt
	// PendingAmount is the amount that we're awaiting confirmation of
	PendingAmount types.BigInt
	// CreateMsg is the CID of a pending create message (while waiting for confirmation)
	CreateMsg *cid.Cid
	// AddFundsMsg is the CID of a pending add funds message (while waiting for confirmation)
	AddFundsMsg *cid.Cid
	// Settling indicates whether the channel has entered into the settling state
	Settling bool
}

ChannelInfo keeps track of information about a channel

func (*ChannelInfo) MarshalCBOR

func (t *ChannelInfo) MarshalCBOR(w io.Writer) error

func (*ChannelInfo) UnmarshalCBOR

func (t *ChannelInfo) UnmarshalCBOR(r io.Reader) error

type Manager

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

func NewManager

func NewManager(mctx helpers.MetricsCtx, lc fx.Lifecycle, sm *stmgr.StateManager, pchstore *Store, api PaychAPI) *Manager

func (*Manager) AddVoucher

func (pm *Manager) AddVoucher(ctx context.Context, ch address.Address, sv *paych.SignedVoucher, proof []byte, minDelta types.BigInt) (types.BigInt, error)

func (*Manager) AllocateLane

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

func (*Manager) CheckVoucherSpendable

func (pm *Manager) CheckVoucherSpendable(ctx context.Context, ch address.Address, sv *paych.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 *paych.SignedVoucher) error

CheckVoucherValid checks if the given voucher is valid (is or could become spendable at some point)

func (*Manager) Collect added in v0.5.0

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

func (*Manager) GetChannelInfo

func (pm *Manager) GetChannelInfo(addr address.Address) (*ChannelInfo, error)

func (*Manager) GetPaych

func (pm *Manager) GetPaych(ctx context.Context, from, to address.Address, amt types.BigInt) (address.Address, cid.Cid, error)

func (*Manager) GetPaychWaitReady added in v0.5.0

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() ([]address.Address, error)

func (*Manager) ListVouchers

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

func (*Manager) NextNonceForLane

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

func (*Manager) Settle added in v0.5.0

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

func (*Manager) Start added in v0.5.0

func (pm *Manager) Start() error

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

func (*Manager) Stop added in v0.5.0

func (pm *Manager) Stop() error

Stop shuts down any processes used by the manager

func (*Manager) TrackInboundChannel

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

func (*Manager) TrackOutboundChannel

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

type MsgInfo added in v0.5.0

type MsgInfo struct {
	// ChannelID links the message to a channel
	ChannelID string
	// MsgCid is the CID of the message
	MsgCid cid.Cid
	// Received indicates whether a response has been received
	Received bool
	// Err is the error received in the response
	Err string
}

MsgInfo stores information about a create channel / add funds message that has been sent

func (*MsgInfo) MarshalCBOR added in v0.5.0

func (t *MsgInfo) MarshalCBOR(w io.Writer) error

func (*MsgInfo) UnmarshalCBOR added in v0.5.0

func (t *MsgInfo) UnmarshalCBOR(r io.Reader) error

type PaychAPI added in v0.5.0

type PaychAPI struct {
	fx.In

	full.MpoolAPI
	full.StateAPI
}

PaychAPI is used by dependency injection to pass the consituent APIs to NewManager()

type Store

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

func NewStore

func NewStore(ds dtypes.MetadataDS) *Store

func (*Store) AllocateLane

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

AllocateLane allocates a new lane for the given channel

func (*Store) ByAddress added in v0.5.0

func (ps *Store) ByAddress(addr address.Address) (*ChannelInfo, error)

ByAddress gets the channel that matches the given address

func (*Store) ByChannelID added in v0.5.0

func (ps *Store) ByChannelID(channelID string) (*ChannelInfo, error)

ByChannelID gets channel info by channel ID

func (*Store) ByMessageCid added in v0.5.0

func (ps *Store) ByMessageCid(mcid cid.Cid) (*ChannelInfo, error)

ByMessageCid gets the channel associated with a message

func (*Store) CreateChannel added in v0.5.0

func (ps *Store) CreateChannel(from address.Address, to address.Address, createMsgCid cid.Cid, amt types.BigInt) (*ChannelInfo, error)

CreateChannel creates an outbound channel for the given from / to

func (*Store) GetMessage added in v0.5.0

func (ps *Store) GetMessage(mcid cid.Cid) (*MsgInfo, error)

GetMessage gets the message info for a given message CID

func (*Store) ListChannels

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

ListChannels returns the addresses of all channels that have been created

func (*Store) OutboundActiveByFromTo added in v0.5.0

func (ps *Store) OutboundActiveByFromTo(from address.Address, to address.Address) (*ChannelInfo, error)

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

func (*Store) RemoveChannel added in v0.5.0

func (ps *Store) RemoveChannel(channelID string) error

RemoveChannel removes the channel with the given channel ID

func (*Store) SaveMessageResult added in v0.5.0

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

SaveMessageResult is called when the result of a message is received

func (*Store) SaveNewMessage added in v0.5.0

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

SaveNewMessage is called when a message is sent

func (*Store) TrackChannel

func (ps *Store) TrackChannel(ci *ChannelInfo) error

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

func (*Store) VouchersForPaych

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

VouchersForPaych gets the vouchers for the given channel

func (*Store) WithPendingAddFunds added in v0.5.0

func (ps *Store) WithPendingAddFunds() ([]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.

type VoucherInfo

type VoucherInfo struct {
	Voucher *paych.SignedVoucher
	Proof   []byte
}

func (*VoucherInfo) MarshalCBOR

func (t *VoucherInfo) MarshalCBOR(w io.Writer) error

func (*VoucherInfo) UnmarshalCBOR

func (t *VoucherInfo) UnmarshalCBOR(r io.Reader) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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