diff --git a/cli/multisig.go b/cli/multisig.go index d88f5d963..f4b67e14d 100644 --- a/cli/multisig.go +++ b/cli/multisig.go @@ -878,6 +878,39 @@ var msigAddProposeCmd = &cli.Command{ from = defaddr } + store := adt.WrapStore(ctx, cbor.NewCborStore(blockstore.NewAPIBlockstore(api))) + + head, err := api.ChainHead(ctx) + if err != nil { + return err + } + + act, err := api.StateGetActor(ctx, msig, head.Key()) + if err != nil { + return err + } + + mstate, err := multisig.Load(store, act) + if err != nil { + return err + } + + signers, err := mstate.Signers() + if err != nil { + return err + } + + addrId, err := api.StateLookupID(ctx, addr, types.EmptyTSK) + if err != nil { + return err + } + + for _, s := range signers { + if s == addrId { + return fmt.Errorf("%s is already a signer", addr.String()) + } + } + proto, err := api.MsigAddPropose(ctx, msig, from, addr, cctx.Bool("increase-threshold")) if err != nil { return err