Восстановить адрес подписи Trezor, но вернуть другой адрес

Я создаю веб-сайт (Nextjs), который позволяет пользователю входить в систему с помощью кошелька Trezor, подписывая адрес Ethereum.

Во внешнем интерфейсе я использовал TrezorConnect для экспорта адресов Ethereum с путемm/44'/60'/0'/0/iи подпишите сообщение:

      const message = await TrezorConnect.ethereumSignMessage({
        message: data,
        path: m/44'/60'/0'/0/0,
        hex: true,
});

await axios.post(`/login`, { signature: `0x${message.payload.signature}` });

В серверной части (Nodejs) я использовалeth-sig-utilвосстановить подпись

      const recoveredAddress = recoverPersonalSignature({
        data,
        sig: signature,
});

if (recoveredAddress.toLowerCase() !== expectedAddress.toLowerCase()) {
      throw new HttpException('Signature is not correct.', 400);
}

Я видел, чтоrecoveredAddressотличается отexpectedAddressкоторым я подписывал сообщение. Но когда я использовал функцию «Проверить подпись сообщения» на EtherScan , оба были проверены с использованием одной и той же подписи (то есть0x${message.payload.signature}).

Есть ли другие способы проверить подпись Трезора? Буду рад, если кто-нибудь подскажет мне какие-нибудь решения.

0 ответов

Другие вопросы по тегам