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:
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:
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.
Changes since 7.0
Added
- cli: Added
--unsafe
,--compose
,--internal
flags toconfig env
command. - cli: Added missing short equivalents for options in some commands.
- cli: Relative paths to be initialized now can be passed to the
init
command as arguments. - tezos.tzkt.token_balances: Added new index.
Fixed
- cli: Fixed
DIPDUP_DEBUG
not being applied to the package logger. - cli: Fixed crash on early Python 3.11 releases.
- project: Update default Docker tag for TimescaleDB HA.
- tezos.tzkt.token_transfers: Fixed filtering transfers by token_id.
See you soon! 👋
DipDup is a free open-source software created by the community and for the community. Join our socials to discuss this release, ask any questions, or participate in development.