Modify tooling to support new WithdrawBalance return

This commit is contained in:
Aayush Rajasekaran 2021-09-29 12:59:51 -04:00
parent dc8de20b9a
commit 2bafdf7271
5 changed files with 499 additions and 32 deletions

View File

@ -2,6 +2,7 @@ package cli
import (
"bufio"
"bytes"
"encoding/hex"
"encoding/json"
"fmt"
@ -9,6 +10,8 @@ import (
"os"
"strings"
"github.com/filecoin-project/lotus/build"
"github.com/urfave/cli/v2"
"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)",
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 {
api, closer, err := GetFullNodeAPI(cctx)
@ -614,6 +622,28 @@ var walletMarketWithdraw = &cli.Command{
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
},
}

View File

@ -1,6 +1,7 @@
package main
import (
"bytes"
"fmt"
"os"
"strings"
@ -207,6 +208,13 @@ var actorWithdrawCmd = &cli.Command{
Name: "withdraw",
Usage: "withdraw available balance",
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 {
nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx)
if err != nil {
@ -271,6 +279,28 @@ var actorWithdrawCmd = &cli.Command{
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
},
}

View File

@ -1,6 +1,7 @@
package main
import (
"bytes"
"fmt"
"os"
@ -44,6 +45,11 @@ var actorWithdrawCmd = &cli.Command{
Name: "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 {
var maddr address.Address
@ -120,6 +126,28 @@ var actorWithdrawCmd = &cli.Command{
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
},
}

View File

@ -16,8 +16,9 @@ require (
github.com/filecoin-project/lotus v0.0.0-00010101000000-000000000000
github.com/filecoin-project/specs-actors v0.9.14
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/influxdata/influxdb v1.9.4 // indirect
github.com/ipfs/go-cid v0.1.0
github.com/ipfs/go-datastore v0.4.5
github.com/ipfs/go-ipfs-files v0.0.8

File diff suppressed because it is too large Load Diff