I am writing a test for a function in my smart contract which attempts to verify that a message comes from the signer. I'm currently using web3.eth.accounts.sign to sign my message with the sender account. I then use the response hash (signedMessage) to recover my address.
const sender = accounts[0] const message = web3.utils.soliditySha3('hello-world') const signedMessage = await web3.eth.accounts.sign(message, sender) const {signature, messageHash, v, r, s} = signedMessage const recoveredAddress = await web3.eth.accounts.recover({ messageHash: messageHash, v: v, r: r, s: s }) console.log("sender: ", sender) console.log("recoveredAddress: ", recoveredAddress) This is what the terminal is outputting for my console.log:
sender: 0x627306090abaB3A6e1400e9345bC60c78a8BEf57 recoveredAddress: 0x170e85941BAeE85CFEA0cAd2EDf798DC5C287AA1 Why is the recovered address different from the sender address?
EDIT: The issue I was having was that I was using the public key to sign my message. I should have been using a private key.