Web3 & Blockchain Errors
Gas estimation, nonce management and reverted transactions.
Understanding Web3 errors
Web3 errors are unusually terse because the EVM reports failure without explanation by default. execution reverted means a require or revert triggered. The reason string is present in the return data but most libraries discard it. Nonce errors reflect the strict sequential ordering of transactions per account, so a stuck transaction blocks every one behind it.
How to debug Web3 errors
- Simulate before sending:
eth_callagainst the same block returns the revert reason string that a submitted transaction hides. - Use a transaction tracer (Tenderly, Foundry's
cast run, or a node'sdebug_traceTransaction) to see the exact opcode and contract where execution reverted. - For nonce errors, query the account's pending nonce (
eth_getTransactionCountwith thependingtag) rather than tracking it locally. - To replace a stuck transaction, resend with the same nonce and a materially higher gas price: most nodes require at least a 10% increase.
- Check the chain ID matches the network you intend. Signing for the wrong chain produces confusing rejection messages.
Tools worth reaching for
cast (Foundry)eth_call simulationTenderly / block explorer tracerdebug_traceTransaction
All 17 Web3 errors
- ethers v6: Cannot read properties of undefined (reading 'Web3Provider') Newethers v6 removed the providers, utils and constants namespaces, so v5 code such as ethers.providers.Web3Provider or…
- MetaMask Tx Signature: User denied transaction signature (4001) NewCode 4001 is the EIP-1193 "user rejected" error: the person clicked Reject or closed the wallet popup, nothing reached…
- Solidity: CompilerError: Stack too deep. Try compiling with --via-ir NewThe EVM can only reach the top 16 slots of its stack, and the function the error points at needs more than that for…
- Web3: already known / ALREADY_EXISTS when sending a transaction NewThe node already holds a transaction with this exact hash in its pool, so the resend is rejected rather than…
- Web3: cannot estimate gas; transaction may fail or may require manual gas limit NewThe node ran the transaction against current state and it reverted, so no gas figure could be produced. The wording…
- Web3: could not detect network (event="noNetwork", code=NETWORK_ERROR) Newethers asks the endpoint for its chain id before it will do anything else, and that call failed, so the provider never…
- Web3: execution revertedThe smart contract reverted. Solidity custom errors or revert strings often explain the exact requirement that failed.
- Web3: gas required exceeds allowance (0) NewThe node simulated the transaction and found the sender cannot cover it, so the allowance it reports is the gas the…
- Web3: insufficient funds for gas * price + valueThe wallet lacks enough native token to pay transaction value plus gas. This is separate from ERC-20 token balance.
- Web3: intrinsic gas too low NewThe gas limit on the transaction is below the minimum the EVM charges before executing any contract code: 21,000 for a…
- Web3: max code size exceeded when deploying a contract NewEIP-170 caps deployed runtime code at 24576 bytes and the deployment is rejected once the compiled contract passes it…
- Web3: max fee per gas less than block base fee NewThe node rejected the transaction because its maxFeePerGas is below the base fee of the next block. Base fee moves by…
- Web3: missing revert data in call exception (CALL_EXCEPTION) NewThe call failed without a reason string, which usually means there is no contract at that address on this chain rather…
- Web3: nonce too low / replacement transaction underpricedThe transaction nonce has already been mined, or a replacement transaction did not increase fees enough to replace the…
- Web3: query returned more than 10000 results (eth_getLogs) NewThe RPC provider caps how much a single log query may return or how many blocks it may span, and the limit is per…
- Web3: Transaction reverted without a reason string NewThe contract used require without a message, tripped an assert, ran out of gas inside a nested call, or the address…
- Web3: transaction underpriced NewThe node rejected the transaction before it entered the pool because the fee offered is below the minimum it will…
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 18Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 20Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 20Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 20OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 17Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 18NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- C++ 20Segfaults, linker errors, memory corruption and template deduction failures.
- Caching 20Cache stampedes, stale content, Varnish and CloudFront failures.
- CI/CD 18GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and…
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 20Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 20NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 18GenServer timeouts, supervision failures and Mix compilation problems.
- Email 20Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 19Validation, depth limits, N+1 queries and fragment problems.
- gRPC 17Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Ingress 20404 default backend, missing TLS secrets, IngressClass and path matching.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 18Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 20Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 20Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 18Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Performance 19GC pauses, thread pool starvation and event loop blocking.
- PHP 20Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 20nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 17Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 20Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 17Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 20Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 19Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 19S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- Svelte 20Store subscriptions, load functions and server/client boundaries.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 20VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- WebAssembly 17Compile errors, memory bounds and host binding mismatches.
- WebServer 20nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 20Installer failures, missing runtimes, update errors and permission problems.