git.delta.rocks / unique-network / refs/commits / 98febe7588f8

difftreelog

fix Change hashier for `Sponsoring` storage

Trubnikov Sergey2022-08-24parent: #45c16b3.patch.diff
in: master

2 files changed

modifiedpallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth
295 for HelpersContractSponsoring<T>295 for HelpersContractSponsoring<T>
296{296{
297 fn get_sponsor(who: &T::CrossAccountId, call: &(H160, Vec<u8>)) -> Option<T::CrossAccountId> {297 fn get_sponsor(who: &T::CrossAccountId, call: &(H160, Vec<u8>)) -> Option<T::CrossAccountId> {
298 let (contract, _) = call;298 let (contract_address, _) = call;
299 let mode = <Pallet<T>>::sponsoring_mode(*contract);299 let mode = <Pallet<T>>::sponsoring_mode(*contract_address);
300 if mode == SponsoringModeT::Disabled {300 if mode == SponsoringModeT::Disabled {
301 return None;301 return None;
302 }302 }
303303
304 let sponsor = match <Pallet<T>>::get_sponsor(*contract) {304 let sponsor = match <Pallet<T>>::get_sponsor(*contract_address) {
305 Some(sponsor) => sponsor,305 Some(sponsor) => sponsor,
306 None => return None,306 None => return None,
307 };307 };
308308
309 if mode == SponsoringModeT::Allowlisted && !<Pallet<T>>::allowed(*contract, *who.as_eth()) {309 if mode == SponsoringModeT::Allowlisted && !<Pallet<T>>::allowed(*contract_address, *who.as_eth()) {
310 return None;310 return None;
311 }311 }
312 let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;312 let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
313313
314 if let Some(last_tx_block) = <SponsorBasket<T>>::get(contract, who.as_eth()) {314 if let Some(last_tx_block) = <SponsorBasket<T>>::get(contract_address, who.as_eth()) {
315 let limit = <SponsoringRateLimit<T>>::get(contract);315 let limit = <SponsoringRateLimit<T>>::get(contract_address);
316316
317 let timeout = last_tx_block + limit;317 let timeout = last_tx_block + limit;
318 if block_number < timeout {318 if block_number < timeout {
319 return None;319 return None;
320 }320 }
321 }321 }
322322
323 <SponsorBasket<T>>::insert(contract, who.as_eth(), block_number);323 <SponsorBasket<T>>::insert(contract_address, who.as_eth(), block_number);
324324
325 Some(sponsor)325 Some(sponsor)
326 }326 }
modifiedpallets/evm-contract-helpers/src/lib.rsdiffbeforeafterboth
29 use pallet_evm_coder_substrate::DispatchResult;29 use pallet_evm_coder_substrate::DispatchResult;
30 use sp_core::H160;30 use sp_core::H160;
31 use pallet_evm::account::CrossAccountId;31 use pallet_evm::account::CrossAccountId;
32 use frame_system::pallet_prelude::BlockNumberFor;
33 use up_data_structs::SponsorshipState;32 use up_data_structs::SponsorshipState;
3433
35 #[pallet::config]34 #[pallet::config]
66 pub(super) type SelfSponsoring<T: Config> =65 pub(super) type SelfSponsoring<T: Config> =
67 StorageMap<Hasher = Twox128, Key = H160, Value = bool, QueryKind = ValueQuery>;66 StorageMap<Hasher = Twox128, Key = H160, Value = bool, QueryKind = ValueQuery>;
6867
68 /// Store for contract sponsorship state.
69 ///
70 /// * **Key** - contract address.
71 /// * **Value** - sponsorship state.
69 #[pallet::storage]72 #[pallet::storage]
70 pub(super) type Sponsoring<T: Config> = StorageMap<73 pub(super) type Sponsoring<T: Config> = StorageMap<
71 Hasher = Twox128,74 Hasher = Twox64Concat,
72 Key = H160,75 Key = H160,
73 Value = SponsorshipState<T::CrossAccountId>,76 Value = SponsorshipState<T::CrossAccountId>,
74 QueryKind = ValueQuery,77 QueryKind = ValueQuery,