Processor
`Error: data out-of-bounds` `ethers` errors on EVM
`Error: data out-of-bounds` `ethers` errors on EVM
-
Usually this means that you’re using the decoder on the wrong data. Make sure that the decoder receives only the data you intend it to.
Example: suppose you want to add the processing of a
Mintevent to a squid that is currently processing onlyTransferevents. You change the processor configuration to get theMintevents for you, but you forget to sort the events in the batch handler and a data item with aMintevent finds its way into a decoder ofTransfers. -
Another common source of this error is faulty RPC endpoints. If your EVM processor crashes during RPC ingestion on a log with
'0x'in its data field, try switching to another RPC provider or, if you are developing locally, to another Ethereum network emulator.
`BAD_DATA` when using a Multicall contract
`BAD_DATA` when using a Multicall contract
This error can occur for a variety of reasons, but one common cause is choosing a Multicall deployment that is newer than the oldest blocks that have to be indexed. When batch state queries are performed on historical chain state older than the Multicall deployment, EVM detects that and refuses to run.Solutions:
- Use an older Multicall deployment.
- Delay your chain state queries until a later block.
Data sinks
`QueryFailedError: relation "..." does not exist`
`QueryFailedError: relation "..." does not exist`
It is likely that the generated migrations in the
db/migrations folder are outdated and do not match the schema file.
Recreate the migrations from scratch as detailed on this page.`Query runner already released. Cannot run queries anymore`, or `too late to perform db updates, make sure you haven't forgot to await on db query`
`Query runner already released. Cannot run queries anymore`, or `too late to perform db updates, make sure you haven't forgot to await on db query`
If your squid saves its data to a database, all operations with
ctx.store are asynchronous. Make sure you await on all store operations like upsert, update, find, save etc.You may find the require-await eslint rule to be helpful.`QueryFailedError: invalid byte sequence for encoding "UTF8": 0x00`
`QueryFailedError: invalid byte sequence for encoding "UTF8": 0x00`
PostgreSQL doesn’t support storing
NULL (\0x00) characters in text fields. Usually the error occurs when a raw bytes string (like UIntArray or Bytes) is inserted into a String field. If this is the case, use hex encoding, e.g. using util-internal-hex library. For addresses, use the ss58 encoding library.GraphQL
API queries are too slow
API queries are too slow
- Make sure all the necessary fields are indexed. The best way to do that is to perform the query optimization procedure.
- Annotate the schema and set reasonable limits for the incoming queries to protect against DoS attacks
`response might exceed the size limit`
`response might exceed the size limit`
Make sure the input query has limits set or the entities are decorated with
@cardinality. We recommend using XXXConnection queries for pagination. For configuring limits and max response sizes, see DoS protection.