Merge pull request #4311 from filecoin-project/feat/msig-remove-cmd
Add propose remove
This commit is contained in:
commit
dfd6fbfaa4
@ -45,6 +45,7 @@ type MessageBuilder interface {
|
|||||||
|
|
||||||
// this type is the same between v0 and v2
|
// this type is the same between v0 and v2
|
||||||
type ProposalHashData = multisig2.ProposalHashData
|
type ProposalHashData = multisig2.ProposalHashData
|
||||||
|
type ProposeReturn = multisig2.ProposeReturn
|
||||||
|
|
||||||
func txnParams(id uint64, data *ProposalHashData) ([]byte, error) {
|
func txnParams(id uint64, data *ProposalHashData) ([]byte, error) {
|
||||||
params := multisig2.TxnIDParams{ID: multisig2.TxnID(id)}
|
params := multisig2.TxnIDParams{ID: multisig2.TxnID(id)}
|
||||||
|
@ -45,6 +45,7 @@ var multisigCmd = &cli.Command{
|
|||||||
msigCreateCmd,
|
msigCreateCmd,
|
||||||
msigInspectCmd,
|
msigInspectCmd,
|
||||||
msigProposeCmd,
|
msigProposeCmd,
|
||||||
|
msigRemoveProposeCmd,
|
||||||
msigApproveCmd,
|
msigApproveCmd,
|
||||||
msigAddProposeCmd,
|
msigAddProposeCmd,
|
||||||
msigAddApproveCmd,
|
msigAddApproveCmd,
|
||||||
@ -543,6 +544,84 @@ var msigApproveCmd = &cli.Command{
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var msigRemoveProposeCmd = &cli.Command{
|
||||||
|
Name: "propose-remove",
|
||||||
|
Usage: "Propose to remove a signer",
|
||||||
|
ArgsUsage: "[multisigAddress signer]",
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.BoolFlag{
|
||||||
|
Name: "decrease-threshold",
|
||||||
|
Usage: "whether the number of required signers should be decreased",
|
||||||
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "from",
|
||||||
|
Usage: "account to send the propose message from",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Action: func(cctx *cli.Context) error {
|
||||||
|
if cctx.Args().Len() != 2 {
|
||||||
|
return ShowHelp(cctx, fmt.Errorf("must pass multisig address and signer address"))
|
||||||
|
}
|
||||||
|
|
||||||
|
api, closer, err := GetFullNodeAPI(cctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer closer()
|
||||||
|
ctx := ReqContext(cctx)
|
||||||
|
|
||||||
|
msig, err := address.NewFromString(cctx.Args().Get(0))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
addr, err := address.NewFromString(cctx.Args().Get(1))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var from address.Address
|
||||||
|
if cctx.IsSet("from") {
|
||||||
|
f, err := address.NewFromString(cctx.String("from"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
from = f
|
||||||
|
} else {
|
||||||
|
defaddr, err := api.WalletDefaultAddress(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
from = defaddr
|
||||||
|
}
|
||||||
|
|
||||||
|
msgCid, err := api.MsigRemoveSigner(ctx, msig, from, addr, cctx.Bool("decrease-threshold"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("sent remove proposal in message: ", msgCid)
|
||||||
|
|
||||||
|
wait, err := api.StateWaitMsg(ctx, msgCid, build.MessageConfidence)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if wait.Receipt.ExitCode != 0 {
|
||||||
|
return fmt.Errorf("add proposal returned exit %d", wait.Receipt.ExitCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
var ret multisig.ProposeReturn
|
||||||
|
err = ret.UnmarshalCBOR(bytes.NewReader(wait.Receipt.Return))
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("decoding proposal return: %w", err)
|
||||||
|
}
|
||||||
|
fmt.Printf("TxnID: %d", ret.TxnID)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
var msigAddProposeCmd = &cli.Command{
|
var msigAddProposeCmd = &cli.Command{
|
||||||
Name: "add-propose",
|
Name: "add-propose",
|
||||||
Usage: "Propose to add a signer",
|
Usage: "Propose to add a signer",
|
||||||
|
Loading…
Reference in New Issue
Block a user