/ Docs
7.3
/

Release Notes: 7.2

We're glad to announce DipDup 7.2! This release brings Etherlink smart rollup compatibility, API for managing indexes in runtime, and a bunch of minor improvements.

Indexing Tezos Etherlink smart rollups

Etherlink is an EVM-compatible smart rollup, which prioritizes fair ordering of transactions, low latency and security.

Smart rollups are Tezosโ€™ permissionless L2 scaling solution. They are WASM applications, providing versatility in what language you write them in. You can learn more in Etherlink docs

Since version 7.2 you can index Etherlink smart rollups like regular Tezos contracts. Choose demo_etherlink template when creating a new project:

dipdup.yaml
spec_version: 2.0
package: demo_etherlink

datasources:
  tzkt:
    kind: tezos.tzkt
    url: ${TZKT_URL:-https://api.tzkt.io}

contracts:
  controller:
    kind: tezos
    address: KT1Ax1oGGjooakyYJvtrX3q5zxRwYv6EAeC2
    typename: controller
  rollup:
    kind: tezos
    address: sr1SW7VtD6xbSAEoRk8LXewr3igfWjBx7FPB
    typename: rollup

indexes:
  rollup_operations:
    kind: tezos.tzkt.operations
    datasource: tzkt
    contracts:
      - controller
      - rollup
    handlers:
      - callback: on_rollup_call
        pattern:
          - type: transaction
            destination: controller
            entrypoint: default
            alias: controller_default
          - type: transaction
            destination: rollup
            entrypoint: default
            alias: rollup_default

Etherlink rollups' addresses start with the sr1 prefix instead of KT1, and an entrypoint is always default. If you omit an entrypoint in the operation pattern, the transaction will be treated as untyped.

See the tezos.tzkt.operations page for more details.

API to add indexes in runtime

One of the cool features of DipDup is that you can add indexes in runtime using ctx.add_contract/add_index methods from any callback. Now a basic HTTP API is available for the same purpose. To use it, add api section to your config:

dipdup.yaml
api:
  host: 127.0.0.1
  port: 46339  # dial INDEX ๐Ÿ˜Ž

Now you can use your favorite HTTP client to manage DipDup:

# Add contract
curl 127.0.0.1:46339/add_contract -X POST -H "Content-Type: application/json" \
  --data '{"kind":"tezos", "name": "LB", "typename": "dex" "address": "KT1TxqZ8QtKvLu3V3JH7Gx58n7Co8pgtpQU5"}'

# Add index from the template
curl 127.0.0.1:46339/add_index -X POST -H "Content-Type: application/json" \
  --data '{"template":"dex_template", "name": "LB_index", "values": {"contract": "LB"}}'

# Check how DipDup is doing
curl 127.0.0.1:46339/performance

See the API reference for more details.

Other improvements

make is back! After gathering feedback from the community we decided to return Makefile to the base template, but make it package manager-agnostic. Instead, when creating a new project DipDup suggests choosing a package manager from PDM/Poetry/None (sets package_manager field in replay.yaml config). No action is required for existing projects, but you can run dipdup init --base [--force] to update the project base.

Indexing EVM events with node RPC (evm.node datasource) has become faster. Node RPC while inherently slow, is used only for the "last mile" indexing (fetching a few hundred latest blocks not yet in Subsquid Network API) and realtime subscriptions.

Finally, we have sped up the generation of Pydantic typeclasses with datamodel-codegen. Also, resulting classes use X | Y union syntax when possible.




See you soon! ๐Ÿ‘‹

DipDup is a free open-source software created by community and for community. Join our socials to discuss this release, ask any questions, or participate in development.

Twitter | Discord | GitHub

Help and tips -> Join our Discord
Ideas or suggestions -> Issue Tracker