Provide extension points for block parts related to a contract like origination, entrypoint, big map diff, storage change, etc. Firstly, a contract indexer decides if it wants to index a contract based on its address, definition, and other details. At that point, it can associate some additional data with a contract which will be passed in by Dappetizer on each contract call. For example, you want to index contracts with a particular big map type, so you examine it and store some big map details, e.g. its schema.