diff --git a/Cargo.lock b/Cargo.lock index d07e38b7..1d138ccc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2047,7 +2047,7 @@ dependencies = [ [[package]] name = "cess-node-runtime" -version = "0.10.1" +version = "0.10.2" dependencies = [ "ces-pallet-mq", "ces-pallet-mq-runtime-api", @@ -11197,7 +11197,7 @@ dependencies = [ [[package]] name = "pallet-storage-handler" -version = "0.7.0" +version = "0.7.1" dependencies = [ "cp-cess-common", "frame-benchmarking", diff --git a/pallets/file-bank/src/impls/receptionist.rs b/pallets/file-bank/src/impls/receptionist.rs index 7dcd7846..995cd865 100644 --- a/pallets/file-bank/src/impls/receptionist.rs +++ b/pallets/file-bank/src/impls/receptionist.rs @@ -6,10 +6,8 @@ impl Receptionist { pub fn fly_upload_file(file_hash: Hash, user_brief: UserBrief) -> DispatchResult { >::try_mutate(&file_hash, |file_opt| -> DispatchResult { let file = file_opt.as_mut().ok_or(Error::::FileNonExistent)?; - let needed_space = SEGMENT_SIZE - .checked_mul(15).ok_or(Error::::Overflow)? - .checked_div(10).ok_or(Error::::Overflow)? - .checked_mul(file.segment_list.len() as u128).ok_or(Error::::Overflow)?; + let segment_len = file.segment_list.len(); + let needed_space = Pallet::::cal_file_size(segment_len as u128); ensure!(T::StorageHandle::get_user_avail_space(&user_brief.user, &user_brief.territory_name)? > needed_space, Error::::InsufficientAvailableSpace); T::StorageHandle::add_territory_used_space(&user_brief.user, &user_brief.territory_name, needed_space)?; diff --git a/pallets/file-bank/src/lib.rs b/pallets/file-bank/src/lib.rs index bbb8b729..9e24a17d 100755 --- a/pallets/file-bank/src/lib.rs +++ b/pallets/file-bank/src/lib.rs @@ -340,6 +340,8 @@ pub mod pallet { } } + >::insert(&acc, file_info_list); + ClearUserList::::mutate(|target_list| { target_list.retain(|temp_acc| temp_acc.0 != *acc); }); diff --git a/pallets/storage-handler/Cargo.toml b/pallets/storage-handler/Cargo.toml index 39f01802..9f855924 100644 --- a/pallets/storage-handler/Cargo.toml +++ b/pallets/storage-handler/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "pallet-storage-handler" authors = ["CESS LAB"] -version = "0.7.0" +version = "0.7.1" edition = "2021" license = "Apache-2.0" repository = "https://github.com/CESSProject/cess" diff --git a/pallets/storage-handler/src/lib.rs b/pallets/storage-handler/src/lib.rs index 1391bd51..2e8c4380 100644 --- a/pallets/storage-handler/src/lib.rs +++ b/pallets/storage-handler/src/lib.rs @@ -541,6 +541,56 @@ pub mod pallet { Ok(()) } + /// temporary solution + #[pallet::call_index(120)] + #[transactional] + #[pallet::weight(::WeightInfo::reactivate_territory())] + pub fn other_reactivate_territory( + origin: OriginFor, + target_acc: AccountOf, + territory_name: TerrName, + days: u32, + ) -> DispatchResult { + let signer = ensure_signed(origin)?; + let sender = target_acc; + + let territory = >::try_get(&sender, &territory_name) + .map_err(|_| Error::::NotHaveTerritory)?; + + ensure!(territory.state == TerritoryState::Expired, Error::::NotExpire); + + let days_unit_price = >::try_get() + .map_err(|_e| Error::::BugInvalid)? + .checked_div(&30u32.saturated_into()) + .ok_or(Error::::Overflow)?; + + let gib_count = territory.total_space.checked_div(G_BYTE).ok_or(Error::::Overflow)?; + + let price = days_unit_price + .checked_mul(&days.saturated_into()) + .ok_or(Error::::Overflow)? + .checked_mul(&gib_count.saturated_into()) + .ok_or(Error::::Overflow)?; + + ensure!( + ::Currency::can_slash(&signer, price.clone()), + Error::::InsufficientBalance + ); + + T::CessTreasuryHandle::send_to_sid(signer.clone(), price.clone())?; + + Self::add_purchased_space(territory.total_space)?; + Self::initial_territory(sender.clone(), territory_name.clone(), days)?; + + Self::deposit_event(Event::::ReactivateTerritory { + name: territory_name, + days: days, + spend: price, + }); + + Ok(()) + } + #[pallet::call_index(102)] #[transactional] #[pallet::weight(::WeightInfo::territory_consignment())] @@ -834,7 +884,6 @@ pub mod pallet { Ok(()) } - #[pallet::call_index(6)] #[transactional] #[pallet::weight(::WeightInfo::create_order())] @@ -848,7 +897,7 @@ pub mod pallet { // minute expired: u32, ) -> DispatchResult { - let _ = ensure_signed(origin)?; + let sender = ensure_signed(origin)?; let expired: BlockNumberFor = (expired .checked_mul(6).ok_or(Error::::Overflow)?).saturated_into(); @@ -887,7 +936,7 @@ pub mod pallet { }; let (seed, _) = - T::MyRandomness::random(&(T::RewardPalletId::get(), now).encode()); + T::MyRandomness::random(&(T::RewardPalletId::get(), now, sender).encode()); let seed = match seed { Some(v) => v, None => Default::default(), @@ -1214,7 +1263,9 @@ impl Pallet { let _ = >::try_mutate(&acc, &territory_name, |t_opt| -> DispatchResult { let t = t_opt.as_mut().ok_or(Error::::Unexpected)?; Self::sub_purchased_space(t.total_space)?; - t.state = TerritoryState::Expired; + if t.state == TerritoryState::Frozen { + t.state = TerritoryState::Expired; + } Ok(()) }); weight = weight.saturating_add(T::DbWeight::get().reads_writes(1, 1)); diff --git a/standalone/chain/runtime/Cargo.toml b/standalone/chain/runtime/Cargo.toml index 62e79bc4..19dd77b7 100644 --- a/standalone/chain/runtime/Cargo.toml +++ b/standalone/chain/runtime/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" license = "Unlicense" name = "cess-node-runtime" repository = "https://github.com/CESSProject/cess" -version = "0.10.1" +version = "0.10.2" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] diff --git a/standalone/chain/runtime/src/lib.rs b/standalone/chain/runtime/src/lib.rs index 549a04b6..7deab906 100644 --- a/standalone/chain/runtime/src/lib.rs +++ b/standalone/chain/runtime/src/lib.rs @@ -155,7 +155,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 130, + spec_version: 131, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 1, diff --git a/wasms/spec_100.wasm b/wasms/spec_100.wasm new file mode 100644 index 00000000..89fa0394 Binary files /dev/null and b/wasms/spec_100.wasm differ