From 20022596ac29b29b83f610b76b6f1356fa09708b Mon Sep 17 00:00:00 2001 From: Elden Young <59600396+ytqaljn@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:23:30 +0800 Subject: [PATCH] feat: add some auxiliary functions to facilitate debugging (#314) --- pallets/audit/src/lib.rs | 100 ++++++++++++++++++++++++++++ pallets/tee-worker/src/functions.rs | 6 ++ pallets/tee-worker/src/lib.rs | 12 ++++ standalone/chain/runtime/src/lib.rs | 2 +- 4 files changed, 119 insertions(+), 1 deletion(-) diff --git a/pallets/audit/src/lib.rs b/pallets/audit/src/lib.rs index cbadf6ce..0722504e 100644 --- a/pallets/audit/src/lib.rs +++ b/pallets/audit/src/lib.rs @@ -759,6 +759,106 @@ pub mod pallet { VerifySlip::::remove(&old, &miner); VerifySlip::::insert(&new, &miner, true); + Ok(()) + } + // FOR TEST + #[pallet::call_index(11)] + #[transactional] + #[pallet::weight(Weight::zero())] + pub fn point_miner_challenge( + origin: OriginFor, + miner: AccountOf, + ) -> DispatchResult { + let _ = ensure_root(origin)?; + + let miner = &miner; + let now = >::block_number(); + if >::contains_key(miner) { + return Ok(()) + } + + let miner_snapshot = match T::MinerControl::get_miner_snapshot(miner) { + Ok(miner_snapshot) => miner_snapshot, + Err(_) => return Ok(()), + }; + + let (idle_space, service_space, service_bloom_filter, space_proof_info, tee_signature) = + miner_snapshot; + + if idle_space + service_space == 0 { + return Ok(()) + } + + let service_param = match Self::generate_miner_qelement(now.saturated_into()) { + Ok(service_param) => service_param, + Err(e) => { + log::info!("audit: {:?}", e); + return Ok(()) + }, + }; + let space_param = match Self::generate_miner_space_param(now.saturated_into()) { + Ok(space_param) => space_param, + Err(e) => { + log::info!("audit: {:?}", e); + return Ok(()) + }, + }; + + let idle_life: u32 = + (idle_space.saturating_div(IDLE_PROVE_RATE).saturating_add(50)) as u32; + let idle_slip = now.saturating_add(idle_life.saturated_into()); + + let service_life: u32 = + (service_space.saturating_div(SERVICE_PROVE_RATE).saturating_add(50)) as u32; + let service_slip = now.saturating_add(service_life.saturated_into()); + + let max_slip = { + if idle_slip > service_slip { + idle_slip + } else { + service_slip + } + }; + + let one_hour = T::OneHours::get(); + let tee_length = T::TeeWorkerHandler::get_pubkey_list().len(); + if tee_length == 0 { + return Ok(()); + } + let verify_life: u32 = (idle_space + .saturating_add(service_space) + .saturating_div(IDLE_VERIFY_RATE) + .saturating_div(tee_length as u128)) as u32; + let verify_slip = + max_slip.saturating_add(verify_life.saturated_into()).saturating_add(one_hour); + + let challenge_info = ChallengeInfo:: { + miner_snapshot: MinerSnapShot:: { + idle_space, + service_space, + service_bloom_filter, + space_proof_info, + tee_signature, + }, + challenge_element: ChallengeElement:: { + start: now, + idle_slip, + service_slip, + verify_slip, + space_param, + service_param, + }, + prove_info: ProveInfo:: { + assign: u8::MIN, + idle_prove: None, + service_prove: None, + }, + }; + + >::insert(&miner, challenge_info); + >::insert(&max_slip, &miner, true); + >::insert(&verify_slip, &miner, true); + Ok(()) } } diff --git a/pallets/tee-worker/src/functions.rs b/pallets/tee-worker/src/functions.rs index f6cb07e0..8428f747 100644 --- a/pallets/tee-worker/src/functions.rs +++ b/pallets/tee-worker/src/functions.rs @@ -45,6 +45,12 @@ impl Pallet { weight = weight.saturating_add(T::DbWeight::get().reads_writes(1, 1)); Keyfairies::::put(keyfairys); + ValidationTypeList::::mutate(|puk_list| -> DispatchResult { + puk_list.retain(|g| *g != pbk); + Ok(()) + })?; + weight = weight.saturating_add(T::DbWeight::get().reads_writes(1, 1)); + Ok(weight) } } \ No newline at end of file diff --git a/pallets/tee-worker/src/lib.rs b/pallets/tee-worker/src/lib.rs index 71ccbf6d..6f58ec56 100644 --- a/pallets/tee-worker/src/lib.rs +++ b/pallets/tee-worker/src/lib.rs @@ -793,6 +793,18 @@ pub mod pallet { Ok(()) } + + #[pallet::call_index(115)] + #[pallet::weight({0})] + pub fn patch_clear_invalid_tee(origin: OriginFor) -> DispatchResult { + T::GovernanceOrigin::ensure_origin(origin)?; + ValidationTypeList::::mutate(|puk_list| -> DispatchResult { + puk_list.retain(|g| Endpoints::::contains_key(g)); + Ok(()) + })?; + + Ok(()) + } } impl ces_pallet_mq::MasterPubkeySupplier for Pallet { diff --git a/standalone/chain/runtime/src/lib.rs b/standalone/chain/runtime/src/lib.rs index 7a7a2a8c..cb8e37ce 100644 --- a/standalone/chain/runtime/src/lib.rs +++ b/standalone/chain/runtime/src/lib.rs @@ -176,7 +176,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // `spec_version`, and `authoring_version` are the same between Wasm and native. // This value is set to 100 to notify Polkadot-JS App (https://polkadot.js.org/apps) to use // the compatible custom types. - spec_version: 105, + spec_version: 106, impl_version: 1, apis: RUNTIME_API_VERSIONS, transaction_version: 1,