ethersphere / bee

Bee is a Swarm client implemented in Go. It’s the basic building block for the Swarm network: a private; decentralized; and self-sustaining network for permissionless publishing and access to your (application) data.
https://www.ethswarm.org
BSD 3-Clause "New" or "Revised" License
1.46k stars 337 forks source link

intrinsic gas too low: gas 0 diluting a batch #4740

Open ldeffenb opened 3 months ago

ldeffenb commented 3 months ago

Context

2.1.0 - Sepolia testnet

Summary

Attempted to dilute a batch from depth 23 to depth 24, but it is failing with 500 cannot dilute batch.

curl -X PATCH http://192.168.10.38:53304/stamps/dilute/39302d15dc60292d25afa4b7733e7838fccde46286328a5cc75d1ba887dea372/24
{"code":500,"message":"cannot dilute batch"}

Pertinent debug logs from the node are:

"time"="2024-07-27 13:22:25.884742" "level"="debug" "logger"="node/transaction" "msg"="prepare transaction" "sender_address"="0x169701300a45fAa8388Ba867F85A003739B7c101" "gas_price"="2814200270" "gas_max_fee"="2889280439" "gas_max_tip"="75080169"
"time"="2024-07-27 13:22:25.885167" "level"="debug" "logger"="node/transaction" "v"=1 "msg"="sending transaction" "sender_address"="0x169701300a45fAa8388Ba867F85A003739B7c101" "tx"="0xd127a40b4838c382142921aff7fe88f4f5f23354fed9fdfbd7bc3ef5fb88adf1" "nonce"=1944
"time"="2024-07-27 13:22:25.892771" "level"="debug" "logger"="node/api/patch_stamp_dilute" "msg"="dilute batch: dilute failed" "batch_id"="39302d15dc60292d25afa4b7733e7838fccde46286328a5cc75d1ba887dea372" "depth"=24 "error"="dilute batch: new depth 24: intrinsic gas too low: gas 0, minimum needed 21716: execution reverted: InsufficientBalance()"
"time"="2024-07-27 13:22:25.892798" "level"="error" "logger"="node/api/patch_stamp_dilute" "msg"="dilute batch: dilute failed"
"time"="2024-07-27 13:22:25.892830" "level"="info" "logger"="node/api" "msg"="debug api access" "ip"="192.168.10.177" "method"="PATCH" "host"="192.168.10.38:53304" "uri"="/stamps/dilute/39302d15dc60292d25afa4b7733e7838fccde46286328a5cc75d1ba887dea372/24" "proto"="HTTP/1.1" "status"=500 "size"=46 "duration"="18.702211ms" "user-agent"="curl/8.7.1"

Stamp is:

      "batchID": "39302d15dc60292d25afa4b7733e7838fccde46286328a5cc75d1ba887dea372",
      "utilization": 65,
      "usable": true,
      "label": "",
      "depth": 23,
      "amount": "2000000000",
      "bucketDepth": 16,
      "blockNumber": 6374516,
      "immutableFlag": true,
      "exists": true,
      "batchTTL": 449009

Wallet shows enough bzz (not needed for dilute) and sETH:

  "bzzBalance": "4963341364806418432",
  "nativeTokenBalance": "2791736325347940910",
  "chainID": 11155111,
  "chequebookContractAddress": "0x76960d2968e8f2bc4533526d209260b1063ac7ae",
  "walletAddress": "0x169701300a45faa8388ba867f85a003739b7c101"

Expected behavior

I expected the dilute to succeed.

Actual behavior

See logs above.

Steps to reproduce

It happens every time I try to dilute this stamp.

Possible solution

Wish I knew, but I need more room in the stamp for continued testing.

istae commented 3 months ago

I wonder if this is related to the min 24h TLL balance a batch must have when creating and also diluting a batch..

ldeffenb commented 3 months ago

@istae Hm, I don't think so. The failure message seems to be coming directly from the Ethereum layer based on my google search results, not even getting to the contract. The stamp had a 5 day TTL which would only be halved by the dilute by one depth.

I have successfully diluted stamps before, which is why this failure really surprised me.