Skip to content

Commit f10a684

Browse files
committed
feat(cli): add FRC-102 compatible EIP-191 signing via --fevm flag (#13256)
1 parent a3ea238 commit f10a684

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

cli/wallet.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,12 @@ var walletSign = &cli.Command{
433433
Name: "sign",
434434
Usage: "sign a message",
435435
ArgsUsage: "<signing address> <hexMessage>",
436+
Flags: []cli.Flag{
437+
&cli.BoolFlag{
438+
Name: "fevm",
439+
Usage: "Use EIP-191 (Ethereum-style) prefix for signing FEVM messages per FRC-102",
440+
},
441+
},
436442
Action: func(cctx *cli.Context) error {
437443
api, closer, err := GetFullNodeAPI(cctx)
438444
if err != nil {
@@ -459,7 +465,18 @@ var walletSign = &cli.Command{
459465
return err
460466
}
461467

462-
sig, err := api.WalletSign(ctx, addr, msg)
468+
var prefix []byte
469+
if cctx.Bool("fevm") {
470+
//EVM-Compatible
471+
prefix = []byte(fmt.Sprintf("\x19Ethereum Signed Message:\n%d", len(msg)))
472+
} else {
473+
//Filecoin
474+
prefix = []byte(fmt.Sprintf("Filecoin Signed Message:\n%d", len(msg)))
475+
}
476+
477+
toSign := append(prefix, msg...)
478+
479+
sig, err := api.WalletSign(ctx, addr, toSign)
463480

464481
if err != nil {
465482
// Check if the address is a multisig address

documentation/en/cli-lotus.md

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)