I am using the following code to set a slot to a value on hardhat network:

  public async setStorageAt(addr: EthAddress, slot: string, value: string): Promise<any> {
    const result = await this.provider.request({
      method: 'hardhat_setStorageAt',
      params: [addr.toString(), slot, value],
    return result;

And when I try to set the value of a slot


I get the following error in the logs of hardhat network node:


  Errors encountered in param 1: Invalid value "0x0c0c87e2d76a59631866640201b73cd5494944ef1f6c0605583699b7d52d4e8d" supplied to : QUANTITY

Why am I receiving this error given that the value is smaller than the max storage slot index (2 ** 256)?

The contract I am interacting with is on mainnet and has the following address:


Thank you

  • Can you also add the contract?
    – Julissa DC
    Commented Jun 6, 2022 at 13:15
  • Just added it to the question. Thank you
    – Jan Beneš
    Commented Jun 6, 2022 at 13:21
  • On which network is that address? On mainnet it leads to a very big contract
    – Julissa DC
    Commented Jun 6, 2022 at 13:29
  • The contract is on mainnet. It is a Curve pool contract and I would like to mint the LP tokens in tests.
    – Jan Beneš
    Commented Jun 6, 2022 at 13:55

1 Answer 1


The issue was that the node doesn't expect there to be leading zeros. When I replaced this:




Everything worked.

I've used ethers.utils.hexStripZeros to achieve that:

const userBalanceSlot = utils.hexStripZeros(utils.keccak256(utils.defaultAbiCoder.encode(['address', 'uint'], [randomAddress, i])));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.