diff --git a/oracle/src/lib.rs b/oracle/src/lib.rs index 5ce2aaa94e169faaafaa058b05291f0dfb8566e5..4298306e81a5da516110b3013031a79050d7bb0c 100644 --- a/oracle/src/lib.rs +++ b/oracle/src/lib.rs @@ -21,7 +21,7 @@ use sp_runtime::{ }, DispatchResult, }; -use sp_std::{prelude::*, vec}; +use sp_std::{convert::TryInto, prelude::*, vec}; // FIXME: `pallet/frame-` prefix should be used for all pallet modules, but currently `frame_system` // would cause compiling error in `decl_module!` and `construct_runtime!` // #3295 https://github.com/paritytech/substrate/issues/3295 @@ -289,8 +289,12 @@ impl<T: Trait> frame_support::unsigned::ValidateUnsigned for Module<T> { Nonces::<T>::insert(who, nonce + 1); + let now = <frame_system::Module<T>>::block_number(); + // make priority less likely to overflow. + let add_priority = TryInto::<TransactionPriority>::try_into(now % 1000.into()).unwrap_or(0); + ValidTransaction::with_tag_prefix("orml-oracle") - .priority(T::UnsignedPriority::get()) + .priority(T::UnsignedPriority::get().saturating_add(add_priority)) .and_provides((who, nonce)) .longevity(256) .propagate(true)