Browse Source

added checks for account coherence

ignazio 3 years ago
parent
commit
7470d7270e
1 changed files with 17 additions and 7 deletions
  1. 17 7
      runtime-modules/storage/src/lib.rs

+ 17 - 7
runtime-modules/storage/src/lib.rs

@@ -2815,6 +2815,19 @@ impl<T: Trait> Module<T> {
         }
     }
 
+    fn ensure_upload_and_deletion_prize_account_are_coherent(
+        deletion_prize: &Option<DynamicBagDeletionPrize<T>>,
+        params: &UploadParameters<T>,
+    ) -> DispatchResult {
+        ensure!(deletion_prize.is_some(), Error::<T>::AccountsNotCoherent,);
+        if let Some(deletion_prize) = deletion_prize {
+            ensure!(
+                params.deletion_prize_source_account_id == deletion_prize.account_id,
+                Error::<T>::AccountsNotCoherent,
+            );
+        }
+        Ok(())
+    }
     // Validates dynamic bag creation params and conditions.
     fn validate_create_dynamic_bag_params(
         dynamic_bag_id: &DynamicBagId<T>,
@@ -2832,13 +2845,10 @@ impl<T: Trait> Module<T> {
             .as_ref()
             .map(|params| {
                 // ensure coherent account ids for prize
-                if let Some(deletion_prize) = deletion_prize {
-                    ensure!(
-                        params.deletion_prize_source_account_id == deletion_prize.account_id,
-                        Error::<T>::AccountsNotCoherent,
-                    );
-                }
-
+                Self::ensure_upload_and_deletion_prize_account_are_coherent(
+                    &deletion_prize,
+                    params,
+                )?;
                 Self::validate_bag_change(params)
             })
             .transpose()?;