From 088d231cda12cf89453ecbaa08afaaed9f53323c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Thu, 9 Feb 2023 23:51:35 +0100 Subject: [PATCH] fix: Don't call WalletExport in msg signing flows --- chain/messagesigner/messagesigner.go | 12 +++--------- node/impl/full/wallet.go | 7 +------ 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/chain/messagesigner/messagesigner.go b/chain/messagesigner/messagesigner.go index 84dd6d0aa05..cd31a3b739e 100644 --- a/chain/messagesigner/messagesigner.go +++ b/chain/messagesigner/messagesigner.go @@ -13,13 +13,11 @@ import ( "golang.org/x/xerrors" "github.com/filecoin-project/go-address" - "github.com/filecoin-project/go-state-types/crypto" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/chain/messagepool" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types/ethtypes" - "github.com/filecoin-project/lotus/chain/wallet/key" "github.com/filecoin-project/lotus/node/modules/dtypes" ) @@ -69,11 +67,7 @@ func (ms *MessageSigner) SignMessage(ctx context.Context, msg *types.Message, sp // Sign the message with the nonce msg.Nonce = nonce - keyInfo, err := ms.wallet.WalletExport(ctx, msg.From) - if err != nil { - return nil, err - } - sb, err := SigningBytes(msg, key.ActSigType(keyInfo.Type)) + sb, err := SigningBytes(msg, msg.From.Protocol()) if err != nil { return nil, err } @@ -200,8 +194,8 @@ func (ms *MessageSigner) dstoreKey(addr address.Address) datastore.Key { return datastore.KeyWithNamespaces([]string{dsKeyActorNonce, addr.String()}) } -func SigningBytes(msg *types.Message, sigType crypto.SigType) ([]byte, error) { - if sigType == crypto.SigTypeDelegated { +func SigningBytes(msg *types.Message, sigType address.Protocol) ([]byte, error) { + if sigType == address.Delegated { txArgs, err := ethtypes.EthTxArgsFromUnsignedEthMessage(msg) if err != nil { return nil, xerrors.Errorf("failed to reconstruct eth transaction: %w", err) diff --git a/node/impl/full/wallet.go b/node/impl/full/wallet.go index 0927e5acafb..fdf00e0864f 100644 --- a/node/impl/full/wallet.go +++ b/node/impl/full/wallet.go @@ -15,7 +15,6 @@ import ( "github.com/filecoin-project/lotus/chain/stmgr" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/wallet" - "github.com/filecoin-project/lotus/chain/wallet/key" "github.com/filecoin-project/lotus/lib/sigs" ) @@ -53,11 +52,7 @@ func (a *WalletAPI) WalletSignMessage(ctx context.Context, k address.Address, ms return nil, xerrors.Errorf("failed to resolve ID address: %w", keyAddr) } - keyInfo, err := a.Wallet.WalletExport(ctx, k) - if err != nil { - return nil, err - } - sb, err := messagesigner.SigningBytes(msg, key.ActSigType(keyInfo.Type)) + sb, err := messagesigner.SigningBytes(msg, keyAddr.Protocol()) if err != nil { return nil, err }