Modify tooling to support new WithdrawBalance return
This commit is contained in:
parent
dc8de20b9a
commit
2bafdf7271
@ -2,6 +2,7 @@ package cli
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"bytes"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -9,6 +10,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/lotus/build"
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
@ -528,6 +531,11 @@ var walletMarketWithdraw = &cli.Command{
|
|||||||
Usage: "Market address to withdraw from (account or miner actor address, defaults to --wallet address)",
|
Usage: "Market address to withdraw from (account or miner actor address, defaults to --wallet address)",
|
||||||
Aliases: []string{"a"},
|
Aliases: []string{"a"},
|
||||||
},
|
},
|
||||||
|
&cli.IntFlag{
|
||||||
|
Name: "confidence",
|
||||||
|
Usage: "number of block confirmations to wait for",
|
||||||
|
Value: int(build.MessageConfidence),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: func(cctx *cli.Context) error {
|
Action: func(cctx *cli.Context) error {
|
||||||
api, closer, err := GetFullNodeAPI(cctx)
|
api, closer, err := GetFullNodeAPI(cctx)
|
||||||
@ -614,6 +622,28 @@ var walletMarketWithdraw = &cli.Command{
|
|||||||
|
|
||||||
fmt.Printf("WithdrawBalance message cid: %s\n", smsg)
|
fmt.Printf("WithdrawBalance message cid: %s\n", smsg)
|
||||||
|
|
||||||
|
// wait for it to get mined into a block
|
||||||
|
wait, err := api.StateWaitMsg(ctx, smsg, uint64(cctx.Int("confidence")))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// check it executed successfully
|
||||||
|
if wait.Receipt.ExitCode != 0 {
|
||||||
|
fmt.Println(cctx.App.Writer, "withdrawal failed!")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var withdrawn abi.TokenAmount
|
||||||
|
if err := withdrawn.UnmarshalCBOR(bytes.NewReader(wait.Receipt.Return)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Successfully withdrew %s FIL\n", withdrawn)
|
||||||
|
if withdrawn != amt {
|
||||||
|
fmt.Printf("Note that this is less than the requested amount of %s FIL\n", amt)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
@ -207,6 +208,13 @@ var actorWithdrawCmd = &cli.Command{
|
|||||||
Name: "withdraw",
|
Name: "withdraw",
|
||||||
Usage: "withdraw available balance",
|
Usage: "withdraw available balance",
|
||||||
ArgsUsage: "[amount (FIL)]",
|
ArgsUsage: "[amount (FIL)]",
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.IntFlag{
|
||||||
|
Name: "confidence",
|
||||||
|
Usage: "number of block confirmations to wait for",
|
||||||
|
Value: int(build.MessageConfidence),
|
||||||
|
},
|
||||||
|
},
|
||||||
Action: func(cctx *cli.Context) error {
|
Action: func(cctx *cli.Context) error {
|
||||||
nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx)
|
nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -271,6 +279,28 @@ var actorWithdrawCmd = &cli.Command{
|
|||||||
|
|
||||||
fmt.Printf("Requested rewards withdrawal in message %s\n", smsg.Cid())
|
fmt.Printf("Requested rewards withdrawal in message %s\n", smsg.Cid())
|
||||||
|
|
||||||
|
// wait for it to get mined into a block
|
||||||
|
wait, err := api.StateWaitMsg(ctx, smsg.Cid(), uint64(cctx.Int("confidence")))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// check it executed successfully
|
||||||
|
if wait.Receipt.ExitCode != 0 {
|
||||||
|
fmt.Println(cctx.App.Writer, "withdrawal failed!")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var withdrawn abi.TokenAmount
|
||||||
|
if err := withdrawn.UnmarshalCBOR(bytes.NewReader(wait.Receipt.Return)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Successfully withdrew %s FIL\n", withdrawn)
|
||||||
|
if withdrawn != amount {
|
||||||
|
fmt.Printf("Note that this is less than the requested amount of %s FIL\n", amount)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
@ -44,6 +45,11 @@ var actorWithdrawCmd = &cli.Command{
|
|||||||
Name: "actor",
|
Name: "actor",
|
||||||
Usage: "specify the address of miner actor",
|
Usage: "specify the address of miner actor",
|
||||||
},
|
},
|
||||||
|
&cli.IntFlag{
|
||||||
|
Name: "confidence",
|
||||||
|
Usage: "number of block confirmations to wait for",
|
||||||
|
Value: int(build.MessageConfidence),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Action: func(cctx *cli.Context) error {
|
Action: func(cctx *cli.Context) error {
|
||||||
var maddr address.Address
|
var maddr address.Address
|
||||||
@ -120,6 +126,28 @@ var actorWithdrawCmd = &cli.Command{
|
|||||||
|
|
||||||
fmt.Printf("Requested rewards withdrawal in message %s\n", smsg.Cid())
|
fmt.Printf("Requested rewards withdrawal in message %s\n", smsg.Cid())
|
||||||
|
|
||||||
|
// wait for it to get mined into a block
|
||||||
|
wait, err := nodeAPI.StateWaitMsg(ctx, smsg.Cid(), uint64(cctx.Int("confidence")))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// check it executed successfully
|
||||||
|
if wait.Receipt.ExitCode != 0 {
|
||||||
|
fmt.Println(cctx.App.Writer, "withdrawal failed!")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var withdrawn abi.TokenAmount
|
||||||
|
if err := withdrawn.UnmarshalCBOR(bytes.NewReader(wait.Receipt.Return)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Successfully withdrew %s FIL\n", withdrawn)
|
||||||
|
if withdrawn != amount {
|
||||||
|
fmt.Printf("Note that this is less than the requested amount of %s FIL\n", amount)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,9 @@ require (
|
|||||||
github.com/filecoin-project/lotus v0.0.0-00010101000000-000000000000
|
github.com/filecoin-project/lotus v0.0.0-00010101000000-000000000000
|
||||||
github.com/filecoin-project/specs-actors v0.9.14
|
github.com/filecoin-project/specs-actors v0.9.14
|
||||||
github.com/google/uuid v1.2.0
|
github.com/google/uuid v1.2.0
|
||||||
github.com/gorilla/mux v1.7.4
|
github.com/gorilla/mux v1.8.0
|
||||||
github.com/hashicorp/go-multierror v1.1.0
|
github.com/hashicorp/go-multierror v1.1.0
|
||||||
|
github.com/influxdata/influxdb v1.9.4 // indirect
|
||||||
github.com/ipfs/go-cid v0.1.0
|
github.com/ipfs/go-cid v0.1.0
|
||||||
github.com/ipfs/go-datastore v0.4.5
|
github.com/ipfs/go-datastore v0.4.5
|
||||||
github.com/ipfs/go-ipfs-files v0.0.8
|
github.com/ipfs/go-ipfs-files v0.0.8
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user