chore: bump spec versions for mainnet upgrade (RC 1_020_005, AH 1_020_005, People 1_020_008)
This commit is contained in:
+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