Skip to main content
Share Your Experience: Take the 2024 Developer Survey

Questions tagged [ecrecover]

Questions about EcRecover, a function of the programming language Solidity to verify a signature on the blockchain

Filter by
Sorted by
Tagged with
0 votes
0 answers
41 views

EIP-712: practical usage of the verifyingContract in the eip712Domain structure

Is the verifyingContract field in the eip712Domain used anywhere practically, e.g. calling to verify the signature, etc. etc.? Or is it just another protection trick for signature replay attacks? ...
Mila A's user avatar
  • 1,219
1 vote
1 answer
51 views

Can a validator include transactions with invalid signatures?

On Ethereum and ʙꜱᴄ an invalid signature (for exampler s v==0) has a 0x0 address. It’s only the signature that determine who is the ᴇᴏᴀ being used. Now, the yellow paper tell in which case a ...
user2284570's user avatar
  • 1,018
0 votes
1 answer
33 views

Cannot verify signature

I have been trying to do it but it always return me false, tried a lot of ways but I don't know. Here is the smart contract function _verify( bytes32 hashedMessage, bytes memory ...
AndRockSYS's user avatar
1 vote
1 answer
111 views

Why does Metamsk display the sign data as unicode question marks and other various characters when signing a message with Viem?

I'm trying to sign a message in Viem and recover the signer in Solidity, it works as expected, however, the Metamask pop-up window displays the data to be signed incorrectly. Here is my Viem ts code: ...
Rohan Nero's user avatar
  • 1,607
2 votes
1 answer
95 views

Ecrecover in smart contract doesn't return my address

I'm trying to call a smart contract on Base L2 that has an ecrecover function, but when I sign a message and pass it my r,s,v values (contract accepts 4 params, all uint256, presumably hashedmessage, ...
McD's user avatar
  • 23
1 vote
1 answer
72 views

How to get r, s and v values for ecrecover using Solidity?

I've seen some answers showing how to get r, s, v values using web3.js but how to retrieve them using Solidity? Assuming I enter the signature into the contract.
ratib90486's user avatar
0 votes
0 answers
89 views

removeLiqudityWithPermit: Invalid Signature

So, I am trying to remove liquidity from a pancake v2 pair and I do not understand why this is not working. I am looking at the code, and I've triple checked every value, I don' think I am doing ...
Chev_603's user avatar
  • 157
1 vote
1 answer
116 views

SWC-117 signature and ecrecover

source code is here. As the SWC-117 says "A signature should never be included into a signed message hash to check if previously messages have been processed by the contract.". I don't know ...
LEVI_104's user avatar
1 vote
1 answer
325 views

ECDSA (ecrecover) - How an attacker can construct a hash and signature that look valid

I found information, that it is possible to construct a hash and signature that look valid if the hash is not computed within the contract itself (we are talking about ECDSA/ecrecover here). So, the ...
Andrew Rukin's user avatar
2 votes
1 answer
624 views

Issues verifying signed data for Permit2

I'm trying to develop an end-to-end system using Uniswap's Permit2 (AllowanceTransfer). To achieve that, after the Permit2 allowance, I have to sign a message and verify its integrity contract side. ...
razgraf's user avatar
  • 790
1 vote
0 answers
134 views

Public Key from Transactional Hash of Type 2 EIP-1559

Is it possible to derive the public key based solely on information provided from the transaction hash? It must be able to work on newer transactions (type 0x02 transactions EIP-1559).I want to get ...
ECZY's user avatar
  • 11
1 vote
2 answers
624 views

ECRecover not recovering correct address, but works with ethers.js library

Im trying to test some signature verification in Solidity. I have generated the signature with nodejs using the ethers.js library. The signature successfully verifies in nodejs. I have tried to verify ...
CathalMF's user avatar
  • 283
1 vote
0 answers
526 views

ECDSA Nonce reuse attack

so I recently stumbled upon this video by @bertcmiller who created two transactions with the same nonce "k". That seen I researched quite a lot of pages explaining how to recover the private ...
Robert Bahn's user avatar
2 votes
2 answers
938 views

Can't recover address from signature (implementing EIP712 with eth_signTypedData_v4 and using OpenZeppelin)

can someone help me to find out what is wrong with my solidity code? (I'm trying to implement usage of the signatures and EIP712) (ECDSA and _hashTypedDataV4 are from OpenZeppelin: https://github.com/...
DarkCenobyte's user avatar
1 vote
0 answers
235 views

Problem with ecrecover, it returns an incorrect address

I know that this issue is already in other questions but I've already read them and they didn't help. I'm trying to sign a message in my tests, I'm using hardhat and this is the code I'm using to sign ...
Allennick's user avatar
  • 253
0 votes
1 answer
627 views

Potential signature malleability in Solidity CTF

I am doing a CTF so I don't want to give too much information away. I am pretty sure I can practice signature malleability or otherwise abuse the signer functions to be able to mint tokens given the ...
jforte44's user avatar
0 votes
1 answer
442 views

Failing to verify signature

I'm trying to verify a signature using OpenZeppelin's SignatureChecker library, but always returns false. This is the verify function from the lib: function isValidSignatureNow( address ...
dNyrM's user avatar
  • 918
3 votes
2 answers
186 views

Why isn't EIP3009 getting much use?

I am researching the use of the EIP3009 and am noticing that the proposal, though implemented in, say, USDC's smart contracts, is not actually getting used (the functions have never been called in ...
gogo's user avatar
  • 150
0 votes
1 answer
195 views

ecrecover returns wrong address if toSignString consists of only number

//web3 code let hash = web3.utils.soliditySha3("String"); //if replace "String" with "0" "123" etc , ecrecover returns wrong address console.log(&...
jay cole's user avatar
1 vote
1 answer
1k views

How to recover Ethereum Public Key from Transaction

How can I recover the Ethereum Public Key from a Transaction? web3.eth.accounts.recoverTransaction("...
user66732's user avatar
  • 455
1 vote
2 answers
2k views

How to recover the public key from r, s and v without the private key

I would like to recover the public key (or address) from the r,s and v values of a signed transaction without using a private key. The idea of course being, that I want to use Nick's method to deploy ...
Marlo's user avatar
  • 359
0 votes
0 answers
179 views

Validate Certificates on Ethereum blockchain

i have a function transferWithData(address to, uint256 amount, bytes data) it basically transfer ERC20 token but it has an additional 'data' field, in order to inject a certificate generated off-chain ...
Asad Ullah Khan's user avatar
0 votes
1 answer
554 views

what is the point of the chainId parameter in ethereumjs's ecrecover method?

The parameters for ecrecover() are: msgHash v r s chainId The first four are pretty straight forward to me but the last one - chainId.... what's the point of that one? In looking at the source code ...
neubert's user avatar
  • 103
0 votes
2 answers
71 views

unable to validate signature - recovered key doesn't match the actual key?

I'm trying to use ethereumjs to verify a signature. The signature verifies successfully with https://etherscan.io/verifySig using the following parameters: [Step 1] Address: ...
neubert's user avatar
  • 103
0 votes
0 answers
150 views

etherscan.io says a sig is valid but i can't get ethereumjs to say that that same sig is valid

I'm trying to use ethereumjs to verify a signature. The signature verifies successfully with https://etherscan.io/verifySig using the following parameters: [Step 1] Address: ...
neubert's user avatar
  • 103
3 votes
1 answer
915 views

solidity cannot verify ethers.js signed data

I have a simple contract which recover the signature signer signing: const signer = new Wallet(process.env.PRIVATE_KEY) console.log(signer.address) const encoded = abiCoder.encode([ "uint" ],...
miketsui3a's user avatar
1 vote
1 answer
423 views

signTransaction produces huge signature, which fails with 'ECDSA: invalid signature length'

I'm trying to create a transaction (created with populateTransaction), and sign it offchain (the above result, passed as a parameter to signTransaction), but it seems it produces an invalid signature (...
gneric's user avatar
  • 170
1 vote
1 answer
459 views

Unable to construct hash from address and uint256 for ecrecover and signature verification

I am creating a signature with web3.js form a hashed message that contains two numbers and an address: const tokenIds = [1,2,3]; const state = 1; const messageHash = web3.utils.keccak256(tokenIds....
G.G.'s user avatar
  • 133
1 vote
0 answers
621 views

How do I perform _hashTypedDataV4 on a struct containing an array of structs

I have signed a typed data, and I am trying to recover the address of the signer from my contract using ECDSA.recover(). But each time I try it, I get an address that is different from the address of ...
Ebube's user avatar
  • 131
2 votes
0 answers
118 views

Is there only one valid r,s,parity for a given transaction signed by one private key?

As I understand it in secp256k1 there are infinitely many secrets which, for the same message to be signed, can lead to a valid signature. So the same private key can sign the exact same message and ...
Cedric Martin's user avatar
0 votes
1 answer
183 views

Unable to validate one of two signatures that were signed the same way

I have a contract that requires two witnesses to sign. Signatures are both being generated using the same code, but I am only able to validate Witness A. Witness B is never found, always just get the ...
Severin's user avatar
  • 173
1 vote
1 answer
762 views

Sign with web3, verify with Solidity

I have been trying, debugging, and crying, for a few days now. I simply for the life of me cannot figure out how to verify a signature that I've created with web3, in Solidity. I am sure I am just ...
Severin's user avatar
  • 173
0 votes
0 answers
133 views

Signed message valid only for a specific smart contract

Is it possible to create a smart contract A and a signed message for which the signature would be valid only if it's signed by the expected Ethereum account and the signature check happens in that ...
0xR's user avatar
  • 1
1 vote
0 answers
171 views

Recovering address from signed message in Elixir

I'm signing a message via Web3js: const string = this.web3.utils.sha3("test"); const signature = await this.web3.eth.sign(string, this.wallet.address); In Elixir, i'm parsing the hash and ...
John's user avatar
  • 11
0 votes
0 answers
669 views

Workflow to verify a user signature from a backend service

I have a frontend web application that creates a message and asks the user to sign it via, for example, metamask. The user signs the message and now I have a signed message hash. Is there a common/...
Stormsson's user avatar
  • 379
4 votes
1 answer
7k views

How do you verify a Metamask signature on the server side?

I want my server to be able to authenticate a user based on whether or not they have the private key to their wallet. I am using web3.js in my front end, and web3.py in my backend. The scenario will ...
dx1's user avatar
  • 105
2 votes
1 answer
2k views

How to recover public key using ecRecover in Python?

I am able to use ecRecover to verify the signer in Javascript, for example: const ecRecoverAddr = await window.ethereum.request({ method: "personal_ecRecover", params: [message, ...
dx1's user avatar
  • 105
1 vote
1 answer
2k views

how I can sign message using web3js?

I know that I can sign a message using web3js, but I don't know how I can do that, then how to verify that signature using ecrecover()?
Asma's user avatar
  • 11
5 votes
2 answers
1k views

Cannot verifiy a signature produced by Ledger in Solidity using ecrecover

I used a smart contract to verify signatures: function verify(string memory _msg, bytes memory _sig) public pure returns (address) { bytes memory _msgHex = bytes(_msg); bytes32 prefixedHash = ...
Alireza Zojaji's user avatar
1 vote
1 answer
1k views

EIP712: ecrecover returns different address from recoverTypedSignature_v4

I am trying to sign typed data via MetaMask "eth_signTypedData_v4". Recovering signer via recoverTypedSignature_v4 returns correct address that I signed my data with. But smart contract ...
PleaseHelp1234's user avatar
0 votes
1 answer
5k views

How to implement owner check in Solidity

Is there any EIP that specifies how to implement function in contract, that let's you call any other function as contract owner, with provided signature? I don't want to reinvent wheel. For example: I ...
gkucmierz's user avatar
  • 773
3 votes
1 answer
1k views

Is it best practice to check signature malleability in ecrecover

I am wondering if it is considered best practice to guard against signature malleability to check against the half curve order like this or if this is totally unnecessary. uint256 constant ...
SCBuergel's user avatar
  • 8,774
3 votes
0 answers
746 views

EIP712-- Sign/Recovery using ethereumJS/Solidity

I've tried to mirror the example as shown: https://github.com/ethereum/EIPs/tree/master/assets/eip-712 However after much attempt at troubleshooting I have been unable to return the correct address ...
Julio Tavarez's user avatar
1 vote
0 answers
1k views

Verification of ECDSA signature is not valid while testing HashDice.sol

While practising on the ethereum contract HashDice.sol using truffle, the verification of the ECDSA signature is getting invalid after running the test script. describe('verify()', () => { it('...
Aldo's user avatar
  • 37
0 votes
1 answer
707 views

What is the gas cost of recovering a wallet address from a signature using Solidity?

As titled. I understand that there's an ecrecover function in Solidity. Can I use it for recovering a wallet address from a signature? Is it cheaper than a Keccak hash operation?
bishopqpalzm's user avatar
2 votes
2 answers
760 views

Recover public key from sign generated by AWS Cloud HSM - Golang

I am signing a transaction by using a private key in AWS Cloud HSM. But not able to recover the correct public key from the signature. Every time I try to run ECRecover method, it generates different ...
lingraj mahanand's user avatar
3 votes
1 answer
756 views

What's the magic numbers meaning of 27 or 28 in VRS ( use to ecrover the sender) ? why not 0 or 1?

What's the magic numbers meaning of 27 or 28 in VRS ( use to ecrover the sender) ? why not 0 or 1? Ecrecover need 0 or 1, but transaction RLP is 27 or 28. Before ecrecover, sub 27 to get 0 or 1. Why ...
Jimmy's user avatar
  • 131
2 votes
2 answers
6k views

ethers.js Recover public key from contract deployment via v,r,s values

I'm currently trying to get the public key of the user that deploys a contract. Unfortunately I can't make it work. I am trying to achieve this solely by using ethers.js as I don't want to bloat my ...
Chris's user avatar
  • 1,312
0 votes
0 answers
108 views

Signature not matching the sig obtained from MyEtherWallet

I am serializing the unsigned txn in C, then I found Keccak-256 hash and I signed it with the privatekey. However, the resulting signature is not the same as in MyEtherWallet for the same values(...
Riya Singh's user avatar
0 votes
2 answers
1k views

Recovering of typed signature fails because it's too long

I have a typed signature generated by EIP712 V3. It is 132 characters long. I'm trying to recover it using recoverTypedSignature from eth-sig-util. This fails saying: index.js:1 Error: Invalid ...
J. Hesters's user avatar