0

I was getting the error storage_exhausted.operation before when trying to send an operation. I thought I fixed it by ensuring I had enough funds in my account to cover the storage fee. Code was working fine after that. It's a new day and now, seemingly out-of-the-blue, I cannot even estimate the fee without getting that error.

Tezos.estimate.transfer(await contractOperation.toTransferParams())
    .then((estimate)=>{
        console.log('got estimate:',estimate)
    })
    .catch((error) => {
        console.log('error running estimate:',error)
    })

and the console reports:

error running estimate: TezosOperationError: (temporary) proto.012-Psithaca.storage_exhausted.operation
    at RPCEstimateProvider.<anonymous> (taquito.es6.js:1642:1)
    at Generator.next (<anonymous>)
    at fulfilled (taquito.es6.js:43:43)

my relevant dependencies are:

"@taquito/beacon-wallet": "^12.0.0",
"@taquito/ledger-signer": "^12.0.0",
"@taquito/taquito": "^12.0.0",
"@taquito/tezbridge-signer": "^12.0.0",
"@taquito/utils": "^12.0.0",

2 Answers 2

0

You probably have more errors in the error list returned by the RPC call (I think taquito only shows the one on the top). If I remember correctly, ill-typed data can also cause that error.

Looking at the whole error list will help to identify the problem.

1
  • It appears there are no other errors. That console report above is the whole error. I checked in the network tab and there seems to be no error. The last request is the estimator talking to a 'run_operation' endpoint which comes back with a populated result and 200 status code. Apr 15, 2022 at 20:32
0

The previous answer was auto flagged, I removed it as it may lead to confusion for other developers. unsync'ing and resync'ing a wallet can help sometimes if there is something cached somewhere, but this should be rare. There are many reasons that such an error can popup.

It could be connected to 3 things:

  1. When estimating, you need to set the gas and storage to the max amounts possible, so that it doesn't fail due to too low limits. After its successful you can see how much it consumed. Perhaps this wasn't being done by the library, or not correctly.

  2. This error can be caused by another underlying error. For example, if you are calling a smart contract and supply invalid params, the smart contract may attempt to execute a different flow, that results in more storage being used than expected. If you print out the entire networking response, you may see additional errors.

  3. There is a known "issue" related to this. When injecting operations to the blockchain, if the operation requires additional storage, the sender must pay a storage fee. The operation must also specify the limit of storage the sender has agreed too. However when storage is reduced (by any operation) the storage fee is not returned to the original wallet, instead it just because "free storage" for whatever the next operation. It is possible that when preforming an estimation, your request makes use of some "free storage" and returns a lower than normally required storage limit. When you do the actual transfer, another operation jumps in front and consumes the free storage, that free storage is now not there anymore, and the operation can fail as the storage is now too low. Unsync'ing and resync'ing doesn't actually fix the issue, its just adding a long enough delay for the temporary state to be removed by another operation. A solution to such an issue is to add some padding to the operation, and let your users know that the fees displayed are "worst case". Many apps also give the user the ability to set their own fees, in case a weird situation such as this occurs

2
  • I had a problem estimating, not running the transaction. Please re-read my post where I say where the error was reported and how I got it. I believe the answer is a good one not only for developers alone but for users alike. That is if my memory is correct and this error was popping up on all sorts of sites for a while. Things are different now and may be irrelevant. It used to be one had to consistently resync on most sites for interactions to work. Aug 13, 2022 at 5:49
  • @WebandFlow apologies, I must have misread the first line of code. I've updated the answer to remove that line, and added some other possible situations that occur during estimation. Its possible this may have been a bug in one of the libraries that i'm not aware of. Unsync'ing and resync'ing simply closes and opens a new websocket, that doesn't communicate with the RPC at all, it shouldn't have caused this issue (unless something was being cached and reused somewhere). I'll leave these details here for future devs facing the similar issues
    – Simon McLoughlin
    Aug 22, 2022 at 10:24

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.