* docs: Add CLAUDE_RULES.md with strict rebrand protection rules - Define immutable rebrand rules that cannot be violated - Prohibit reverting rebrand for cargo check convenience - Establish checkpoint and audit trail requirements - Document correct error handling approach * refactor: Complete kurdistan-sdk to pezkuwi-sdk rebrand - Update README.md with pezkuwi-sdk branding - Replace all kurdistan-sdk URL references with pezkuwi-sdk - Replace kurdistan-tech with pezkuwichain in workflows - Update email domains from @kurdistan-tech.io to @pezkuwichain.io - Rename tool references: kurdistan-tech-publish → pezkuwi-publish - Update runner names: kurdistan-tech-* → pezkuwichain-* - Update analytics/forum/matrix domains to pezkuwichain.io - Keep 'Kurdistan Tech Institute' as organization name - Keep tech@kurdistan.gov as official government contact
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