Glossary

General

ABI

Application Binary Interface. A JSON-formatted description of how to interact with a smart contract on a blockchain, typically Ethereum. The ABI defines the contract's functions, their inputs and outputs, and allows other programs or users to call the contract's functions correctly. ABIs are essential for interacting with EVM-compatible blockchains.

block number

A unique identifier for a block in the blockchain. It's a number that increases sequentially as new blocks are added. Each block contains a set of transactions, and the block number is used to identify the block that contains a specific transaction. Sometimes referred to as "level" in DipDup.

callback

A function with a specific signature used in event handling. In DipDup, there are two types of callbacks: handlers and hooks. Callbacks are invoked automatically by the framework in response to blockchain events or lifecycle events.

config

A configuration file that defines a project's structure, settings, environment configurations, and other metadata. Examples include pyproject.toml in Python and compose.yaml in Docker Compose. DipDup projects start with a dipdup.yaml file in the project's root. See the full reference.

context

In DipDup, an object that passed as the first argument to all callbacks. It provides access to the current state of the indexer and various methods to interact with it, such as raw database access, logging, and utility functions.

contract alias

A user-defined name for a contract in the DipDup config, used to reference contracts throughout the project.

contract address

A unique identifier for a smart contract deployed on a blockchain. On EVM-compatible chains, this is a 20-byte hexadecimal string (e.g., 0x...). On Tezos, it starts with KT1....

datasource

A connector to an external API or node providing blockchain data. Examples: tezos.tzkt, evm.subsquid, starknet.node, substrate.subscan. Datasources are defined in the config and used by indexes to fetch data. Each index is linked to one or more datasources.

DipDup

An open-source Python framework for building smart contract indexers for Tezos, EVM, Starknet, Substrate, and other blockchains. DipDup provides tools for defining, running, and maintaining blockchain data indexers.

Docker

An open-source platform for creating, deploying, and managing containerized applications, improving consistency and reducing infrastructure overhead. Used to package DipDup projects for deployment.

Docker Compose

A tool for defining and managing multi-container Docker applications, using a YAML file to configure services, networks, and volumes. Simplifies application deployment and scaling.

environment variables

Variables used to define the environment in which a program runs, providing a way to configure settings, paths, and other system-specific information. Can be set with export KEY=VALUE in the terminal or defined in a .env file. Used in DipDup for secrets and configuration.

EVM

Ethereum Virtual Machine. The computation engine for Ethereum and compatible blockchains. DipDup supports EVM-compatible networks for event and transaction indexing.

event

A log emitted by a smart contract, typically used to signal that something of interest has happened. In DipDup, events are indexed via event indexes. Events are defined in the contract's ABI.

GraphQL

A query language and runtime for APIs that enables clients to request only the data they need, offering more flexibility and efficiency compared to traditional REST APIs. Used by some DipDup datasources and by Hasura.

handler

A Python function that processes blockchain data matching a pattern or filter. Handlers implement business logic and are defined in the config and Python code. Each handler is associated with an index.

Hasura

An open-source engine that connects to databases and microservices, providing real-time GraphQL APIs for faster and efficient data access. Used as a DipDup integration to expose indexed data.

head

The latest block on the blockchain. In DipDup terminology, this term applies to Datasources. When "index level" is used, it refers to the latest block that has been fully processed and committed to the database.

hook

A user-defined function that is executed at specific points in the lifecycle of a DipDup project. Unlike handlers, hooks are not tied to specific indexes and can be called from anywhere in the code. Hooks are useful for tasks like startup, shutdown, or custom maintenance routines.

index

In DipDup, a configuration entry that defines what data to query from the blockchain, how to filter it, and which handlers to call. Each index operates independently and can target different contracts, events, or operations.

Not to be confused with the database index, which is a data structure that improves the speed of data retrieval operations on a database table.

indexer

A program that reads data from a blockchain and stores it in a database for quick and easy querying. DipDup is an indexer framework. Indexers enable efficient access to blockchain data for applications and analytics.

job

A scheduled task that runs at specific intervals or times. In DipDup, jobs can be defined to perform periodic actions, such as data cleanup or external API polling.

JSONSchema

A vocabulary that allows for the definition of the structure and validation of JSON data. DipDup uses JSONSchema to validate the configuration file and generate types for the project.

level

In DipDup, synonymous with block number. Refers to the height of a block in the blockchain (as in Tezos).

model

A Python class representing a database table, defined using the Tortoise ORM library. Models define the structure of stored data and relationships between tables.

ORM

Object-Relational Mapping. A technique for interacting with a database using Python classes and objects instead of SQL queries. DipDup uses Tortoise ORM library.

package

A directory containing all the files needed to run a DipDup project. DipDup projects must be a valid Python package. See the Package page.

PostgreSQL

A powerful, open-source object-relational database system known for its reliability, robustness, and performance. Widely used for managing structured data. DipDup uses PostgreSQL as its primary database backend.

Prometheus

An open-source monitoring and alerting toolkit designed for reliability and scalability. Used to collect and process metrics from various systems, providing valuable insights into application and infrastructure performance. DipDup can expose metrics for Prometheus scraping.

RPC API

Remote Procedure Call API. A protocol used to communicate with blockchain nodes and interact with the blockchain. DipDup receives a minimal amount of data from RPC APIs due to their relatively slow performance compared to other sources.

schema

Database schema: a collection of tables and their relationships that define the structure of a database. In DipDup, the schema is defined by models and SQL scripts.

Sentry

A real-time error tracking and monitoring platform that helps developers identify, diagnose, and fix issues in applications, improving overall software quality and performance. DipDup provides Sentry integration for error reporting.

Starknet

A ZK-rollup network on Ethereum. DipDup supports Starknet for event and transaction indexing.

Substrate

A blockchain framework for building custom blockchains, used by Polkadot, Kusama, and others. DipDup supports Substrate-based networks for event indexing.

sync level

The highest block level that has been fully processed and committed to the database by the indexer. Indicates how up-to-date the indexer is with the blockchain.

template

Config: A reusable index definition with placeholders for values. Templates allow you to define common patterns and reuse them across multiple indexes, reducing duplication and improving maintainability.

CLI: A project scaffold or example provided by DipDup to help users start new projects quickly. See dipdup new --help.

Tortoise ORM

A Python asyncio library for defining models and relationships between tables, simplifying asynchronous database interactions and data management. Used as the ORM in DipDup.

transaction

An operation that changes state, such as transferring tokens or calling a contract. In DipDup, transactions are indexed and processed by handlers.

typeclass

A Python dataclass generated by DipDup to represent the structure of a contract's entrypoint, event, or storage. Typeclasses provide type safety and autocompletion in handlers.

typename

A user-defined or auto-generated name for a contract's interface, used to group contracts with the same code or ABI. Typenames help organize and reuse code across similar contracts.

Tezos

big map

A Tezos data structure for storing large key-value mappings. See big map index page.

contract storage

Persistent data storage within a smart contract, holding the contract's state and any associated data.

entry points

Functions defined within a smart contract that can be called by external contract invocations or other contracts.

Etherlink

An EVM-compatible smart rollup on Tezos, enabling fast and secure execution of EVM contracts. Supported by DipDup for sr_execute operations.

Michelson

The low-level, stack-based smart contract language used by Tezos. Michelson contracts are often compiled from higher-level languages like SmartPy or LIGO.

origination

The process of deploying a new smart contract on the Tezos network, creating a new originated contract address. Origination is a special kind of transaction.

TzKT

A popular Tezos indexer API that provides a more user-friendly way to access Tezos blockchain data compared to the RPC API.

EVM

event log

A record emitted by an EVM contract, used to signal state changes or important actions. Indexed by DipDup via event indexes.

method

A function defined in an EVM contract's ABI, callable via transactions. Methods can change contract state or return data.

Subsquid

A network and API for accessing historical EVM and Substrate blockchain data. Used as a datasource in DipDup.

Starknet

Cairo

The programming language for writing Starknet contracts.

Substrate

pallet

A module in Substrate-based blockchains that implements specific functionality (e.g., balances, governance). Events and calls from pallets can be indexed by DipDup.

extrinsic

A transaction or call submitted to a Substrate blockchain, including both signed and unsigned operations.


If you have suggestions for new terms or improvements, please contribute to this glossary!

Help and tips -> Join our Discord
Ideas or suggestions -> Issue Tracker
GraphQL IDE -> Open Playground