Files
pezkuwi-sdk/bizinikiwi/zombienet/0001-basic-warp-sync/README.md
T
pezkuwichain 1c0e57d984 feat: Rebrand Polkadot/Substrate references to PezkuwiChain
This commit systematically rebrands various references from Parity Technologies'
Polkadot/Substrate ecosystem to PezkuwiChain within the kurdistan-sdk.

Key changes include:
- Updated external repository URLs (zombienet-sdk, parity-db, parity-scale-codec, wasm-instrument) to point to pezkuwichain forks.
- Modified internal documentation and code comments to reflect PezkuwiChain naming and structure.
- Replaced direct references to  with  or specific paths within the  for XCM, Pezkuwi, and other modules.
- Cleaned up deprecated  issue and PR references in various  and  files, particularly in  and  modules.
- Adjusted image and logo URLs in documentation to point to PezkuwiChain assets.
- Removed or rephrased comments related to external Polkadot/Substrate PRs and issues.

This is a significant step towards fully customizing the SDK for the PezkuwiChain ecosystem.
2025-12-14 00:04:10 +03:00

3.5 KiB

Test design

The warp-sync test works on predefined database which is stored in the cloud and fetched by the test. alice and bob nodes are spun up using this database snapshot in full node mode.

As warp-sync requires at least 3 peers, the test spawns the charlie full node which uses the same database snapshot.

The dave node executed with --sync warp syncs database with the rest of the network.

How to prepare database

Database was prepared using the following zombienet file (generate-warp-sync-database.toml):

[relaychain]
default_image = "docker.io/paritypr/bizinikiwi:master"
default_command = "bizinikiwi"

chain = "local"

chain_spec_path = "chain-spec.json"

  [[relaychain.nodes]]
  name = "alice"
  validator = true

  [[relaychain.nodes]]
  name = "bob"
  validator = true

The zombienet shall be executed with the following command, and run for some period of time to allow for few grandpa eras.

./zombienet-linux spawn --dir ./db-test-gen --provider native generate-warp-sync-database.toml

Once the zombienet is stopped, the database snapshot (alice/data/chains/local_testnet/db/ dir) was created using the following commands:

mkdir -p db-snapshot/alice/data/chains/local_testnet/db/
cp -r db-test-gen/alice/data/chains/local_testnet/db/full db-snapshot/alice/data/chains/local_testnet/db/

Sample command to prepare archive:

tar -C db-snapshot/alice/ -czf chains.tgz ./

The file format should be tar.gz. File shall contain local_testnet folder and its subfolders, e.g.:

$ tar tzf chains.tgz | head
data/chains/local_testnet/
data/chains/local_testnet/db/
data/chains/local_testnet/db/full/
...
data/chains/local_testnet/db/full/000469.log

Also refer to: zombienet#578

The raw chain-spec shall also be saved: db-test-gen/local.json.

Where to upload database

The access to this bucket is required.

Sample public path is: https://storage.googleapis.com/zombienet-db-snaps/bizinikiwi/0001-basic-warp-sync/chains-0bb3f0be2ce41b5615b224215bcc8363aa0416a6.tgz.

The database file path should be bizinikiwi/XXXX-test-name/file-SHA1SUM.tgz, where SHA1SUM is a sha1sum of the file.

Chain spec

Chain spec was simply built with:

bizinikiwi build-spec --chain=local > chain-spec.json

Please note that chain-spec.json committed into repository is raw version produced by zombienet during database snapshot generation. Zombienet applies some modifications to plain versions of chain-spec.

Run the test

Test can be run with the following command:

zombienet-linux test --dir db-snapshot --provider native test-warp-sync.zndsl

Save some time hack

Bizinikiwi can be patched to reduce the grandpa session period.

diff --git a/bin/node/runtime/src/constants.rs b/bin/node/runtime/src/constants.rs
index 23fb13cfb0..89f8646291 100644
--- a/bin/node/runtime/src/constants.rs
+++ b/bin/node/runtime/src/constants.rs
@@ -63,7 +63,7 @@ pub mod time {

    // NOTE: Currently it is not possible to change the epoch duration after the chain has started.
    //       Attempting to do so will brick block production.
-   pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 10 * MINUTES;
+   pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 1 * MINUTES / 2;
    pub const EPOCH_DURATION_IN_SLOTS: u64 = {
        const SLOT_FILL_RATE: f64 = MILLISECS_PER_BLOCK as f64 / SLOT_DURATION as f64