rebrand: kusama → dicle

- Replace all kusama/Kusama references with dicle/Dicle
- Rename weight files from ksm_size to dcl_size
- Update papi-tests files from ksm to dcl
- Remove chain-specs/kusama.json files
- cargo check --workspace successful (Finished output)
- Update MAINNET_ROADMAP.md: FAZ 8 completed
This commit is contained in:
2026-01-07 09:40:42 +03:00
parent 7d147277f2
commit 954e2703e2
190 changed files with 747 additions and 11058 deletions
+2 -2
View File
@@ -16,8 +16,8 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
/// Kusama value size distribution
pub const KUSAMA_STATE_DISTRIBUTION: &[(u32, u32)] = &[
/// Dicle value size distribution
pub const DICLE_STATE_DISTRIBUTION: &[(u32, u32)] = &[
(32, 35),
(33, 20035),
(34, 5369),
+8 -8
View File
@@ -60,8 +60,8 @@ pub enum DatabaseSize {
Huge,
}
static KUSAMA_STATE_DISTRIBUTION: LazyLock<SizePool> =
LazyLock::new(|| SizePool::from_histogram(crate::state_sizes::KUSAMA_STATE_DISTRIBUTION));
static DICLE_STATE_DISTRIBUTION: LazyLock<SizePool> =
LazyLock::new(|| SizePool::from_histogram(crate::state_sizes::DICLE_STATE_DISTRIBUTION));
impl DatabaseSize {
/// Should be multiple of SAMPLE_SIZE!
@@ -116,7 +116,7 @@ impl core::BenchmarkDescription for TrieReadBenchmarkDescription {
let mut database = TempDatabase::new();
let mut rng = rand::thread_rng();
let warmup_prefix = KUSAMA_STATE_DISTRIBUTION.key(&mut rng);
let warmup_prefix = DICLE_STATE_DISTRIBUTION.key(&mut rng);
let mut key_values = KeyValues::new();
let mut warmup_keys = KeyValues::new();
@@ -124,8 +124,8 @@ impl core::BenchmarkDescription for TrieReadBenchmarkDescription {
let every_x_key = self.database_size.keys() / SAMPLE_SIZE;
for idx in 0..self.database_size.keys() {
let kv = (
KUSAMA_STATE_DISTRIBUTION.key(&mut rng).to_vec(),
KUSAMA_STATE_DISTRIBUTION.value(&mut rng),
DICLE_STATE_DISTRIBUTION.key(&mut rng).to_vec(),
DICLE_STATE_DISTRIBUTION.value(&mut rng),
);
if idx % every_x_key == 0 {
// warmup keys go to separate tree with high prob
@@ -226,15 +226,15 @@ impl core::BenchmarkDescription for TrieWriteBenchmarkDescription {
let mut database = TempDatabase::new();
let mut rng = rand::thread_rng();
let warmup_prefix = KUSAMA_STATE_DISTRIBUTION.key(&mut rng);
let warmup_prefix = DICLE_STATE_DISTRIBUTION.key(&mut rng);
let mut key_values = KeyValues::new();
let mut warmup_keys = KeyValues::new();
let every_x_key = self.database_size.keys() / SAMPLE_SIZE;
for idx in 0..self.database_size.keys() {
let kv = (
KUSAMA_STATE_DISTRIBUTION.key(&mut rng).to_vec(),
KUSAMA_STATE_DISTRIBUTION.value(&mut rng),
DICLE_STATE_DISTRIBUTION.key(&mut rng).to_vec(),
DICLE_STATE_DISTRIBUTION.value(&mut rng),
);
if idx % every_x_key == 0 {
// warmup keys go to separate tree with high prob
+15 -2
View File
@@ -49,6 +49,9 @@ name = "executor"
harness = false
[dependencies]
# Umbrella crate for re-exports
pezkuwi-sdk = { workspace = true, default-features = true, features = ["node", "runtime"] }
# third-party dependencies
array-bytes = { workspace = true, default-features = true }
clap = { features = ["derive"], optional = true, workspace = true }
@@ -192,15 +195,25 @@ pez-node-testing = { workspace = true }
pezsc-service-test = { workspace = true }
[build-dependencies]
bizinikiwi-build-script-utils = { workspace = true, default-features = true }
clap = { optional = true, workspace = true }
clap_complete = { optional = true, workspace = true }
node-inspect = { optional = true, workspace = true, default-features = true }
pezframe-benchmarking-cli = { optional = true, workspace = true }
pezsc-cli = { optional = true, workspace = true, default-features = true }
pezsc-storage-monitor = { optional = true, workspace = true, default-features = true }
# Build dependencies use dep: syntax for optional dependencies
[features]
default = ["cli"]
cli = ["clap", "clap_complete", "dep:node-inspect"]
cli = [
"clap",
"clap_complete",
"dep:node-inspect",
"dep:pezframe-benchmarking-cli",
"dep:pezsc-cli",
"dep:pezsc-storage-monitor",
]
runtime-benchmarks = [
"bizinikiwi-cli-test-utils/runtime-benchmarks",
"bizinikiwi-frame-rpc-support/runtime-benchmarks",
+1 -3
View File
@@ -27,9 +27,7 @@ mod cli {
use clap::{CommandFactory, ValueEnum};
use clap_complete::{generate_to, Shell};
use pezkuwi_sdk::bizinikiwi_build_script_utils::{
generate_cargo_keys, rerun_if_git_head_changed,
};
use bizinikiwi_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed};
use std::{env, fs, path::Path};
pub fn main() {
+1 -1
View File
@@ -20,7 +20,7 @@
use pezkuwi_sdk::*;
use crate::chain_spec::pezsc_service::Properties;
use pezsc_service::Properties;
use pez_kitchensink_runtime::{
genesis_config_presets::{Staker, ENDOWMENT, STASH},
wasm_binary_unwrap, Block, MaxNominations, StakerStatus,
-2
View File
@@ -16,8 +16,6 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use pezkuwi_sdk::*;
/// An overarching CLI command definition.
#[derive(Debug, clap::Parser)]
pub struct Cli {
+1 -1
View File
@@ -33,7 +33,7 @@ use pez_kitchensink_runtime::RuntimeApi;
use pez_node_primitives::Block;
use pezframe_benchmarking_cli::BIZINIKIWI_REFERENCE_HARDWARE;
use pezframe_system_rpc_runtime_api::AccountNonceApi;
use pezkuwi_sdk::{pezsp_api::ProvideRuntimeApi, pezsp_core::crypto::Pair};
use pezkuwi_sdk::{pezsp_api::ProvideRuntimeApi, pezsp_core::Pair};
use pezsc_client_api::{Backend, BlockBackend};
use pezsc_consensus_babe::{self, SlotProportion};
use pezsc_network::{
+1 -1
View File
@@ -2,7 +2,7 @@
name = "pez-subkey"
version = "9.0.0"
authors.workspace = true
description = "Generate and restore keys for Bizinikiwi based chains such as Pezkuwi, Kusama and a growing number of teyrchains and Bizinikiwi based projects."
description = "Generate and restore keys for Bizinikiwi based chains such as Pezkuwi, Dicle and a growing number of teyrchains and Bizinikiwi based projects."
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
homepage.workspace = true
+3 -3
View File
@@ -1,7 +1,7 @@
# Subkey
Subkey is a commandline utility included with Bizinikiwi. It allows generating and restoring keys for Bizinikiwi based
chains such as PezkuwiChain, Kusama and a growing number of teyrchains and Bizinikiwi based projects.
chains such as PezkuwiChain, Dicle and a growing number of teyrchains and Bizinikiwi based projects.
`pez_subkey` provides a few sub-commands to generate keys, check keys, sign messages, verify messages, etc...
@@ -78,7 +78,7 @@ The output above also shows the **public key** and the **Account ID**. Those are
you will use the key.
The **SS58 address** (or **Public Address**) of a new account is a representation of the public keys of an account for
a given network (for instance Kusama or PezkuwiChain).
a given network (for instance Dicle or PezkuwiChain).
You can read more about the [SS58 format in the Bizinikiwi Docs](https://docs.pezkuwichain.io/reference/address-formats/) and see the list of reserved prefixes in the [SS58 Registry](https://docs.pezkuwichain.io/ss58-registry).
@@ -86,7 +86,7 @@ For instance, considering the previous seed `0xa05c75731970cc7868a2fb7cb577353cd
SS58 addresses are:
- PezkuwiChain: `16m4J167Mptt8UXL8aGSAi7U2FnPpPxZHPrCgMG9KJzVoFqM`
- Kusama: `JLNozAv8QeLSbLFwe2UvWeKKE4yvmDbfGxTuiYkF2BUMx4M`
- Dicle: `JLNozAv8QeLSbLFwe2UvWeKKE4yvmDbfGxTuiYkF2BUMx4M`
### Json output
+3 -3
View File
@@ -19,7 +19,7 @@
//! # Subkey
//!
//! Subkey is a commandline utility included with Bizinikiwi. It allows generating and restoring
//! keys for Bizinikiwi based chains such as Pezkuwi, Kusama and a growing number of teyrchains and
//! keys for Bizinikiwi based chains such as Pezkuwi, Dicle and a growing number of teyrchains and
//! Bizinikiwi based projects.
//! `pez_subkey` provides a few sub-commands to generate keys, check keys, sign messages, verify
@@ -98,7 +98,7 @@
//! from the network where you will use the key.
//!
//! The **SS58 address** (or **Public Address**) of a new account is a representation of the public
//! keys of an account for a given network (for instance Kusama or Pezkuwi).
//! keys of an account for a given network (for instance Dicle or Pezkuwi).
//!
//! You can read more about the [SS58 format in the Bizinikiwi Docs](https://docs.pezkuwichain.io/reference/address-formats/) and see the list of reserved prefixes in the [SS58 Registry](https://docs.pezkuwichain.io/ss58-registry).
//!
@@ -106,7 +106,7 @@
//! `0xa05c75731970cc7868a2fb7cb577353cd5b31f62dccced92c441acd8fee0c92d` the SS58 addresses are:
//!
//! - Pezkuwi: `16m4J167Mptt8UXL8aGSAi7U2FnPpPxZHPrCgMG9KJzVoFqM`
//! - Kusama: `JLNozAv8QeLSbLFwe2UvWeKKE4yvmDbfGxTuiYkF2BUMx4M`
//! - Dicle: `JLNozAv8QeLSbLFwe2UvWeKKE4yvmDbfGxTuiYkF2BUMx4M`
//!
//! ### Json output
//!
@@ -108,7 +108,7 @@ impl Default for WorkerConfig {
// interval on which to trigger new queries for the current and next authorities is a
// trade off between efficiency and performance.
//
// Querying 700 [`AuthorityId`]s takes ~8m on the Kusama DHT (16th Nov 2020) when
// Querying 700 [`AuthorityId`]s takes ~8m on the Dicle DHT (16th Nov 2020) when
// comparing `authority_discovery_authority_addresses_requested_total` and
// `authority_discovery_dht_event_received`.
max_query_interval: Duration::from_secs(10 * 60),
@@ -54,7 +54,7 @@ pub struct GenerateNodeKeyCmd {
pub common: GenerateKeyCmdCommon,
/// Specify the chain specification.
///
/// It can be any of the predefined chains like dev, local, staging, pezkuwi, kusama.
/// It can be any of the predefined chains like dev, local, staging, pezkuwi, dicle.
#[arg(long, value_name = "CHAIN_SPEC")]
pub chain: Option<String>,
/// A directory where the key should be saved. If a key already
@@ -718,7 +718,7 @@ pub fn grandpa_peers_set_config<B: BlockT, N: NetworkBackend<B, <B as BlockT>::H
N::notification_config(
protocol_name,
grandpa_protocol_name::LEGACY_NAMES.iter().map(|&n| n.into()).collect(),
// Notifications reach ~256kiB in size at the time of writing on Kusama and Pezkuwi.
// Notifications reach ~256kiB in size at the time of writing on Dicle and Pezkuwi.
1024 * 1024,
None,
pezsc_network::config::SetConfig {
+4 -4
View File
@@ -36,11 +36,11 @@ enum Method {
Compiled { instantiation_strategy: InstantiationStrategy, precompile: bool },
}
// This is just a bog-standard Kusama runtime with an extra
// This is just a bog-standard Dicle runtime with an extra
// `test_empty_return` and `test_dirty_plenty_memory` functions
// copy-pasted from the test runtime.
fn kusama_runtime() -> &'static [u8] {
include_bytes!("kusama_runtime.wasm")
fn dicle_runtime() -> &'static [u8] {
include_bytes!("dicle_runtime.wasm")
}
fn initialize(
@@ -204,7 +204,7 @@ fn bench_call_instance(c: &mut Criterion) {
),
];
let runtimes = [("kusama_runtime", kusama_runtime()), ("test_runtime", test_runtime())];
let runtimes = [("dicle_runtime", dicle_runtime()), ("test_runtime", test_runtime())];
let thread_counts = [1, 2, 4, 8, 16];
@@ -296,7 +296,7 @@ fn common_config(semantics: &Semantics) -> std::result::Result<wasmtime::Config,
// Pooling needs a bunch of hard limits to be set; if we go over
// any of these then the instantiation will fail.
//
// Current minimum values for kusama (as of 2022-04-14):
// Current minimum values for dicle (as of 2022-04-14):
// size: 32384
// table_elements: 1249
// memory_pages: 2070
@@ -29,8 +29,8 @@ use prometheus_endpoint::{register, Counter, PrometheusError, Registry, U64};
use std::{collections::HashMap, iter, sync::Arc, time, time::Instant};
// FIXME: Add additional spam/DoS attack protection: https://github.com/pezkuwichain/pezkuwi-sdk/issues/7
// NOTE: The current value is adjusted based on largest production network deployment (Kusama) and
// the current main gossip user (GRANDPA). Currently there are ~800 validators on Kusama, as such,
// NOTE: The current value is adjusted based on largest production network deployment (Dicle) and
// the current main gossip user (GRANDPA). Currently there are ~800 validators on Dicle, as such,
// each GRANDPA round should generate ~1600 messages, and we currently keep track of the last 2
// completed rounds and the current live one. That makes it so that at any point we will be holding
// ~4800 live messages.
+2 -2
View File
@@ -148,7 +148,7 @@ pub trait StateApi<Hash> {
/// interpretation of the traces requires an understanding of the Bizinikiwi chain's block
/// execution.
///
/// [Link to conceptual map of trace structure for Pezkuwi and Kusama block execution.][2]
/// [Link to conceptual map of trace structure for Pezkuwi and Dicle block execution.][2]
///
/// [1]: https://crates.io/crates/tracing
/// [2]: https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing
@@ -263,7 +263,7 @@ pub trait StateApi<Hash> {
/// will be filtered by storage key (so non-storage events will **not** show up).
/// You can specify any length of a storage key prefix (i.e. if a specified storage
/// key is in the beginning of an events storage key it is considered a match).
/// Example: for balance tracking on Pezkuwi & Kusama you would likely want
/// Example: for balance tracking on Pezkuwi & Dicle you would likely want
/// to track changes to account balances with the pezframe_system::Account storage item,
/// which is a map from `AccountId` to `AccountInfo`. The key filter for this would be
/// the storage prefix for the map:
@@ -70,7 +70,7 @@ pub fn display_and_check_bags<Runtime: RuntimeT<Instance1>>(
.try_into()
.map_err(|_| "runtime must configure score to at most u64 to use this test")
.unwrap();
// threshold in terms of UNITS (e.g. KSM, HEZ etc)
// threshold in terms of UNITS (e.g. DCL, HEZ etc)
let vote_weight_thresh_as_unit = vote_weight_thresh_u64 as f64 / currency_unit as f64;
let pretty_thresh = format!("Threshold: {}. {}", vote_weight_thresh_as_unit, currency_name);
@@ -23,7 +23,7 @@ use pezsp_runtime::{traits::Block as BlockT, DeserializeOwned};
use remote_externalities::{Builder, Mode, OnlineConfig};
/// Test voter bags migration. `currency_unit` is the number of planks per the the runtimes `UNITS`
/// (i.e. number of decimal places per HEZ, KSM etc)
/// (i.e. number of decimal places per HEZ, DCL etc)
pub async fn execute<Runtime, Block>(
currency_unit: u64,
currency_name: &'static str,
@@ -171,7 +171,7 @@ pub trait MinerConfig {
///
/// Must be the same as configured in the [`crate::Config::DataProvider`].
///
/// For simplicity, this is 16 in Pezkuwi and 24 in Kusama.
/// For simplicity, this is 16 in Pezkuwi and 24 in Dicle.
type MaxVotesPerVoter: Get<u32>;
/// Maximum number of winners to select per page.
///
@@ -22,10 +22,10 @@ mod pezpallet_election_provider_multi_block_signed_hez_size;
mod pezpallet_election_provider_multi_block_unsigned_hez_size;
mod pezpallet_election_provider_multi_block_verifier_hez_size;
mod pezpallet_election_provider_multi_block_ksm_size;
mod pezpallet_election_provider_multi_block_signed_ksm_size;
mod pezpallet_election_provider_multi_block_unsigned_ksm_size;
mod pezpallet_election_provider_multi_block_verifier_ksm_size;
mod pezpallet_election_provider_multi_block_dcl_size;
mod pezpallet_election_provider_multi_block_signed_dcl_size;
mod pezpallet_election_provider_multi_block_unsigned_dcl_size;
mod pezpallet_election_provider_multi_block_verifier_dcl_size;
use pezframe_support::pezpallet_prelude::Weight;
@@ -168,13 +168,13 @@ pub mod traits {
}
}
/// Kusama-esque weights only be used in testing runtimes.
pub mod kusama {
/// Dicle-esque weights only be used in testing runtimes.
pub mod dicle {
pub use super::{
pezpallet_election_provider_multi_block_ksm_size::WeightInfo as MultiBlockWeightInfo,
pezpallet_election_provider_multi_block_signed_ksm_size::WeightInfo as MultiBlockSignedWeightInfo,
pezpallet_election_provider_multi_block_unsigned_ksm_size::WeightInfo as MultiBlockUnsignedWeightInfo,
pezpallet_election_provider_multi_block_verifier_ksm_size::WeightInfo as MultiBlockVerifierWeightInfo,
pezpallet_election_provider_multi_block_dcl_size::WeightInfo as MultiBlockWeightInfo,
pezpallet_election_provider_multi_block_signed_dcl_size::WeightInfo as MultiBlockSignedWeightInfo,
pezpallet_election_provider_multi_block_unsigned_dcl_size::WeightInfo as MultiBlockUnsignedWeightInfo,
pezpallet_election_provider_multi_block_verifier_dcl_size::WeightInfo as MultiBlockVerifierWeightInfo,
};
}
@@ -43,13 +43,13 @@
// --repeat
// 5
// --genesis-builder-preset
// fake-ksm
// fake-dcl
// --template
// ../../../../../bizinikiwi/pezframe/election-provider-multi-block/src/template.hbs
// --heap-pages
// 65000
// --output
// ./pezpallet_election_provider_multi_block_fake-ksm.rs
// ./pezpallet_election_provider_multi_block_fake-dcl.rs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -43,13 +43,13 @@
// --repeat
// 5
// --genesis-builder-preset
// fake-ksm
// fake-dcl
// --template
// ../../../../../bizinikiwi/pezframe/election-provider-multi-block/src/template.hbs
// --heap-pages
// 65000
// --output
// ./pezpallet_election_provider_multi_block_signed_fake-ksm.rs
// ./pezpallet_election_provider_multi_block_signed_fake-dcl.rs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -43,14 +43,14 @@
// --repeat
// 3
// --genesis-builder-preset
// fake-ksm
// fake-dcl
// --template
// ../../../../../bizinikiwi/pezframe/election-provider-multi-block/src/template.hbs
// --heap-pages
// 65000
// --extra
// --output
// ./pezpallet_election_provider_multi_block_unsigned_fake-ksm.rs
// ./pezpallet_election_provider_multi_block_unsigned_fake-dcl.rs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -43,13 +43,13 @@
// --repeat
// 5
// --genesis-builder-preset
// fake-ksm
// fake-dcl
// --template
// ../../../../../bizinikiwi/pezframe/election-provider-multi-block/src/template.hbs
// --heap-pages
// 65000
// --output
// ./pezpallet_election_provider_multi_block_verifier_fake-ksm.rs
// ./pezpallet_election_provider_multi_block_verifier_fake-dcl.rs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -15,7 +15,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! Remote mining tests for Kusama and Pezkuwi.
//! Remote mining tests for Dicle and Pezkuwi.
//!
//! Run like this:
//!
@@ -84,7 +84,7 @@ pub mod pezkuwi {
}
}
pub mod kusama {
pub mod dicle {
use super::*;
pub struct MinerConfig;
@@ -235,13 +235,13 @@ async fn mine_for_pezkuwi() {
}
#[tokio::test]
async fn mine_for_kusama() {
async fn mine_for_dicle() {
pezsp_tracing::try_init_simple();
// good way to find good block hashes: https://kusama.subscan.io/event?page=1&time_dimension=date&module=electionprovidermultiphase&event_id=solutionstored
// good way to find good block hashes: https://dicle.subscan.io/event?page=1&time_dimension=date&module=electionprovidermultiphase&event_id=solutionstored
// we are just looking for blocks with snapshot present, that's all.
let block_hash_str = std::option_env!("BLOCK_HASH")
// known good kusama hash
// known good dicle hash
.unwrap_or("d5d9f5e098fcb41915c85e6695eddc18c0bc4aa4976ad0d9bf5f4713039bca26")
.to_string();
let block_hash = H256::from_slice(hex::decode(block_hash_str).unwrap().as_ref());
@@ -260,6 +260,6 @@ async fn mine_for_kusama() {
.await
.unwrap()
.execute_with(|| {
test_for_network::<kusama::MinerConfig>();
test_for_network::<dicle::MinerConfig>();
});
}
@@ -132,7 +132,7 @@ fn offchainify_works() {
}
#[test]
/// Inspired by the Kusama incident of 8th Dec 2022 and its resolution through the governance
/// Inspired by the Dicle incident of 8th Dec 2022 and its resolution through the governance
/// fallback.
///
/// Mass slash of validators shouldn't disable more than 1/3 of them (the byzantine threshold). Also
@@ -1112,7 +1112,7 @@ mod batched {
}
#[test]
fn kusama_estimate() {
fn dicle_estimate() {
use crate::WeightInfo;
let block_time = pezframe_support::weights::Weight::from_parts(
pezframe_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND * 2,
@@ -1696,7 +1696,7 @@ pub mod pezpallet {
///
/// See the inline code docs of `Member::pending_rewards` and `RewardPool::update_recorded`
/// for example analysis. A [`pezsp_runtime::FixedU128`] should be fine for chains with
/// balance types similar to that of Pezkuwi and Kusama, in the absence of severe slashing
/// balance types similar to that of Pezkuwi and Dicle, in the absence of severe slashing
/// (or prevented via a reasonable `MaxPointsToBalance`), for many many years to come.
type RewardCounter: FixedPointNumber + MaxEncodedLen + TypeInfo + Default + codec::FullCodec;
@@ -2374,7 +2374,7 @@ mod claim_payout {
#[test]
fn claim_payout_large_numbers() {
let unit = 10u128.pow(12); // akin to KSM
let unit = 10u128.pow(12); // akin to DCL
ExistentialDeposit::set(unit);
StakingMinBond::set(unit * 1000);
@@ -228,7 +228,7 @@ mod test {
use std::fs;
fn load_metadata(version: u32) -> Vec<u8> {
fs::read(format!("./test_data/ksm_metadata_v{}.bin", version)).unwrap()
fs::read(format!("./test_data/dcl_metadata_v{}.bin", version)).unwrap()
}
#[test]
@@ -13,7 +13,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! Metadata Version 10. Networks like Kusama contain this version on-chain.
//! Metadata Version 10. Networks like Dicle contain this version on-chain.
//! Chains old enough to contain this metadata need a way to decode it.
#![allow(missing_docs)]
@@ -13,7 +13,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! Metadata Version 11. Networks like Kusama contain this version on-chain.
//! Metadata Version 11. Networks like Dicle contain this version on-chain.
//! Chains old enough to contain this metadata need a way to decode it.
#![allow(missing_docs)]
@@ -13,7 +13,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! Metadata Version 12. Networks like Kusama contain this version on-chain.
//! Metadata Version 12. Networks like Dicle contain this version on-chain.
//! Chains old enough to contain this metadata need a way to decode it.
#![allow(missing_docs)]
@@ -15,7 +15,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! Metadata Version 13. Networks like Kusama contain this version on-chain.
//! Metadata Version 13. Networks like Dicle contain this version on-chain.
//! Chains old enough to contain this metadata need a way to decode it.
use crate::decode_different::*;
@@ -13,7 +13,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! Metadata Version 9. Networks like/as old as Kusama start here.
//! Metadata Version 9. Networks like/as old as Dicle start here.
//! Chains old enough to contain this metadata need a way to decode it.
#![allow(missing_docs)]
@@ -887,7 +887,7 @@ mod tests {
assert_eq!(encoded_size, 74);
}
// Kusama has the same configurations as of now.
// Dicle has the same configurations as of now.
const PEZKUWI_MAX_DOWNWARD_MESSAGE_SIZE: u32 = 51200; // 50 Kib
const PEZKUWI_MAX_UPWARD_MESSAGE_SIZE: u32 = 65531; // 64 Kib
@@ -78,7 +78,7 @@ This type looks into `parameter_types! { pub storage UsePreviousValidators: bool
validators run by ZN (often alice and bob). If AH sends us back a validator set that contains a
large new validator set, the setup will break. As seen in the next section, a number of runtime
presets are designed to generate large validator/nominator sets to mimic the behavior of PezkuwiChain
and Kusama. We thereofre must use this hack in such cases.
and Dicle. We thereofre must use this hack in such cases.
- If set to `false`, it will use the new validator set.
#### Presets
@@ -99,7 +99,7 @@ More concretely, the presets are:
- Teyrchain:
- `fake-dev`: 4 page, small number of fake validators and nominators.
- `fake-hez`: 32 pages, large number of fake validators and nominators.
- `fake-ksm`: 16 pages, large number of fake validators and nominators.
- `fake-dcl`: 16 pages, large number of fake validators and nominators.
- `real-s`: 4 pages, alice and bob as validators, 500 fake nominators
- `real-m`: 4 pages, alice, bob, dave, eve as validators, 2000 fake nominators.
- Relay Chain
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Bizinikiwi. If not, see <http://www.gnu.org/licenses/>.
//! New governance configurations for the Kusama runtime.
//! New governance configurations for the Dicle runtime.
use super::*;
use crate::xcm_config::Collectives;
@@ -59,15 +59,15 @@ pub mod pezpallet_custom_origins {
ReferendumCanceller,
/// Origin able to kill referenda.
ReferendumKiller,
/// Origin able to spend up to 1 KSM from the treasury at once.
/// Origin able to spend up to 1 DCL from the treasury at once.
SmallTipper,
/// Origin able to spend up to 5 KSM from the treasury at once.
/// Origin able to spend up to 5 DCL from the treasury at once.
BigTipper,
/// Origin able to spend up to 50 KSM from the treasury at once.
/// Origin able to spend up to 50 DCL from the treasury at once.
SmallSpender,
/// Origin able to spend up to 500 KSM from the treasury at once.
/// Origin able to spend up to 500 DCL from the treasury at once.
MediumSpender,
/// Origin able to spend up to 5,000 KSM from the treasury at once.
/// Origin able to spend up to 5,000 DCL from the treasury at once.
BigSpender,
/// Origin able to dispatch a whitelisted call.
WhitelistedCaller,
@@ -1179,7 +1179,7 @@ where
}
parameter_types! {
// Minimum 100 bytes/KSM deposited (1 CENT/byte)
// Minimum 100 bytes/DCL deposited (1 CENT/byte)
pub const BasicDeposit: Balance = 1000 * CENTS; // 258 bytes on-chain
pub const ByteDeposit: Balance = deposit(0, 1);
pub const UsernameDeposit: Balance = deposit(0, 32);
@@ -20,13 +20,13 @@
//! DATE: 2023-06-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! WORST CASE MAP SIZE: `1000000`
//! HOSTNAME: `runner-e8ezs4ez-project-163-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 1024
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dicle-dev"), DB CACHE: 1024
// Executed Command:
// ./target/production/pezkuwi
// benchmark
// pezpallet
// --chain=kusama-dev
// --chain=dicle-dev
// --steps=50
// --repeat=20
// --no-storage-info
@@ -37,7 +37,7 @@
// --execution=wasm
// --wasm-execution=compiled
// --header=./file_header.txt
// --output=./runtime/kusama/src/weights/
// --output=./runtime/dicle/src/weights/
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -146,7 +146,7 @@ pub fn get_preset(id: &PresetId) -> Option<Vec<u8>> {
params.dev_stakers = Some((2_500, 25_000));
staking_async_teyrchain_genesis(params, id.to_string())
},
"fake-ksm" => {
"fake-dcl" => {
params.validator_count = 1_000;
params.dev_stakers = Some((4_500, 15_000));
staking_async_teyrchain_genesis(params, id.to_string())
@@ -168,6 +168,6 @@ pub fn preset_names() -> Vec<PresetId> {
PresetId::from("real-m"),
PresetId::from("fake-dev"),
PresetId::from("fake-hez"),
PresetId::from("fake-ksm"),
PresetId::from("fake-dcl"),
]
}
@@ -15,7 +15,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//! New governance configurations for the Kusama runtime.
//! New governance configurations for the Dicle runtime.
use super::*;
use crate::xcm_config::Collectives;
@@ -59,15 +59,15 @@ pub mod pezpallet_custom_origins {
ReferendumCanceller,
/// Origin able to kill referenda.
ReferendumKiller,
/// Origin able to spend up to 1 KSM from the treasury at once.
/// Origin able to spend up to 1 DCL from the treasury at once.
SmallTipper,
/// Origin able to spend up to 5 KSM from the treasury at once.
/// Origin able to spend up to 5 DCL from the treasury at once.
BigTipper,
/// Origin able to spend up to 50 KSM from the treasury at once.
/// Origin able to spend up to 50 DCL from the treasury at once.
SmallSpender,
/// Origin able to spend up to 500 KSM from the treasury at once.
/// Origin able to spend up to 500 DCL from the treasury at once.
MediumSpender,
/// Origin able to spend up to 5,000 KSM from the treasury at once.
/// Origin able to spend up to 5,000 DCL from the treasury at once.
BigSpender,
/// Origin able to dispatch a whitelisted call.
WhitelistedCaller,
@@ -2182,9 +2182,9 @@ impl_runtime_apis! {
log::info!(target: "runtime", "detected a fake-dev preset");
// noop, default values are for dev.
},
"fake-ksm" => {
log::info!(target: "runtime", "detected fake-ksm preset");
crate::staking::enable_ksm_preset(true);
"fake-dcl" => {
log::info!(target: "runtime", "detected fake-dcl preset");
crate::staking::enable_dcl_preset(true);
},
"fake-hez" => {
log::info!(target: "runtime", "detected fake-hez preset");
@@ -43,7 +43,7 @@ pub(crate) fn enable_hez_preset(fast: bool) {
}
}
pub(crate) fn enable_ksm_preset(fast: bool) {
pub(crate) fn enable_dcl_preset(fast: bool) {
Pages::set(&16);
MinerPages::set(&4);
MaxElectingVoters::set(&12_500);
@@ -55,21 +55,21 @@ pub(crate) fn enable_ksm_preset(fast: bool) {
}
// This macro contains all of the variable parameters that we intend to use for Pezkuwi and
// Kusama.
// Dicle.
//
// Note that this runtime has 3 broad presets:
//
// 1. dev: fast development preset.
// 2. dot-size: as close to Pezkuwi as possible.
// 3. ksm-size: as close to Kusama as possible.
// 3. dcl-size: as close to Dicle as possible.
//
// The default values here are related to `dev`. The above helper functions are used at launch (see
// `build_state` runtime-api) to enable dot/ksm presets.
// `build_state` runtime-api) to enable dot/dcl presets.
parameter_types! {
/// Number of election pages that we operate upon.
///
/// * Pezkuwi: 32 (3.2m snapshot)
/// * Kusama: 16 (1.6m snapshot)
/// * Dicle: 16 (1.6m snapshot)
///
/// Reasoning: Both leads to around 700 nominators per-page, yielding the weights in
/// https://github.com/pezkuwichain/pezkuwi-sdk/issues/273, the maximum of which being around 1mb
@@ -82,22 +82,22 @@ parameter_types! {
pub storage Pages: u32 = 4;
/// * Pezkuwi: 16 * 32 (512 blocks, 51.2m).
/// * Kusama: 8 * 16 (12 blocks, 12.8m).
/// * Dicle: 8 * 16 (12 blocks, 12.8m).
///
/// (MaxSubmissions * Pages) for both, enough to verify all solutions.
///
/// Reasoning: Less security needed in Kusama, to compensate for the shorter session duration.
/// Reasoning: Less security needed in Dicle, to compensate for the shorter session duration.
pub storage SignedValidationPhase: u32 = Pages::get() * 2;
/// * Pezkuwi: 200 blocks, 20m.
/// * Kusama: 100 blocks, 10m.
/// * Dicle: 100 blocks, 10m.
///
/// Reasoning:
///
/// * Pezkuwi wishes at least 8 submitters to be able to submit. That is 8 * 32 = 256 pages
/// for all submitters. Weight of each submission page is roughly 0.0007 of block weight. 200
/// blocks is more than enough.
/// * Kusama wishes at least 4 submitters to be able to submit. That is 4 * 16 = 64 pages for
/// * Dicle wishes at least 4 submitters to be able to submit. That is 4 * 16 = 64 pages for
/// all submitters. Weight of each submission page is roughly 0.0007 of block weight. 100
/// blocks is more than enough.
///
@@ -105,16 +105,16 @@ parameter_types! {
pub storage SignedPhase: u32 = 4 * MINUTES;
/// * Pezkuwi: 4
/// * Kusama: 4
/// * Dicle: 4
///
/// Reasoning: with 4 pages, the `ElectionScore` computed in both Kusama and Pezkuwi is pretty
/// Reasoning: with 4 pages, the `ElectionScore` computed in both Dicle and Pezkuwi is pretty
/// good. See and run `run_election_with_pages` below to see. With 4 pages, roughly 2800
/// nominators will be elected. This is not great for staking reward, but is good enough for
/// chain's economic security.
pub storage MinerPages: u32 = 4;
/// * Pezkuwi: 300 blocks, 30m
/// * Kusama: 150 blocks, 15m
/// * Dicle: 150 blocks, 15m
///
/// Reasoning: The only criteria is for the phase to be long enough such that the OCW miner is
/// able to run the mining code at least twice. Note that `OffchainRepeat` limits execution of
@@ -123,13 +123,13 @@ parameter_types! {
/// Benchmarks logs from tests below are:
///
/// * exec_time of pezkuwi miner in WASM with 4 pages is 27369ms
/// * exec_time of kusama miner in WASM with 4 pages is 23848ms
/// * exec_time of dicle miner in WASM with 4 pages is 23848ms
///
/// See `max_ocw_miner_pages_as_per_weights` test below.
pub storage UnsignedPhase: u32 = MINUTES;
/// * Pezkuwi: 22_500
/// * Kusama: 12_500
/// * Dicle: 12_500
///
/// Reasoning: Yielding 703 nominators per page in both. See [`Pages`] for more info. Path to
/// Upgrade: We may wish to increase the number of "active nominators" in both networks by 1)
@@ -138,7 +138,7 @@ parameter_types! {
pub storage MaxElectingVoters: u32 = 1000;
/// * Pezkuwi: 2000 (always equal to `staking.maxValidatorCount`)
/// * Kusama: 4000 (always equal to `staking.maxValidatorCount`)
/// * Dicle: 4000 (always equal to `staking.maxValidatorCount`)
///
/// Reasoning: As of now, we don't have a way to sort validators, so we wish to select all of
/// them. In case this limit is reached, governance should introduce `minValidatorBond`, and
@@ -146,20 +146,20 @@ parameter_types! {
/// info: SRL-417
pub storage TargetSnapshotPerBlock: u32 = 4000;
// NOTE: rest of the parameters are computed identically in both Kusama and Pezkuwi.
// NOTE: rest of the parameters are computed identically in both Dicle and Pezkuwi.
/// Allow OCW miner to at most run 4 times in the entirety of the 10m Unsigned Phase.
pub OffchainRepeat: u32 = UnsignedPhase::get() / 4;
/// Upper bound of `Staking.ValidatorCount`, which translates to
/// `ElectionProvider::DesiredTargets`. 1000 is the end-game for both Kusama and Pezkuwi for
/// `ElectionProvider::DesiredTargets`. 1000 is the end-game for both Dicle and Pezkuwi for
/// the foreseeable future.
pub const MaxValidatorSet: u32 = 1000;
/// Number of nominators per page of the snapshot, and consequently number of backers in the
/// solution.
///
/// 703 in both Pezkuwi and Kusama.
/// 703 in both Pezkuwi and Dicle.
pub VoterSnapshotPerBlock: u32 = MaxElectingVoters::get() / Pages::get();
/// In each page, we may observe up to all of the validators.
@@ -185,7 +185,7 @@ parameter_types! {
// Signed phase parameters.
parameter_types! {
/// * Pezkuwi: 16
/// * Kusama: 8
/// * Dicle: 8
///
/// Reasoning: This is double the capacity of verification. There is no point for someone to be
/// a submitter if they cannot be verified, yet, it is beneficial to act as a "reserve", in case
@@ -195,26 +195,26 @@ parameter_types! {
/// * Pezkuwi: Geometric progression with starting value 4 HEZ, common factor 2. For 16
/// submissions, it will be [4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384,
/// 32768, 65536, 131072]. Sum is `262140 HEZ` for all 16 submissions.
/// * Kusama: Geometric progression with with starting value 0.1 KSM, common factor 4. For 8
/// * Dicle: Geometric progression with with starting value 0.1 DCL, common factor 4. For 8
/// submissions, values will be: `[0.1, 0.4, 1.6, 6.4, 25.6, 102.4, 409.6, 1638.4]`. Sum is
/// `2184.5 KSM` for all 8 submissions.
/// `2184.5 DCL` for all 8 submissions.
pub DepositBase: Balance = 5 * UNITS;
/// * Pezkuwi: standard byte deposit configured in PAH.
/// * Kusama: standard byte deposit configured in KAH.
/// * Dicle: standard byte deposit configured in KAH.
///
/// TODO: need a maximum solution length for each runtime.
pub DepositPerPage: Balance = 1 * UNITS;
/// * Pezkuwi: 20 HEZ
/// * Kusama: 1 KSM
/// * Dicle: 1 DCL
///
///
/// Fixed deposit for invulnerable accounts.
pub InvulnerableDeposit: Balance = UNITS;
/// * Pezkuwi: 10% (more restrictive, don't bail!)
/// * Kusama: 25%
/// * Dicle: 25%
///
/// Reasoning: The weight/fee of the `bail` transaction is already assuming you delete all pages
/// of your solution while bailing, and charges you accordingly. So the chain is being
@@ -223,7 +223,7 @@ parameter_types! {
pub BailoutGraceRatio: Perbill = Perbill::from_percent(5);
/// * Pezkuwi: 100%
/// * Kusama: 100%
/// * Dicle: 100%
///
/// The transaction fee of `register` takes into account the cost of possibly ejecting another
/// submission into account. In the scenario that the honest submitter is being ejected by an
@@ -232,12 +232,12 @@ parameter_types! {
pub EjectGraceRatio: Perbill = Perbill::from_percent(50);
/// * Pezkuwi: 5 DOTs per era/day
/// * Kusama: 1 KSM per era/6h
/// * Dicle: 1 DCL per era/6h
pub RewardBase: Balance = 10 * UNITS;
}
// * Pezkuwi: as seen here.
// * Kusama, we will use a similar type, but with 24 as the maximum filed length.
// * Dicle, we will use a similar type, but with 24 as the maximum filed length.
//
// Reasoning: using u16, we can have up to 65,536 nominators and validators represented in the
// snapshot. If we every go beyond this, we have to first adjust this type.
@@ -418,7 +418,7 @@ parameter_types! {
pub const MaxControllersInDeprecationBatch: u32 = 751;
pub const MaxNominations: u32 = <NposCompactSolution16 as pezframe_election_provider_support::NposSolution>::LIMIT as u32;
// Note: In WAH, this should be set closer to the ideal era duration to trigger capping more
// frequently. On Kusama and Pezkuwi, a higher value like 7 × ideal_era_duration is more
// frequently. On Dicle and Pezkuwi, a higher value like 7 × ideal_era_duration is more
// appropriate.
pub const MaxEraDuration: u64 = RelaySessionDuration::get() as u64 * RELAY_CHAIN_SLOT_DURATION_MILLIS as u64 * SessionsPerEra::get() as u64;
pub MaxPruningItems: u32 = 100;
@@ -692,13 +692,13 @@ mod tests {
let block_weight = <Runtime as pezframe_system::Config>::BlockWeights::get().max_block;
let pezkuwi_signed_submission =
mb::weights::pezkuwi::MultiBlockSignedWeightInfo::<Runtime>::submit_page();
let kusama_signed_submission =
mb::weights::kusama::MultiBlockSignedWeightInfo::<Runtime>::submit_page();
let dicle_signed_submission =
mb::weights::dicle::MultiBlockSignedWeightInfo::<Runtime>::submit_page();
log::info!(target: "runtime", "Pezkuwi:");
weight_diff(block_weight, pezkuwi_signed_submission);
log::info!(target: "runtime", "Kusama:");
weight_diff(block_weight, kusama_signed_submission);
log::info!(target: "runtime", "Dicle:");
weight_diff(block_weight, dicle_signed_submission);
}
#[test]
@@ -718,15 +718,15 @@ mod tests {
});
pezsp_io::TestExternalities::default().execute_with(|| {
super::enable_ksm_preset(false);
super::enable_dcl_preset(false);
let duration = mb::Pezpallet::<Runtime>::average_election_duration();
let kusama_session = 1 * HOURS;
let dicle_session = 1 * HOURS;
log::info!(
target: "runtime",
"Kusama election duration: {:?}, session: {:?} ({} sessions)",
"Dicle election duration: {:?}, session: {:?} ({} sessions)",
duration,
kusama_session,
duration / kusama_session
dicle_session,
duration / dicle_session
);
});
}
@@ -745,9 +745,9 @@ mod tests {
for p in 1..=16 {
log::info!(
target: "runtime",
"exec_time of kusama miner in WASM with {} pages is {:?}ms",
"exec_time of dicle miner in WASM with {} pages is {:?}ms",
p,
mb::weights::kusama::MultiBlockUnsignedWeightInfo::<Runtime>::mine_solution(p).ref_time() / WEIGHT_REF_TIME_PER_MILLIS
mb::weights::dicle::MultiBlockUnsignedWeightInfo::<Runtime>::mine_solution(p).ref_time() / WEIGHT_REF_TIME_PER_MILLIS
);
}
}
@@ -20,13 +20,13 @@
//! DATE: 2023-06-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! WORST CASE MAP SIZE: `1000000`
//! HOSTNAME: `runner-e8ezs4ez-project-163-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 1024
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dicle-dev"), DB CACHE: 1024
// Executed Command:
// ./target/production/pezkuwi
// benchmark
// pezpallet
// --chain=kusama-dev
// --chain=dicle-dev
// --steps=50
// --repeat=20
// --no-storage-info
@@ -37,7 +37,7 @@
// --execution=wasm
// --wasm-execution=compiled
// --header=./file_header.txt
// --output=./runtime/kusama/src/weights/
// --output=./runtime/dicle/src/weights/
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -728,7 +728,7 @@ pub mod bridging {
/// User fee for ERC20 token transfer back to Ethereum.
/// (initially was calculated by test `OutboundQueue::calculate_fees` - ETH/ZGR 1/400 and fee_per_gas 20 GWEI = 2200698000000 + *25%)
/// Needs to be more than fee calculated from DefaultFeeConfig FeeConfigRecord in snowbridge:teyrchain/pallets/outbound-queue/src/lib.rs
/// Pezkuwi uses 10 decimals, Kusama,Pezkuwichain,Zagros 12 decimals.
/// Pezkuwi uses 10 decimals, Dicle,Pezkuwichain,Zagros 12 decimals.
pub const DefaultBridgeHubEthereumBaseFee: Balance = 2_750_872_500_000;
pub storage BridgeHubEthereumBaseFee: Balance = DefaultBridgeHubEthereumBaseFee::get();
pub SiblingBridgeHubWithEthereumInboundQueueInstance: Location = Location::new(
+1 -1
View File
@@ -27,7 +27,7 @@
//! `pezpallet-election-provider-multi-block`.
//!
//! While `pezpallet-staking` was somewhat general-purpose, this pezpallet is absolutely NOT right
//! from the get-go: It is designed to be used ONLY in Pezkuwi/Kusama AssetHub system teyrchains.
//! from the get-go: It is designed to be used ONLY in Pezkuwi/Dicle AssetHub system teyrchains.
//!
//! The workings of this pezpallet can be divided into a number of subsystems, as follows.
//!
@@ -656,7 +656,7 @@ enum PalletsConversion {
///
/// `System: pezframe_system::{Pezpallet, Call}`
///
/// However, for backwards compatibility with Pezkuwi/Kusama
/// However, for backwards compatibility with Pezkuwi/Dicle
/// we must propagate some other parts to the pezpallet by default.
Explicit(Vec<Pezpallet>),
/// Pallets explicitly declare parts that are fully expanded.
@@ -63,7 +63,7 @@ pezframe_support::construct_runtime!(
Example: common::outer_enums::pezpallet::{Pezpallet, Config<T>, Event<T>, Error<T>},
Instance1Example: common::outer_enums::pezpallet::<Instance1>::{ Pezpallet, Config<T>, Event<T> },
// This pezpallet does not mention the Error type, but it must be propagated (similarly to the pezkuwi/kusama).
// This pezpallet does not mention the Error type, but it must be propagated (similarly to the pezkuwi/dicle).
Example2: common::outer_enums::pallet2::{Pezpallet, Config<T>, Event<T> },
Instance1Example2: common::outer_enums::pallet2::<Instance1>::{Pezpallet, Config<T>, Event<T>},
@@ -41,7 +41,7 @@ type Balance = u128;
type AccountId = u64;
/// Or any other token type.
const KSM: Balance = 1_000_000_000_000;
const DCL: Balance = 1_000_000_000_000;
fn main() {
loop {
@@ -92,7 +92,7 @@ fn generate_random_phragmen_assignment(
if winners.iter().all(|w| *w != target) {
winners.push(target);
}
(target, rng.gen_range(1 * KSM..100 * KSM))
(target, rng.gen_range(1 * DCL..100 * DCL))
})
.collect::<Vec<(AccountId, ExtendedBalance)>>();
@@ -864,7 +864,7 @@ mod score {
#[test]
fn score_comparison_large_value() {
// some random value taken from eras in kusama.
// some random value taken from eras in dicle.
let initial =
[12488167277027543u128, 5559266368032409496, 118749283262079244270992278287436446];
// this claim is 0.04090% better in the third component. It should be accepted as better if
@@ -7,7 +7,7 @@ usage. It can be used to measure the accuracy of the pezpallet benchmarking.
In the following it will be explained once for PezkuwiChain and once for Bizinikiwi.
## PezkuwiChain # 1
<sup>(Also works for Kusama, zagros and pezkuwichain)</sup>
<sup>(Also works for Dicle, zagros and pezkuwichain)</sup>
Suppose you either have a synced PezkuwiChain node or downloaded a snapshot from [Polkachu]. This example uses a pruned