chore: bump spec versions for mainnet upgrade (RC 1_020_005, AH 1_020_005, People 1_020_008)
This commit is contained in:
@@ -138,7 +138,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
||||
spec_name: alloc::borrow::Cow::Borrowed("asset-hub-pezkuwichain"),
|
||||
impl_name: alloc::borrow::Cow::Borrowed("asset-hub-pezkuwichain"),
|
||||
authoring_version: 1,
|
||||
spec_version: 1_020_007,
|
||||
spec_version: 1_020_005,
|
||||
impl_version: 0,
|
||||
apis: RUNTIME_API_VERSIONS,
|
||||
transaction_version: 16,
|
||||
|
||||
@@ -157,7 +157,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
||||
spec_name: alloc::borrow::Cow::Borrowed("people-pezkuwichain"),
|
||||
impl_name: alloc::borrow::Cow::Borrowed("people-pezkuwichain"),
|
||||
authoring_version: 1,
|
||||
spec_version: 1_020_007,
|
||||
spec_version: 1_020_008,
|
||||
impl_version: 0,
|
||||
apis: RUNTIME_API_VERSIONS,
|
||||
transaction_version: 1,
|
||||
|
||||
@@ -134,10 +134,9 @@ impl xcm_executor::traits::ConvertOrigin<RuntimeOrigin> for RelayWelatiPlurality
|
||||
) -> Result<RuntimeOrigin, Location> {
|
||||
let origin = origin.into();
|
||||
match (kind, origin.unpack()) {
|
||||
(
|
||||
OriginKind::Superuser,
|
||||
(1, [Plurality { id: BodyId::Index(40 | 41 | 42), .. }]),
|
||||
) => Ok(RuntimeOrigin::root()),
|
||||
(OriginKind::Superuser, (1, [Plurality { id: BodyId::Index(40..=42), .. }])) => {
|
||||
Ok(RuntimeOrigin::root())
|
||||
},
|
||||
_ => Err(origin),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,12 +68,12 @@ use pezkuwi_runtime_teyrchains::{
|
||||
inclusion::{AggregateMessageOrigin, UmpQueueId},
|
||||
initializer as teyrchains_initializer, on_demand as teyrchains_on_demand,
|
||||
origin as teyrchains_origin, paras as teyrchains_paras,
|
||||
paras_inherent as teyrchains_paras_inherent,
|
||||
paras_inherent as teyrchains_paras_inherent, reward_points as teyrchains_reward_points,
|
||||
runtime_api_impl::{
|
||||
v13 as teyrchains_runtime_api_impl, vstaging as teyrchains_staging_runtime_api_impl,
|
||||
},
|
||||
scheduler as teyrchains_scheduler, session_info as teyrchains_session_info,
|
||||
reward_points as teyrchains_reward_points, shared as teyrchains_shared,
|
||||
shared as teyrchains_shared,
|
||||
};
|
||||
use pezkuwichain_runtime_constants::system_teyrchain::{
|
||||
coretime::TIMESLICE_PERIOD, ASSET_HUB_ID, BROKER_ID,
|
||||
@@ -174,7 +174,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
|
||||
spec_name: alloc::borrow::Cow::Borrowed("pezkuwichain"),
|
||||
impl_name: alloc::borrow::Cow::Borrowed("parity-pezkuwichain"),
|
||||
authoring_version: 0,
|
||||
spec_version: 1_020_008,
|
||||
spec_version: 1_020_005,
|
||||
impl_version: 0,
|
||||
apis: RUNTIME_API_VERSIONS,
|
||||
transaction_version: 26,
|
||||
@@ -461,12 +461,9 @@ pub struct ExposureOfOrDefault;
|
||||
impl pezsp_runtime::traits::Convert<AccountId, Option<pezsp_staking::Exposure<AccountId, Balance>>>
|
||||
for ExposureOfOrDefault
|
||||
{
|
||||
fn convert(
|
||||
validator: AccountId,
|
||||
) -> Option<pezsp_staking::Exposure<AccountId, Balance>> {
|
||||
fn convert(validator: AccountId) -> Option<pezsp_staking::Exposure<AccountId, Balance>> {
|
||||
Some(
|
||||
<pezpallet_staking::DefaultExposureOf<Runtime>>::convert(validator)
|
||||
.unwrap_or_default(),
|
||||
<pezpallet_staking::DefaultExposureOf<Runtime>>::convert(validator).unwrap_or_default(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,11 +148,7 @@ fn governance_tracks_total_count() {
|
||||
fn governance_track_ids_are_unique() {
|
||||
let mut seen = HashSet::new();
|
||||
for track in <TracksInfo as TracksInfoTrait<Balance, BlockNumber>>::tracks() {
|
||||
assert!(
|
||||
seen.insert(track.id),
|
||||
"Duplicate track ID: {}",
|
||||
track.id
|
||||
);
|
||||
assert!(seen.insert(track.id), "Duplicate track ID: {}", track.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,24 +181,24 @@ fn governance_no_test_periods_remain() {
|
||||
fn governance_production_periods_match_spec() {
|
||||
// Build expected values: (track_id, prepare, decision, confirm, enact)
|
||||
let expected: Vec<(u16, &str, BlockNumber, BlockNumber, BlockNumber, BlockNumber)> = vec![
|
||||
(0, "root", 2 * HOURS, 28 * DAYS, 24 * HOURS, 24 * HOURS),
|
||||
(1, "whitelisted_caller", 30 * MINUTES, 28 * DAYS, 10 * MINUTES, 10 * MINUTES),
|
||||
(10, "staking_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(11, "treasurer", 2 * HOURS, 28 * DAYS, 3 * HOURS, 24 * HOURS),
|
||||
(12, "lease_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(13, "fellowship_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(14, "general_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(15, "auction_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(20, "referendum_canceller", 2 * HOURS, 7 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(21, "referendum_killer", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(30, "small_tipper", 1 * MINUTES, 7 * DAYS, 10 * MINUTES, 1 * MINUTES),
|
||||
(31, "big_tipper", 10 * MINUTES, 7 * DAYS, 1 * HOURS, 10 * MINUTES),
|
||||
(32, "small_spender", 4 * HOURS, 28 * DAYS, 12 * HOURS, 24 * HOURS),
|
||||
(33, "medium_spender", 4 * HOURS, 28 * DAYS, 24 * HOURS, 24 * HOURS),
|
||||
(34, "big_spender", 4 * HOURS, 28 * DAYS, 48 * HOURS, 24 * HOURS),
|
||||
(40, "welati_election", 2 * HOURS, 14 * DAYS, 12 * HOURS, 24 * HOURS),
|
||||
(41, "welati_admin", 2 * HOURS, 7 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(42, "citizenship_admin", 2 * HOURS, 14 * DAYS, 6 * HOURS, 24 * HOURS),
|
||||
(0, "root", 2 * HOURS, 28 * DAYS, 24 * HOURS, 24 * HOURS),
|
||||
(1, "whitelisted_caller", 30 * MINUTES, 28 * DAYS, 10 * MINUTES, 10 * MINUTES),
|
||||
(10, "staking_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(11, "treasurer", 2 * HOURS, 28 * DAYS, 3 * HOURS, 24 * HOURS),
|
||||
(12, "lease_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(13, "fellowship_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(14, "general_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(15, "auction_admin", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(20, "referendum_canceller", 2 * HOURS, 7 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(21, "referendum_killer", 2 * HOURS, 14 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(30, "small_tipper", 1 * MINUTES, 7 * DAYS, 10 * MINUTES, 1 * MINUTES),
|
||||
(31, "big_tipper", 10 * MINUTES, 7 * DAYS, 1 * HOURS, 10 * MINUTES),
|
||||
(32, "small_spender", 4 * HOURS, 28 * DAYS, 12 * HOURS, 24 * HOURS),
|
||||
(33, "medium_spender", 4 * HOURS, 28 * DAYS, 24 * HOURS, 24 * HOURS),
|
||||
(34, "big_spender", 4 * HOURS, 28 * DAYS, 48 * HOURS, 24 * HOURS),
|
||||
(40, "welati_election", 2 * HOURS, 14 * DAYS, 12 * HOURS, 24 * HOURS),
|
||||
(41, "welati_admin", 2 * HOURS, 7 * DAYS, 3 * HOURS, 10 * MINUTES),
|
||||
(42, "citizenship_admin", 2 * HOURS, 14 * DAYS, 6 * HOURS, 24 * HOURS),
|
||||
];
|
||||
|
||||
let tracks: HashMap<u16, _> = <TracksInfo as TracksInfoTrait<Balance, BlockNumber>>::tracks()
|
||||
@@ -303,7 +299,8 @@ fn governance_track_for_origin_mapping() {
|
||||
for (origin, expected_id) in origin_to_track {
|
||||
let pallet_origin: <RuntimeOrigin as pezframe_support::traits::OriginTrait>::PalletsOrigin =
|
||||
origin.clone().into();
|
||||
let result = <TracksInfo as TracksInfoTrait<Balance, BlockNumber>>::track_for(&pallet_origin);
|
||||
let result =
|
||||
<TracksInfo as TracksInfoTrait<Balance, BlockNumber>>::track_for(&pallet_origin);
|
||||
assert_eq!(
|
||||
result,
|
||||
Ok(expected_id),
|
||||
|
||||
@@ -146,7 +146,9 @@ impl<T: Config + pezpallet_session::historical::Config>
|
||||
pezpallet_session::historical::SessionManager<T::ValidatorId, T::FullIdentification>
|
||||
for Pezpallet<T>
|
||||
{
|
||||
fn new_session(new_index: SessionIndex) -> Option<Vec<(T::ValidatorId, T::FullIdentification)>> {
|
||||
fn new_session(
|
||||
new_index: SessionIndex,
|
||||
) -> Option<Vec<(T::ValidatorId, T::FullIdentification)>> {
|
||||
<Self as pezpallet_session::SessionManager<_>>::new_session(new_index).map(|r| {
|
||||
r.into_iter()
|
||||
.filter_map(|v| {
|
||||
|
||||
@@ -22,9 +22,7 @@ use super::{
|
||||
XcmPallet,
|
||||
};
|
||||
|
||||
use crate::governance::{
|
||||
CitizenshipAdmin, StakingAdmin, WelatiAdmin, WelatiElection,
|
||||
};
|
||||
use crate::governance::{CitizenshipAdmin, StakingAdmin, WelatiAdmin, WelatiElection};
|
||||
|
||||
use pezframe_support::{
|
||||
parameter_types,
|
||||
|
||||
+9
-34
@@ -20,10 +20,8 @@ use std::str::FromStr;
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("=== ASSET HUB RUNTIME UPGRADE ===\n");
|
||||
|
||||
let rc_url =
|
||||
std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let ah_url =
|
||||
std::env::var("AH_RPC").unwrap_or_else(|_| "ws://127.0.0.1:40944".to_string());
|
||||
let rc_url = std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let ah_url = std::env::var("AH_RPC").unwrap_or_else(|_| "ws://127.0.0.1:40944".to_string());
|
||||
let wasm_path = std::env::var("WASM_FILE").expect("WASM_FILE environment variable required");
|
||||
|
||||
let mnemonic_str =
|
||||
@@ -34,11 +32,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
// Load WASM
|
||||
let wasm_data = std::fs::read(&wasm_path)?;
|
||||
println!(
|
||||
"WASM: {} ({:.2} MB)",
|
||||
wasm_path,
|
||||
wasm_data.len() as f64 / 1_048_576.0
|
||||
);
|
||||
println!("WASM: {} ({:.2} MB)", wasm_path, wasm_data.len() as f64 / 1_048_576.0);
|
||||
|
||||
// Blake2-256 hash of WASM
|
||||
let code_hash = pezsp_crypto_hashing::blake2_256(&wasm_data);
|
||||
@@ -50,11 +44,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
// Connect to AH
|
||||
let ah_api = OnlineClient::<PezkuwiConfig>::from_url(&ah_url).await?;
|
||||
println!(
|
||||
"AH connected: {} (spec {})\n",
|
||||
ah_url,
|
||||
ah_api.runtime_version().spec_version
|
||||
);
|
||||
println!("AH connected: {} (spec {})\n", ah_url, ah_api.runtime_version().spec_version);
|
||||
|
||||
// ═══════════════════════════════════════════
|
||||
// STEP 1: Authorize upgrade via XCM from RC
|
||||
@@ -77,10 +67,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
"interior",
|
||||
Value::unnamed_variant(
|
||||
"X1",
|
||||
vec![Value::unnamed_variant(
|
||||
"Teyrchain",
|
||||
vec![Value::u128(1000)],
|
||||
)],
|
||||
vec![Value::unnamed_variant("Teyrchain", vec![Value::u128(1000)])],
|
||||
),
|
||||
),
|
||||
])],
|
||||
@@ -113,8 +100,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
])],
|
||||
);
|
||||
|
||||
let xcm_send =
|
||||
pezkuwi_subxt::dynamic::tx("XcmPallet", "send", vec![dest, message]);
|
||||
let xcm_send = pezkuwi_subxt::dynamic::tx("XcmPallet", "send", vec![dest, message]);
|
||||
let sudo_tx = pezkuwi_subxt::dynamic::tx(
|
||||
"Sudo",
|
||||
"sudo_unchecked_weight",
|
||||
@@ -127,10 +113,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
],
|
||||
);
|
||||
|
||||
let progress = rc_api
|
||||
.tx()
|
||||
.sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair)
|
||||
.await?;
|
||||
let progress = rc_api.tx().sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair).await?;
|
||||
let events = progress.wait_for_finalized_success().await?;
|
||||
|
||||
let mut sent = false;
|
||||
@@ -168,12 +151,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
.chain(pezsp_crypto_hashing::twox_128(b"AuthorizedUpgrade").iter())
|
||||
.copied()
|
||||
.collect::<Vec<u8>>();
|
||||
let result = ah_check
|
||||
.storage()
|
||||
.at_latest()
|
||||
.await?
|
||||
.fetch_raw(auth_key)
|
||||
.await?;
|
||||
let result = ah_check.storage().at_latest().await?.fetch_raw(auth_key).await?;
|
||||
if !result.is_empty() {
|
||||
println!(
|
||||
" AuthorizedUpgrade found on AH at block {} (attempt {})!",
|
||||
@@ -233,10 +211,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
"interior",
|
||||
Value::unnamed_variant(
|
||||
"X1",
|
||||
vec![Value::unnamed_variant(
|
||||
"Teyrchain",
|
||||
vec![Value::u128(1000)],
|
||||
)],
|
||||
vec![Value::unnamed_variant("Teyrchain", vec![Value::u128(1000)])],
|
||||
),
|
||||
),
|
||||
])],
|
||||
|
||||
+15
-31
@@ -19,8 +19,7 @@ use std::str::FromStr;
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("=== ASSIGN CORETIME ===\n");
|
||||
|
||||
let rc_url =
|
||||
std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let rc_url = std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let api = OnlineClient::<PezkuwiConfig>::from_url(&rc_url).await?;
|
||||
println!("Connected to RC: {}", rc_url);
|
||||
|
||||
@@ -38,18 +37,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
// Step 1: Set core count to 2
|
||||
// Coretime.request_core_count(count: u16) - call_index 1, pallet 74
|
||||
println!("Step 1: Setting core count to 2...");
|
||||
let set_cores = pezkuwi_subxt::dynamic::tx(
|
||||
"Coretime",
|
||||
"request_core_count",
|
||||
vec![Value::u128(2)],
|
||||
);
|
||||
let sudo_tx =
|
||||
pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![set_cores.into_value()]);
|
||||
let set_cores =
|
||||
pezkuwi_subxt::dynamic::tx("Coretime", "request_core_count", vec![Value::u128(2)]);
|
||||
let sudo_tx = pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![set_cores.into_value()]);
|
||||
|
||||
let progress = api
|
||||
.tx()
|
||||
.sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair)
|
||||
.await?;
|
||||
let progress = api.tx().sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair).await?;
|
||||
let events = progress.wait_for_finalized_success().await?;
|
||||
for event in events.iter() {
|
||||
let event = event?;
|
||||
@@ -76,19 +68,15 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
"Coretime",
|
||||
"assign_core",
|
||||
vec![
|
||||
Value::u128(0), // core index
|
||||
begin.clone(), // begin
|
||||
assignment_ah, // assignment
|
||||
Value::u128(0), // core index
|
||||
begin.clone(), // begin
|
||||
assignment_ah, // assignment
|
||||
Value::unnamed_variant("None", vec![]), // end_hint
|
||||
],
|
||||
);
|
||||
let sudo_ah =
|
||||
pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![assign_ah.into_value()]);
|
||||
let sudo_ah = pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![assign_ah.into_value()]);
|
||||
|
||||
let progress = api
|
||||
.tx()
|
||||
.sign_and_submit_then_watch_default(&sudo_ah, &sudo_keypair)
|
||||
.await?;
|
||||
let progress = api.tx().sign_and_submit_then_watch_default(&sudo_ah, &sudo_keypair).await?;
|
||||
let events = progress.wait_for_finalized_success().await?;
|
||||
for event in events.iter() {
|
||||
let event = event?;
|
||||
@@ -108,19 +96,15 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
"Coretime",
|
||||
"assign_core",
|
||||
vec![
|
||||
Value::u128(1), // core index
|
||||
begin, // begin
|
||||
assignment_people, // assignment
|
||||
Value::u128(1), // core index
|
||||
begin, // begin
|
||||
assignment_people, // assignment
|
||||
Value::unnamed_variant("None", vec![]), // end_hint
|
||||
],
|
||||
);
|
||||
let sudo_people =
|
||||
pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![assign_people.into_value()]);
|
||||
let sudo_people = pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![assign_people.into_value()]);
|
||||
|
||||
let progress = api
|
||||
.tx()
|
||||
.sign_and_submit_then_watch_default(&sudo_people, &sudo_keypair)
|
||||
.await?;
|
||||
let progress = api.tx().sign_and_submit_then_watch_default(&sudo_people, &sudo_keypair).await?;
|
||||
let events = progress.wait_for_finalized_success().await?;
|
||||
for event in events.iter() {
|
||||
let event = event?;
|
||||
|
||||
+5
-18
@@ -23,17 +23,12 @@ use std::str::FromStr;
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("=== RELAY CHAIN RUNTIME UPGRADE ===\n");
|
||||
|
||||
let rc_url =
|
||||
std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let rc_url = std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let wasm_path = std::env::var("WASM_FILE").expect("WASM_FILE environment variable required");
|
||||
|
||||
// Load WASM
|
||||
let wasm_data = std::fs::read(&wasm_path)?;
|
||||
println!(
|
||||
"WASM: {} ({:.2} MB)",
|
||||
wasm_path,
|
||||
wasm_data.len() as f64 / 1_048_576.0
|
||||
);
|
||||
println!("WASM: {} ({:.2} MB)", wasm_path, wasm_data.len() as f64 / 1_048_576.0);
|
||||
let code_hash = pezsp_crypto_hashing::blake2_256(&wasm_data);
|
||||
println!("Code hash: 0x{}", hex::encode(code_hash));
|
||||
|
||||
@@ -68,14 +63,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
],
|
||||
);
|
||||
|
||||
let tx_progress = api
|
||||
.tx()
|
||||
.sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair)
|
||||
.await?;
|
||||
println!(
|
||||
" TX: 0x{}",
|
||||
hex::encode(tx_progress.extrinsic_hash().as_ref())
|
||||
);
|
||||
let tx_progress = api.tx().sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair).await?;
|
||||
println!(" TX: 0x{}", hex::encode(tx_progress.extrinsic_hash().as_ref()));
|
||||
|
||||
let mut progress = tx_progress;
|
||||
let mut upgrade_ok = false;
|
||||
@@ -87,9 +76,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
Ok(events) => {
|
||||
for ev in events.iter().flatten() {
|
||||
println!(" {}::{}", ev.pallet_name(), ev.variant_name());
|
||||
if ev.pallet_name() == "System"
|
||||
&& ev.variant_name() == "CodeUpdated"
|
||||
{
|
||||
if ev.pallet_name() == "System" && ev.variant_name() == "CodeUpdated" {
|
||||
upgrade_ok = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,7 @@ use std::str::FromStr;
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("=== SET StakingAhClient MODE → Active ===\n");
|
||||
|
||||
let rc_url =
|
||||
std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let rc_url = std::env::var("RC_RPC").unwrap_or_else(|_| "ws://127.0.0.1:9944".to_string());
|
||||
let api = OnlineClient::<PezkuwiConfig>::from_url(&rc_url).await?;
|
||||
println!("RC connected: spec {}", api.runtime_version().spec_version);
|
||||
|
||||
@@ -53,14 +52,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
"set_mode",
|
||||
vec![Value::unnamed_variant("Active", vec![])],
|
||||
);
|
||||
let sudo_tx =
|
||||
pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![set_mode.into_value()]);
|
||||
let sudo_tx = pezkuwi_subxt::dynamic::tx("Sudo", "sudo", vec![set_mode.into_value()]);
|
||||
|
||||
println!("Submitting sudo(StakingAhClient.set_mode(Active))...");
|
||||
let progress = api
|
||||
.tx()
|
||||
.sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair)
|
||||
.await?;
|
||||
let progress = api.tx().sign_and_submit_then_watch_default(&sudo_tx, &sudo_keypair).await?;
|
||||
let events = progress.wait_for_finalized_success().await?;
|
||||
|
||||
for event in events.iter() {
|
||||
|
||||
@@ -69,7 +69,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
}
|
||||
|
||||
// Decode Vec length
|
||||
let (count, mut offset) = decode_compact(&raw_data);
|
||||
let (count, offset) = decode_compact(&raw_data);
|
||||
println!("QueuedKeys entries: {}", count);
|
||||
|
||||
// Each entry: AccountId32 (32 bytes) + SessionKeys
|
||||
|
||||
Reference in New Issue
Block a user