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!