/zombienet-sdk

ZombieNet SDK

Primary LanguageRustGNU General Public License v3.0GPL-3.0

🚧⚠️ [WIP] ZombieNet SDK ⚠️🚧

Rust Docs

The Vision

This issue will track the progress of the new ZombieNet SDK.

We want to create a new SDK for ZombieNet that allow users to build more complex use cases and interact with the network in a more flexible and programatic way. The SDK will provide a set of building blocks that users can combine in order to spawn and interact (test/query/etc) with the network providing a fluent api to craft different topologies and assertions to the running network. The new SDK will support the same range of providers and configurations that can be created in the current version (v1).

We also want to continue supporting the CLI interface but should be updated to use the SDK under the hood.

The Plan

We plan to divide the work phases to. ensure we cover all the requirement and inside each phase in small tasks, covering one of the building blocks and the interaction between them.

Prototype building blocks

Prototype each building block with a clear interface and how to interact with it

Integrate, test interactions and document

We want to integrate the interactions for all building blocks and document the way that they work together.

Refactor CLI and ensure backwards compatibility

Refactor the CLI module to use the new SDK under the hood.

ROADMAP

Infra

  • Chaos testing, add examples and explore possibilities in native and podman provider
  • Add docker provider
  • Add nomad provider
  • Create helm chart to allow other use zombienet in k8s
  • Auth system to not use k8s users
  • Create GitHub Action and publish in NPM marketplace (Completed)
  • Rename @paritytech/zombienet npm package to zombienet. Keep all zombienet modules under @zombienet/* org (Completed)

Internal teams

  • Add more teams (wip)

Registry

  • Create decorators registry and allow override by paras (wip)
  • Explore how to get info from paras.

Functional tasks

  • Add subxt integration, allow to compile/run on the fly
  • Move parser to pest (wip)
  • Detach phases and use JSON to communicate instead of paths
  • Add relative values assertions (for metrics/scripts)
  • Allow to define nodes that are not started in the launching phase and can be started by the test-runner
  • Allow to define race assertions
  • Rust integration -> Create multiples libs (crates)
  • Explore backchannel use case
  • Add support to run test agains a running network (wip)
  • Add more CLI subcommands
  • Add js/subxt snippets ready to use in assertions (e.g transfers)
  • Add XCM support in built-in assertions
  • Add ink! smart contract support
  • Add support to start from a live network (fork-off) [check subalfred]
  • Create "default configuration" - (if zombieconfig.json exists in same dir with zombienet then the config applied in it will override the default configuration of zombienet. E.G if user wants to have as default native instead of k8s he can add to

UI

  • Create UI to create .zndls and network files.
  • Improve VSCode extension (grammar/snippets/syntax highlighting/file validations) (repo)
  • Create UI app (desktop) to run zombienet without the need of terminal.