From ae1aea748afbfe45404f5fd37d4e6d3ac013ae3b Mon Sep 17 00:00:00 2001 From: Aayush Rajasekaran Date: Thu, 18 Nov 2021 18:52:20 -0500 Subject: [PATCH] CLI: Add a lotus multisig cancel command --- api/api_full.go | 6 +- api/mocks/mock_full.go | 23 +++- api/proxy_gen.go | 21 +++- api/v0api/v1_wrapper.go | 2 +- build/openrpc/full.json.gz | Bin 25453 -> 25493 bytes build/openrpc/miner.json.gz | Bin 10467 -> 10466 bytes build/openrpc/worker.json.gz | Bin 2713 -> 2713 bytes cli/multisig.go | 130 +++++++++++++++++++- documentation/en/api-v1-unstable-methods.md | 39 ++++++ documentation/en/cli-lotus.md | 15 +++ node/impl/full/multisig.go | 10 +- 11 files changed, 232 insertions(+), 14 deletions(-) diff --git a/api/api_full.go b/api/api_full.go index 158590b0da6..6235e98d66b 100644 --- a/api/api_full.go +++ b/api/api_full.go @@ -630,10 +630,14 @@ type FullNode interface { // , , MsigApproveTxnHash(context.Context, address.Address, uint64, address.Address, address.Address, types.BigInt, address.Address, uint64, []byte) (*MessagePrototype, error) //perm:sign + // MsigCancel cancels a previously-proposed multisig message + // It takes the following params: , + MsigCancel(context.Context, address.Address, uint64, address.Address) (*MessagePrototype, error) //perm:sign + // MsigCancel cancels a previously-proposed multisig message // It takes the following params: , , , , // , , - MsigCancel(context.Context, address.Address, uint64, address.Address, types.BigInt, address.Address, uint64, []byte) (*MessagePrototype, error) //perm:sign + MsigCancelTxnHash(context.Context, address.Address, uint64, address.Address, types.BigInt, address.Address, uint64, []byte) (*MessagePrototype, error) //perm:sign // MsigAddPropose proposes adding a signer in the multisig // It takes the following params: , , diff --git a/api/mocks/mock_full.go b/api/mocks/mock_full.go index a6781b0b7f8..44fe82b6095 100644 --- a/api/mocks/mock_full.go +++ b/api/mocks/mock_full.go @@ -1428,18 +1428,33 @@ func (mr *MockFullNodeMockRecorder) MsigApproveTxnHash(arg0, arg1, arg2, arg3, a } // MsigCancel mocks base method. -func (m *MockFullNode) MsigCancel(arg0 context.Context, arg1 address.Address, arg2 uint64, arg3 address.Address, arg4 big.Int, arg5 address.Address, arg6 uint64, arg7 []byte) (*api.MessagePrototype, error) { +func (m *MockFullNode) MsigCancel(arg0 context.Context, arg1 address.Address, arg2 uint64, arg3 address.Address) (*api.MessagePrototype, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MsigCancel", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) + ret := m.ctrl.Call(m, "MsigCancel", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*api.MessagePrototype) ret1, _ := ret[1].(error) return ret0, ret1 } // MsigCancel indicates an expected call of MsigCancel. -func (mr *MockFullNodeMockRecorder) MsigCancel(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 interface{}) *gomock.Call { +func (mr *MockFullNodeMockRecorder) MsigCancel(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MsigCancel", reflect.TypeOf((*MockFullNode)(nil).MsigCancel), arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MsigCancel", reflect.TypeOf((*MockFullNode)(nil).MsigCancel), arg0, arg1, arg2, arg3) +} + +// MsigCancelTxnHash mocks base method. +func (m *MockFullNode) MsigCancelTxnHash(arg0 context.Context, arg1 address.Address, arg2 uint64, arg3 address.Address, arg4 big.Int, arg5 address.Address, arg6 uint64, arg7 []byte) (*api.MessagePrototype, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "MsigCancelTxnHash", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) + ret0, _ := ret[0].(*api.MessagePrototype) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// MsigCancelTxnHash indicates an expected call of MsigCancelTxnHash. +func (mr *MockFullNodeMockRecorder) MsigCancelTxnHash(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MsigCancelTxnHash", reflect.TypeOf((*MockFullNode)(nil).MsigCancelTxnHash), arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) } // MsigCreate mocks base method. diff --git a/api/proxy_gen.go b/api/proxy_gen.go index b36f19a7e1e..02a87ff766b 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -270,7 +270,9 @@ type FullNodeStruct struct { MsigApproveTxnHash func(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 address.Address, p5 types.BigInt, p6 address.Address, p7 uint64, p8 []byte) (*MessagePrototype, error) `perm:"sign"` - MsigCancel func(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 types.BigInt, p5 address.Address, p6 uint64, p7 []byte) (*MessagePrototype, error) `perm:"sign"` + MsigCancel func(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address) (*MessagePrototype, error) `perm:"sign"` + + MsigCancelTxnHash func(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 types.BigInt, p5 address.Address, p6 uint64, p7 []byte) (*MessagePrototype, error) `perm:"sign"` MsigCreate func(p0 context.Context, p1 uint64, p2 []address.Address, p3 abi.ChainEpoch, p4 types.BigInt, p5 address.Address, p6 types.BigInt) (*MessagePrototype, error) `perm:"sign"` @@ -1943,14 +1945,25 @@ func (s *FullNodeStub) MsigApproveTxnHash(p0 context.Context, p1 address.Address return nil, ErrNotSupported } -func (s *FullNodeStruct) MsigCancel(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 types.BigInt, p5 address.Address, p6 uint64, p7 []byte) (*MessagePrototype, error) { +func (s *FullNodeStruct) MsigCancel(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address) (*MessagePrototype, error) { if s.Internal.MsigCancel == nil { return nil, ErrNotSupported } - return s.Internal.MsigCancel(p0, p1, p2, p3, p4, p5, p6, p7) + return s.Internal.MsigCancel(p0, p1, p2, p3) +} + +func (s *FullNodeStub) MsigCancel(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address) (*MessagePrototype, error) { + return nil, ErrNotSupported +} + +func (s *FullNodeStruct) MsigCancelTxnHash(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 types.BigInt, p5 address.Address, p6 uint64, p7 []byte) (*MessagePrototype, error) { + if s.Internal.MsigCancelTxnHash == nil { + return nil, ErrNotSupported + } + return s.Internal.MsigCancelTxnHash(p0, p1, p2, p3, p4, p5, p6, p7) } -func (s *FullNodeStub) MsigCancel(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 types.BigInt, p5 address.Address, p6 uint64, p7 []byte) (*MessagePrototype, error) { +func (s *FullNodeStub) MsigCancelTxnHash(p0 context.Context, p1 address.Address, p2 uint64, p3 address.Address, p4 types.BigInt, p5 address.Address, p6 uint64, p7 []byte) (*MessagePrototype, error) { return nil, ErrNotSupported } diff --git a/api/v0api/v1_wrapper.go b/api/v0api/v1_wrapper.go index 7f729160082..e36f478f5f9 100644 --- a/api/v0api/v1_wrapper.go +++ b/api/v0api/v1_wrapper.go @@ -108,7 +108,7 @@ func (w *WrapperV1Full) MsigApproveTxnHash(ctx context.Context, msig address.Add } func (w *WrapperV1Full) MsigCancel(ctx context.Context, msig address.Address, txID uint64, to address.Address, amt types.BigInt, src address.Address, method uint64, params []byte) (cid.Cid, error) { - p, err := w.FullNode.MsigCancel(ctx, msig, txID, to, amt, src, method, params) + p, err := w.FullNode.MsigCancelTxnHash(ctx, msig, txID, to, amt, src, method, params) if err != nil { return cid.Undef, xerrors.Errorf("creating prototype: %w", err) } diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 1578d746536613ea03a22c6165e5561d65e3df7a..901cb24bb747d8ddf711a9e6e5c9f77f601b3ef1 100644 GIT binary patch delta 25282 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�su}P62n-tD5~)_R`hd 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 delta 25243 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 ZIa(O-Zs!di3hM36jJ}3i?*R_#e*ljH6}|uf diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 335e47cc7c62309b4116a458578599e4cc338c56..2d48e544bca2164671adf360ccd250ccddad70a2 100644 GIT binary patch delta 10429 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 n%Wuy00960y^S}h=e4pDS#y*$7;s^{T%?j6W~ph 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 o(#vt8EQvr!(~o(^_EeSH6+l@}+ z1Y4N0A;JZJy z4*V9fIaBbg8t2jf7V_IjDlW(f8aH4oF0Nr{A-{vZ-H`!pd}Tgy9EcjYq2IwmeixP9 z>CM}^Ac`D+q62+Nhs1`)IdR>~3k!h|TpXg8TXw7H5Xr_RQy>^|=hC5{e@2YDQI%UI zKm~%KpBOylnme@6FG76b>L&1gE)+PLW~zT;vV!&x{FWA53#os_+*cw1JsG|Ln`gdh`hDZ9Cz4P{(Mj?}ocTbFf80p`r8V3U;z~c&#OW6aqa3EaV z$77{@*>5&SVU>o>z2-265J$e?ny;p-;Yf4f@3M7Me^I^}5U2sbP8jJf0DuKOUN2!~Ftoo9hZ0n^u?@3J zYYxns>90C=*0FQnVrToTICfsLAvcVenxr^Cv-mJX*IX6>_5Dh5FKNyw_QjlTC4EzW z#M~06kf~I~G5m{5HSbCTfAmP)K>Oy)5#s``LGnP@v-GotQw1;hGk90yiKI4halhBG zbivIN@#h!UAVEB89n}TrS6^lH*Kgrp+PO~+y-C9G%gmVK70a}M=Xsr3=4!eifkDp^ z_fPjMuHe?;`F>@*25H+f8nq6LteJTFgOQeN(ekd^hq6IZXP0iQB{t zc`v&AC(zNjQZi+ODUw~awc}2StqE>}ls6z{q+CWummw~;z967ZKyK_+2$@l+q@FLJ-AoLxjN46S)4m-m7Flw4*g2N`styBcq192h1Jv= z5intBn?W!mb~@ct$HJYk-(84>d!Od1Qy(>os8Pf_LJ{qfgXo!vxXyw(Azp9IoP^`` zmd#23KLj+?i|3txGu2%H429bK_Ao;o`Rd5GZ;`K4a*TYvjrFhJQNOLN^sDyJf1(et za4x_?gFvDA=6V+IwMy-n*H++A8NOAp-Yx%bcFUjjN)9#OfLiY*nF(PTOdN3TF4^su zH1OITe;HPm?D|VO^oV$nNR44;6+|M4?louD(Li6gLTXHZ^beItf>M-?Zkb0WNRbCX z1P$Q{Nw7I{BvKq{_fAGcfxb{gJ|L~`PT+2EkKvDbJ7>L#?^EyWxa81eynXbeYDyy~3hYvs3N8R;#nDZC|5vVpf0sXY;Yuw8N!lvr}vMYc%{r z$;m)HClLZzL%}1$jp=vP+$Pj}&RDJ8??SszOU~`g=EU@M4s*KVC9p^QZ~2M8lOgrX zblJjq-tv;A@rve+7R+f$iVa~_10CH4tyULM^x}elS1*KDNRgY7)%B|++-7#AwRC1$ z{g-gdt51|3l&eg>sqxdw1l69Wj?PMsVGlHz|`k6W@sRG-JGpSx6gO<2w>w)lOgUaNb$iBCN3?U$QSu+hQOnA&4RnM1XRx(_dK6}9!Hh)%0RR68 L-M9-cS$Y5f@zzlj delta 2706 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 [destination value [methodId methodParams]]", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "from", + Usage: "account to send the cancel message from", + }, + }, + Action: func(cctx *cli.Context) error { + if cctx.Args().Len() < 2 { + return ShowHelp(cctx, fmt.Errorf("must pass at least multisig address and message ID")) + } + + if cctx.Args().Len() > 2 && cctx.Args().Len() < 4 { + return ShowHelp(cctx, fmt.Errorf("usage: msig cancel ")) + } + + if cctx.Args().Len() > 4 && cctx.Args().Len() != 6 { + return ShowHelp(cctx, fmt.Errorf("usage: msig cancel [ ]")) + } + + srv, err := GetFullNodeServices(cctx) + if err != nil { + return err + } + defer srv.Close() //nolint:errcheck + + api := srv.FullNodeAPI() + ctx := ReqContext(cctx) + + msig, err := address.NewFromString(cctx.Args().Get(0)) + if err != nil { + return err + } + + txid, err := strconv.ParseUint(cctx.Args().Get(1), 10, 64) + 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 + } + + var msgCid cid.Cid + if cctx.Args().Len() == 2 { + proto, err := api.MsigCancel(ctx, msig, txid, from) + if err != nil { + return err + } + + sm, err := InteractiveSend(ctx, cctx, srv, proto) + if err != nil { + return err + } + + msgCid = sm.Cid() + } else { + dest, err := address.NewFromString(cctx.Args().Get(2)) + if err != nil { + return err + } + + value, err := types.ParseFIL(cctx.Args().Get(3)) + if err != nil { + return err + } + + var method uint64 + var params []byte + if cctx.Args().Len() == 6 { + m, err := strconv.ParseUint(cctx.Args().Get(4), 10, 64) + if err != nil { + return err + } + method = m + + p, err := hex.DecodeString(cctx.Args().Get(5)) + if err != nil { + return err + } + params = p + } + + proto, err := api.MsigCancelTxnHash(ctx, msig, txid, dest, types.BigInt(value), from, method, params) + if err != nil { + return err + } + + sm, err := InteractiveSend(ctx, cctx, srv, proto) + if err != nil { + return err + } + + msgCid = sm.Cid() + } + + fmt.Println("sent cancel in message: ", msgCid) + + wait, err := api.StateWaitMsg(ctx, msgCid, uint64(cctx.Int("confidence")), build.Finality, true) + if err != nil { + return err + } + + if wait.Receipt.ExitCode != 0 { + return fmt.Errorf("cancel returned exit %d", wait.Receipt.ExitCode) + } + + return nil + }, +} + var msigRemoveProposeCmd = &cli.Command{ Name: "propose-remove", Usage: "Propose to remove a signer", @@ -1490,7 +1618,7 @@ var msigLockCancelCmd = &cli.Command{ return actErr } - proto, err := api.MsigCancel(ctx, msig, txid, msig, big.Zero(), from, uint64(multisig.Methods.LockBalance), params) + proto, err := api.MsigCancelTxnHash(ctx, msig, txid, msig, big.Zero(), from, uint64(multisig.Methods.LockBalance), params) if err != nil { return err } diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index b03f75e9d05..24eba2d0630 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -108,6 +108,7 @@ * [MsigApprove](#MsigApprove) * [MsigApproveTxnHash](#MsigApproveTxnHash) * [MsigCancel](#MsigCancel) + * [MsigCancelTxnHash](#MsigCancelTxnHash) * [MsigCreate](#MsigCreate) * [MsigGetAvailableBalance](#MsigGetAvailableBalance) * [MsigGetPending](#MsigGetPending) @@ -2702,6 +2703,44 @@ Response: ### MsigCancel MsigCancel cancels a previously-proposed multisig message +It takes the following params: , + + +Perms: sign + +Inputs: +```json +[ + "f01234", + 42, + "f01234" +] +``` + +Response: +```json +{ + "Message": { + "Version": 42, + "To": "f01234", + "From": "f01234", + "Nonce": 42, + "Value": "0", + "GasLimit": 9, + "GasFeeCap": "0", + "GasPremium": "0", + "Method": 1, + "Params": "Ynl0ZSBhcnJheQ==", + "CID": { + "/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s" + } + }, + "ValidNonce": true +} +``` + +### MsigCancelTxnHash +MsigCancel cancels a previously-proposed multisig message It takes the following params: , , , , , , diff --git a/documentation/en/cli-lotus.md b/documentation/en/cli-lotus.md index b0c5739188a..d617ac68469 100644 --- a/documentation/en/cli-lotus.md +++ b/documentation/en/cli-lotus.md @@ -857,6 +857,7 @@ COMMANDS: propose Propose a multisig transaction propose-remove Propose to remove a signer approve Approve a multisig message + cancel Cancel a multisig message add-propose Propose to add a signer add-approve Approve a message to add a signer add-cancel Cancel a message to add a signer @@ -952,6 +953,20 @@ OPTIONS: ``` +### lotus msig cancel +``` +NAME: + lotus msig cancel - Cancel a multisig message + +USAGE: + lotus msig cancel [command options] [destination value [methodId methodParams]] + +OPTIONS: + --from value account to send the cancel message from + --help, -h show help (default: false) + +``` + ### lotus msig add-propose ``` NAME: diff --git a/node/impl/full/multisig.go b/node/impl/full/multisig.go index 0d20c3f03ea..edc67ec9e29 100644 --- a/node/impl/full/multisig.go +++ b/node/impl/full/multisig.go @@ -100,7 +100,7 @@ func (a *MsigAPI) MsigAddCancel(ctx context.Context, msig address.Address, src a return nil, actErr } - return a.MsigCancel(ctx, msig, txID, msig, big.Zero(), src, uint64(multisig.Methods.AddSigner), enc) + return a.MsigCancelTxnHash(ctx, msig, txID, msig, big.Zero(), src, uint64(multisig.Methods.AddSigner), enc) } func (a *MsigAPI) MsigSwapPropose(ctx context.Context, msig address.Address, src address.Address, oldAdd address.Address, newAdd address.Address) (*api.MessagePrototype, error) { @@ -127,7 +127,7 @@ func (a *MsigAPI) MsigSwapCancel(ctx context.Context, msig address.Address, src return nil, actErr } - return a.MsigCancel(ctx, msig, txID, msig, big.Zero(), src, uint64(multisig.Methods.SwapSigner), enc) + return a.MsigCancelTxnHash(ctx, msig, txID, msig, big.Zero(), src, uint64(multisig.Methods.SwapSigner), enc) } func (a *MsigAPI) MsigApprove(ctx context.Context, msig address.Address, txID uint64, src address.Address) (*api.MessagePrototype, error) { @@ -138,7 +138,11 @@ func (a *MsigAPI) MsigApproveTxnHash(ctx context.Context, msig address.Address, return a.msigApproveOrCancelTxnHash(ctx, api.MsigApprove, msig, txID, proposer, to, amt, src, method, params) } -func (a *MsigAPI) MsigCancel(ctx context.Context, msig address.Address, txID uint64, to address.Address, amt types.BigInt, src address.Address, method uint64, params []byte) (*api.MessagePrototype, error) { +func (a *MsigAPI) MsigCancel(ctx context.Context, msig address.Address, txID uint64, src address.Address) (*api.MessagePrototype, error) { + return a.msigApproveOrCancelSimple(ctx, api.MsigCancel, msig, txID, src) +} + +func (a *MsigAPI) MsigCancelTxnHash(ctx context.Context, msig address.Address, txID uint64, to address.Address, amt types.BigInt, src address.Address, method uint64, params []byte) (*api.MessagePrototype, error) { return a.msigApproveOrCancelTxnHash(ctx, api.MsigCancel, msig, txID, src, to, amt, src, method, params) }