diff --git a/cli/multisig.go b/cli/multisig.go index 1af2a4c9e4e..c14f7356686 100644 --- a/cli/multisig.go +++ b/cli/multisig.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + builtintypes "github.com/filecoin-project/go-state-types/builtin" "reflect" "sort" "strconv" @@ -410,7 +411,16 @@ var msigProposeCmd = &cli.Command{ if err != nil { return err } - params = p + + if abi.MethodNum(method) == builtintypes.MethodsEVM.InvokeContract { + var buffer bytes.Buffer + if err := cbg.WriteByteArray(&buffer, p); err != nil { + return xerrors.Errorf("failed to encode evm params as cbor: %w", err) + } + params = buffer.Bytes() + } else { + params = p + } } var from address.Address @@ -582,7 +592,15 @@ var msigApproveCmd = &cli.Command{ if err != nil { return err } - params = p + if abi.MethodNum(method) == builtintypes.MethodsEVM.InvokeContract { + var buffer bytes.Buffer + if err := cbg.WriteByteArray(&buffer, p); err != nil { + return xerrors.Errorf("failed to encode evm params as cbor: %w", err) + } + params = buffer.Bytes() + } else { + params = p + } } proto, err := api.MsigApproveTxnHash(ctx, msig, txid, proposer, dest, types.BigInt(value), from, method, params) @@ -707,7 +725,16 @@ var msigCancelCmd = &cli.Command{ if err != nil { return err } - params = p + + if abi.MethodNum(method) == builtintypes.MethodsEVM.InvokeContract { + var buffer bytes.Buffer + if err := cbg.WriteByteArray(&buffer, p); err != nil { + return xerrors.Errorf("failed to encode evm params as cbor: %w", err) + } + params = buffer.Bytes() + } else { + params = p + } } proto, err := api.MsigCancelTxnHash(ctx, msig, txid, dest, types.BigInt(value), from, method, params)