Skip to content

Commit 982fc78

Browse files
hongxiangzytqaljnshakawwqjimmychu0807thirteenggh
authored
readme update (#139)
* fix: renewal space unfreeze * feat: add some root extrisic * feat: add some root function for test * style: 0.5.4 add new field * style: for distinguish chain * feat: some root function for test * feat: for test * test: migration test * fix: fix random bug * fix: index from 1 start * fix: random seed * fix: random seed * config: string limit 50000 -> 60000 * feat: batch delete files * style: clear warning * merge: frame-upgrade * fix: fix merge bug * refactor: add storage-handler pallet * fix: fix recursing * refactor: file-bank pallet adapt * refactor: adapt storage handle * refactor: rename file-map -> tee-worker * refactor: rename file-map -> tee-worker * fix: bug * refactor: segment-book -> audit * feat: upload_deal * feat: upload_deal * feat: upload_deal * feat: upload_deal * feat: upload deal * feat: tranfser_report * feat: time task deal_reassign_miner * feat: unlock space for miner * feat: calculate time task * feat: delete file * style: add Event * style: fix warning * refactor: idle space and service space change when segment add or delete * feat: some func for test * style: framework optimization * fix: update FragmentCount const * fix: fragment repeat causing BoundedVecError * refactor: tuple to struct for go-substrate-sdk * fix: update lock space, miner and user * feat: add two new package * feat: tee register * feat: add report verify * feat: generate challeng(40%) * tests: ed25519 verify sig * feat: generate challenge * feat: submit prove * feat: challenge clear * feat: miner reward * feat: clear and prove punish * feat: three punish * feat: lock miner * feat: miner exit * feat: filter for lock miner * feat: update increase_collateral for debt * feat: force miner exit * feat: use force exit miner * feat: clear expire file * feat: delete file * fix: transfer file delete file * feat: test rsa verify * style: fix warning * style: peer id types update * feat: unlock offchain * feat: add punish tee worker * fix: challenge select miner when miner number < 10 * fix: fix challengesnapshot bug * fix: miner exit bug * style: add withdraw event * style: update type * test: add some test function * test: add update_peer_id and exit * test: purchase in mib units * feat: random 0.046 chunks and random random number * feat: add new filed * fix: fix bug in reassigning validation tasks * style: delete methods that are no longer in use * feat: add methods for deleting fillers * style: some related modifications made for testing purposes * fix: miner exit prep error * feat: restoral file * fix: fix compile error * fix: fix random select miner * style: add restoral event * refactor: optimize space expiration functionality * test: some for test function * feat: add stake_score in validator election (#125) * feat: add stake_score in election * fix: merge conflics * fix: paritytech/substrate#13804 * test: test for bls * style: merge * test: test bls * feat: restoral order storage * feat: restoral order storage key * test: update data for test * fix: fix space expire bug * fix: fix upload file user hold slice list * fix: fix random select miner * test: for test add some function * Make verify-bls-signatures no_std compatible (#137) * - Fixed a warning and compile - Adding verify-bls-signatures in utils - Replace Rand lib with getrandom to make it no_std compatible * uncomment BLS and using dummy rand * Using getrandom custom * fix: cancel schedule mission * fix: file upload update UserBucketList * style: streamline code * fix: space expired user bucket list kill * Update README.md --------- Co-authored-by: ytqaljn <2716693942@qq.com> Co-authored-by: Shaka Lavigne <shakawwq@gmail.com> Co-authored-by: Jimmy Chu <jimmychu0807@gmail.com> Co-authored-by: Dean Clark <32699199+thirteenggh@users.noreply.github.com>
1 parent 9daabf0 commit 982fc78

File tree

22 files changed

+1328
-358
lines changed

22 files changed

+1328
-358
lines changed

Cargo.lock

Lines changed: 286 additions & 225 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
### Install Guide
1616

17-
Follow [Setup](docs/setup.md) to guide you install the CESS development.
17+
Follow [Setup](docs/setup.md) to guide you to install the CESS development.
1818

1919
### Build Node
2020

c-pallets/audit/src/lib.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -906,8 +906,9 @@ pub mod pallet {
906906
if miner_count == 0 {
907907
Err(OffchainErr::GenerateInfoError)?;
908908
}
909-
910-
let need_miner_count = miner_count / 10 + 1;
909+
//For TEST
910+
let need_miner_count = miner_count;
911+
// let need_miner_count = miner_count / 10 + 1;
911912

912913
let mut miner_list: BoundedVec<MinerSnapShot<AccountOf<T>>, T::ChallengeMinerMax> = Default::default();
913914

@@ -916,8 +917,10 @@ pub mod pallet {
916917
let mut total_idle_space: u128 = u128::MIN;
917918
let mut total_service_space: u128 = u128::MIN;
918919
// TODO: need to set a maximum number of cycles
919-
while (miner_list.len() as u32 != need_miner_count) || (valid_index_list.len() as u32 != miner_count) {
920-
let index_list = Self::random_select_miner(need_miner_count, miner_count, &valid_index_list);
920+
let mut seed: u32 = 20230601;
921+
while (miner_list.len() as u32 != need_miner_count) && (valid_index_list.len() as u32 != miner_count) {
922+
seed = seed.saturating_add(1);
923+
let index_list = Self::random_select_miner(need_miner_count, miner_count, &valid_index_list, seed);
921924

922925
let allminer = T::MinerControl::get_all_miner().map_err(|_| OffchainErr::GenerateInfoError)?;
923926

@@ -944,7 +947,7 @@ pub mod pallet {
944947
};
945948
let result = miner_list.try_push(miner_snapshot);
946949
if let Err(_e) = result {
947-
break;
950+
return Err(OffchainErr::GenerateInfoError)?;
948951
};
949952
}
950953
}
@@ -985,10 +988,10 @@ pub mod pallet {
985988
}
986989

987990
// Ensure that the length is not 0
988-
fn random_select_miner(need: u32, length: u32, valid_index_list: &Vec<u32>) -> Vec<u32> {
991+
fn random_select_miner(need: u32, length: u32, valid_index_list: &Vec<u32>, seed: u32) -> Vec<u32> {
989992
let mut miner_index_list: Vec<u32> = Default::default();
990-
let mut seed: u32 = 20230417;
991-
while (miner_index_list.len() as u32) < need {
993+
let mut seed: u32 = seed.saturating_mul(1000);
994+
while (miner_index_list.len() as u32) < need && ((valid_index_list.len() + miner_index_list.len()) as u32 != length) {
992995
seed += 1;
993996
let index = Self::random_number(seed);
994997
let index: u32 = (index % length as u64) as u32;

c-pallets/cacher/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ pub mod pallet {
7979

8080
#[pallet::call]
8181
impl<T: Config> Pallet<T> {
82-
8382
/// Register for cacher.
8483
///
8584
/// Parameters:

c-pallets/cacher/src/tests.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,15 @@ fn update_works() {
4141
byte_price: 200u32.into(),
4242
};
4343
// Wrong accout update fails.
44+
<<<<<<< HEAD
45+
<<<<<<< HEAD
4446
assert_noop!(Cacher::update(RuntimeOrigin::signed(2), new_info.clone()), Error::<Test>::UnRegister);
47+
=======
48+
assert_noop!(Cacher::update(Origin::signed(2), new_info.clone()), Error::<Test>::UnRegistered);
49+
>>>>>>> main
50+
=======
51+
assert_noop!(Cacher::update(RuntimeOrigin::signed(2), new_info.clone()), Error::<Test>::UnRegister);
52+
>>>>>>> main
4553
// Update works.
4654
assert_ok!(Cacher::update(RuntimeOrigin::signed(1), new_info.clone()));
4755

@@ -61,7 +69,15 @@ fn logout_works() {
6169
assert_ok!(Cacher::register(RuntimeOrigin::signed(1), info.clone()));
6270

6371
// Wrong accout logout fails.
72+
<<<<<<< HEAD
73+
<<<<<<< HEAD
74+
assert_noop!(Cacher::logout(RuntimeOrigin::signed(2)), Error::<Test>::UnRegister);
75+
=======
76+
assert_noop!(Cacher::logout(Origin::signed(2)), Error::<Test>::UnRegistered);
77+
>>>>>>> main
78+
=======
6479
assert_noop!(Cacher::logout(RuntimeOrigin::signed(2)), Error::<Test>::UnRegister);
80+
>>>>>>> main
6581
// Logout works.
6682
assert_ok!(Cacher::logout(RuntimeOrigin::signed(1)));
6783
});
@@ -89,7 +105,15 @@ fn pay_works() {
89105
let bills: BoundedVec<_, <Test as Config>::BillsLimit> = bill_vec.try_into().unwrap();
90106

91107
// Pay fails.
108+
<<<<<<< HEAD
109+
<<<<<<< HEAD
110+
assert_noop!(Cacher::pay(RuntimeOrigin::signed(1), bills.clone()), Error::<Test>::InsufficientBalance);
111+
=======
112+
assert_noop!(Cacher::pay(Origin::signed(1), bills.clone()), BalancesError::<Test>::InsufficientBalance);
113+
>>>>>>> main
114+
=======
92115
assert_noop!(Cacher::pay(RuntimeOrigin::signed(1), bills.clone()), Error::<Test>::InsufficientBalance);
116+
>>>>>>> main
93117

94118
<Test as Config>::Currency::make_free_balance_be(&1, BalanceOf::<Test>::max_value());
95119
let balance_befor_1 = <Test as Config>::Currency::free_balance(&1);

c-pallets/file-bank/src/functions.rs

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,12 @@ impl<T: Config> Pallet<T> {
101101
bucket.object_list.try_push(hash).map_err(|_e| Error::<T>::BoundedVecError)?;
102102
}
103103

104-
<Bucket<T>>::insert(user, bucket_name, bucket);
104+
<Bucket<T>>::insert(user, bucket_name.clone(), bucket);
105+
106+
<UserBucketList<T>>::try_mutate(&user, |bucket_list| -> DispatchResult{
107+
bucket_list.try_push(bucket_name.clone()).map_err(|_e| Error::<T>::LengthExceedsLimit)?;
108+
Ok(())
109+
})?;
105110

106111
Ok(())
107112
}
@@ -182,50 +187,49 @@ impl<T: Config> Pallet<T> {
182187
pub(super) fn random_assign_miner(
183188
needed_list: &BoundedVec<SegmentList<T>, T::SegmentCount>
184189
) -> Result<BoundedVec<MinerTaskList<T>, T::StringLimit>, DispatchError> {
185-
let mut index_list: Vec<u32> = Default::default();
186190
let mut miner_task_list: BoundedVec<MinerTaskList<T>, T::StringLimit> = Default::default();
187191
let mut miner_idle_space_list: Vec<u128> = Default::default();
188192
// The optimal number of miners required for storage.
189193
// segment_size * 1.5 / fragment_size.
190194
let miner_count: u32 = (SEGMENT_SIZE * 15 / 10 / FRAGMENT_SIZE) as u32;
191195
let mut seed = <frame_system::Pallet<T>>::block_number().saturated_into();
192196

193-
let all_miner = T::MinerControl::get_all_miner()?;
194-
let total = all_miner.len() as u32;
197+
let mut all_miner = T::MinerControl::get_all_miner()?;
198+
let mut total = all_miner.len() as u32;
195199

196200
// ensure!(total > miner_count, Error::<T>::NodesInsufficient);
197201
let max_count = miner_count * 5;
198202
let mut cur_count = 0;
199203
let mut total_idle_space = 0;
204+
200205
// start random choose miner
201206
loop {
202207
// Get a random subscript.
208+
if total == 0 {
209+
break;
210+
}
211+
203212
let index = Self::generate_random_number(seed)? as u32 % total;
204213
// seed + 1
205214
seed = seed.checked_add(1).ok_or(Error::<T>::Overflow)?;
206-
// Number of cycles plus 1
207-
cur_count += 1;
215+
208216
// When the number of cycles reaches the upper limit, the cycle ends.
209217
if cur_count == max_count {
210218
break;
211219
}
212-
// End the cycle after all storage nodes have been traversed.
213-
if total == index_list.len() as u32 {
214-
break;
215-
}
216-
// Continue to the next cycle when the current random result already exists.
217-
if index_list.contains(&index) {
218-
continue;
219-
}
220-
220+
221+
// Number of cycles plus 1
222+
cur_count += 1;
223+
221224
// Judge whether the idle space of the miners is sufficient.
222225
let miner = all_miner[index as usize].clone();
226+
all_miner.remove(index as usize);
227+
total = total - 1;
223228
let result = T::MinerControl::is_positive(&miner)?;
224229
if !result {
225230
continue;
226231
}
227-
// Record current cycle results.
228-
index_list.push(index);
232+
229233
let cur_space: u128 = T::MinerControl::get_miner_idle_space(&miner)?;
230234
// If sufficient, the miner is selected.
231235
if cur_space > needed_list.len() as u128 * FRAGMENT_SIZE {
@@ -393,7 +397,11 @@ impl<T: Config> Pallet<T> {
393397
}
394398

395399
for (miner, count) in miner_list.iter() {
396-
T::MinerControl::sub_miner_service_space(miner, FRAGMENT_SIZE * *count as u128)?;
400+
if <RestoralTarget<T>>::contains_key(miner) {
401+
Self::update_restoral_target(miner, FRAGMENT_SIZE * *count as u128)?;
402+
} else {
403+
T::MinerControl::sub_miner_service_space(miner, FRAGMENT_SIZE * *count as u128)?;
404+
}
397405
weight = weight.saturating_add(T::DbWeight::get().reads_writes(1, 1));
398406
}
399407

@@ -541,7 +549,8 @@ impl<T: Config> Pallet<T> {
541549
let now = <frame_system::Pallet<T>>::block_number();
542550
let block = now.checked_add(&block.saturated_into()).ok_or(Error::<T>::Overflow)?;
543551

544-
let restoral_info = RestoralInfo::<BlockNumberOf<T>>{
552+
let restoral_info = RestoralTargetInfo::<AccountOf<T>, BlockNumberOf<T>>{
553+
miner: miner.clone(),
545554
service_space,
546555
restored_space: u128::MIN,
547556
cooling_block: block,
@@ -551,4 +560,15 @@ impl<T: Config> Pallet<T> {
551560

552561
Ok(())
553562
}
563+
564+
pub(super) fn update_restoral_target(miner: &AccountOf<T>, service_space: u128) -> DispatchResult {
565+
<RestoralTarget<T>>::try_mutate(miner, |info_opt| -> DispatchResult {
566+
let info = info_opt.as_mut().ok_or(Error::<T>::NonExistent)?;
567+
568+
info.restored_space = info.restored_space
569+
.checked_add(service_space).ok_or(Error::<T>::Overflow)?;
570+
571+
Ok(())
572+
})
573+
}
554574
}

0 commit comments

Comments
 (0)