Use FundManager to withdraw funds, add MarketWithdraw to API
This commit is contained in:
parent
b13226bc2f
commit
13c8a235b6
@ -519,6 +519,8 @@ type FullNode interface {
|
|||||||
MarketReserveFunds(ctx context.Context, wallet address.Address, addr address.Address, amt types.BigInt) (cid.Cid, error)
|
MarketReserveFunds(ctx context.Context, wallet address.Address, addr address.Address, amt types.BigInt) (cid.Cid, error)
|
||||||
// MarketReleaseFunds releases funds reserved by MarketReserveFunds
|
// MarketReleaseFunds releases funds reserved by MarketReserveFunds
|
||||||
MarketReleaseFunds(ctx context.Context, addr address.Address, amt types.BigInt) error
|
MarketReleaseFunds(ctx context.Context, addr address.Address, amt types.BigInt) error
|
||||||
|
// MarketWithdraw withdraws unlocked funds from the market actor
|
||||||
|
MarketWithdraw(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error)
|
||||||
|
|
||||||
// MethodGroup: Paych
|
// MethodGroup: Paych
|
||||||
// The Paych methods are for interacting with and managing payment channels
|
// The Paych methods are for interacting with and managing payment channels
|
||||||
|
@ -246,6 +246,7 @@ type FullNodeStruct struct {
|
|||||||
|
|
||||||
MarketReserveFunds func(ctx context.Context, wallet address.Address, addr address.Address, amt types.BigInt) (cid.Cid, error) `perm:"sign"`
|
MarketReserveFunds func(ctx context.Context, wallet address.Address, addr address.Address, amt types.BigInt) (cid.Cid, error) `perm:"sign"`
|
||||||
MarketReleaseFunds func(ctx context.Context, addr address.Address, amt types.BigInt) error `perm:"sign"`
|
MarketReleaseFunds func(ctx context.Context, addr address.Address, amt types.BigInt) error `perm:"sign"`
|
||||||
|
MarketWithdraw func(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) `perm:"sign"`
|
||||||
|
|
||||||
PaychGet func(ctx context.Context, from, to address.Address, amt types.BigInt) (*api.ChannelInfo, error) `perm:"sign"`
|
PaychGet func(ctx context.Context, from, to address.Address, amt types.BigInt) (*api.ChannelInfo, error) `perm:"sign"`
|
||||||
PaychGetWaitReady func(context.Context, cid.Cid) (address.Address, error) `perm:"sign"`
|
PaychGetWaitReady func(context.Context, cid.Cid) (address.Address, error) `perm:"sign"`
|
||||||
@ -1149,6 +1150,10 @@ func (c *FullNodeStruct) MarketReleaseFunds(ctx context.Context, addr address.Ad
|
|||||||
return c.Internal.MarketReleaseFunds(ctx, addr, amt)
|
return c.Internal.MarketReleaseFunds(ctx, addr, amt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *FullNodeStruct) MarketWithdraw(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) {
|
||||||
|
return c.Internal.MarketWithdraw(ctx, wallet, addr, amt)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *FullNodeStruct) PaychGet(ctx context.Context, from, to address.Address, amt types.BigInt) (*api.ChannelInfo, error) {
|
func (c *FullNodeStruct) PaychGet(ctx context.Context, from, to address.Address, amt types.BigInt) (*api.ChannelInfo, error) {
|
||||||
return c.Internal.PaychGet(ctx, from, to, amt)
|
return c.Internal.PaychGet(ctx, from, to, amt)
|
||||||
}
|
}
|
||||||
|
@ -16,11 +16,8 @@ import (
|
|||||||
"github.com/filecoin-project/go-state-types/abi"
|
"github.com/filecoin-project/go-state-types/abi"
|
||||||
"github.com/filecoin-project/go-state-types/big"
|
"github.com/filecoin-project/go-state-types/big"
|
||||||
"github.com/filecoin-project/go-state-types/crypto"
|
"github.com/filecoin-project/go-state-types/crypto"
|
||||||
"github.com/filecoin-project/specs-actors/actors/builtin/market"
|
|
||||||
"github.com/filecoin-project/specs-actors/v2/actors/builtin"
|
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/chain/actors"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
types "github.com/filecoin-project/lotus/chain/types"
|
|
||||||
"github.com/filecoin-project/lotus/lib/tablewriter"
|
"github.com/filecoin-project/lotus/lib/tablewriter"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -585,27 +582,13 @@ var walletMarketWithdraw = &cli.Command{
|
|||||||
return xerrors.Errorf("zero unlocked funds available to withdraw")
|
return xerrors.Errorf("zero unlocked funds available to withdraw")
|
||||||
}
|
}
|
||||||
|
|
||||||
params, err := actors.SerializeParams(&market.WithdrawBalanceParams{
|
|
||||||
ProviderOrClientAddress: addr,
|
|
||||||
Amount: amt,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return xerrors.Errorf("serializing params: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("Submitting WithdrawBalance message for amount %s for address %s\n", types.FIL(amt), from.String())
|
fmt.Printf("Submitting WithdrawBalance message for amount %s for address %s\n", types.FIL(amt), from.String())
|
||||||
smsg, err := api.MpoolPushMessage(ctx, &types.Message{
|
smsg, err := api.MarketWithdraw(ctx, from, addr, amt)
|
||||||
To: builtin.StorageMarketActorAddr,
|
|
||||||
From: from,
|
|
||||||
Value: types.NewInt(0),
|
|
||||||
Method: builtin.MethodsMarket.WithdrawBalance,
|
|
||||||
Params: params,
|
|
||||||
}, nil)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("submitting WithdrawBalance message: %w", err)
|
return xerrors.Errorf("fund manager withdraw error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf("WithdrawBalance message cid: %s\n", smsg.Cid())
|
fmt.Printf("WithdrawBalance message cid: %s\n", smsg)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
@ -5,10 +5,11 @@ import (
|
|||||||
|
|
||||||
"go.uber.org/fx"
|
"go.uber.org/fx"
|
||||||
|
|
||||||
|
"github.com/ipfs/go-cid"
|
||||||
|
|
||||||
"github.com/filecoin-project/go-address"
|
"github.com/filecoin-project/go-address"
|
||||||
"github.com/filecoin-project/lotus/chain/market"
|
"github.com/filecoin-project/lotus/chain/market"
|
||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
"github.com/ipfs/go-cid"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type MarketAPI struct {
|
type MarketAPI struct {
|
||||||
@ -24,3 +25,7 @@ func (a *MarketAPI) MarketReserveFunds(ctx context.Context, wallet address.Addre
|
|||||||
func (a *MarketAPI) MarketReleaseFunds(ctx context.Context, addr address.Address, amt types.BigInt) error {
|
func (a *MarketAPI) MarketReleaseFunds(ctx context.Context, addr address.Address, amt types.BigInt) error {
|
||||||
return a.FMgr.Release(addr, amt)
|
return a.FMgr.Release(addr, amt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *MarketAPI) MarketWithdraw(ctx context.Context, wallet, addr address.Address, amt types.BigInt) (cid.Cid, error) {
|
||||||
|
return a.FMgr.Withdraw(ctx, wallet, addr, amt)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user