git.delta.rocks / unique-network / refs/commits / 1b03174d8784

difftreelog

fix Spend gas before do some thing.

Trubnikov Sergey2022-08-25parent: #b434dac.patch.diff
in: master

1 file changed

modifiedpallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth
65 contract_address: address,65 contract_address: address,
66 sponsor: address,66 sponsor: address,
67 ) -> Result<void> {67 ) -> Result<void> {
68 self.recorder().consume_sload()?;
69 self.recorder().consume_sstore()?;
70
68 Pallet::<T>::set_sponsor(71 Pallet::<T>::set_sponsor(
69 &T::CrossAccountId::from_eth(caller),72 &T::CrossAccountId::from_eth(caller),
72 )75 )
73 .map_err(dispatch_to_evm::<T>)?;76 .map_err(dispatch_to_evm::<T>)?;
74
75 self.recorder().consume_sload()?;
76 self.recorder().consume_sstore()?;
7777
78 Ok(())78 Ok(())
79 }79 }
82 ///82 ///
83 /// @param contract_address Contract for which a self sponsoring is being enabled.83 /// @param contract_address Contract for which a self sponsoring is being enabled.
84 fn self_sponsored_enable(&mut self, caller: caller, contract_address: address) -> Result<void> {84 fn self_sponsored_enable(&mut self, caller: caller, contract_address: address) -> Result<void> {
85 self.recorder().consume_sload()?;
86 self.recorder().consume_sstore()?;
87
85 Pallet::<T>::self_sponsored_enable(&T::CrossAccountId::from_eth(caller), contract_address)88 Pallet::<T>::self_sponsored_enable(&T::CrossAccountId::from_eth(caller), contract_address)
86 .map_err(dispatch_to_evm::<T>)?;89 .map_err(dispatch_to_evm::<T>)?;
87
88 self.recorder().consume_sload()?;
89 self.recorder().consume_sstore()?;
9090
91 Ok(())91 Ok(())
92 }92 }
95 ///95 ///
96 /// @param contract_address Contract for which a sponsorship is being removed.96 /// @param contract_address Contract for which a sponsorship is being removed.
97 fn remove_sponsor(&mut self, caller: caller, contract_address: address) -> Result<void> {97 fn remove_sponsor(&mut self, caller: caller, contract_address: address) -> Result<void> {
98 self.recorder().consume_sload()?;
99 self.recorder().consume_sstore()?;
100
98 Pallet::<T>::remove_sponsor(&T::CrossAccountId::from_eth(caller), contract_address)101 Pallet::<T>::remove_sponsor(&T::CrossAccountId::from_eth(caller), contract_address)
99 .map_err(dispatch_to_evm::<T>)?;102 .map_err(dispatch_to_evm::<T>)?;
100
101 self.recorder().consume_sload()?;
102 self.recorder().consume_sstore()?;
103103
104 Ok(())104 Ok(())
105 }105 }
110 ///110 ///
111 /// @param contract_address Сontract for which need to confirm sponsorship.111 /// @param contract_address Сontract for which need to confirm sponsorship.
112 fn confirm_sponsorship(&mut self, caller: caller, contract_address: address) -> Result<void> {112 fn confirm_sponsorship(&mut self, caller: caller, contract_address: address) -> Result<void> {
113 self.recorder().consume_sload()?;
114 self.recorder().consume_sstore()?;
115
113 Pallet::<T>::confirm_sponsorship(&T::CrossAccountId::from_eth(caller), contract_address)116 Pallet::<T>::confirm_sponsorship(&T::CrossAccountId::from_eth(caller), contract_address)
114 .map_err(dispatch_to_evm::<T>)?;117 .map_err(dispatch_to_evm::<T>)?;
115
116 self.recorder().consume_sload()?;
117 self.recorder().consume_sstore()?;
118118
119 Ok(())119 Ok(())
120 }120 }
165 contract_address: address,165 contract_address: address,
166 mode: uint8,166 mode: uint8,
167 ) -> Result<void> {167 ) -> Result<void> {
168 self.recorder().consume_sload()?;
169 self.recorder().consume_sstore()?;
170
168 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;171 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;
169 let mode = SponsoringModeT::from_eth(mode).ok_or("unknown mode")?;172 let mode = SponsoringModeT::from_eth(mode).ok_or("unknown mode")?;
170 <Pallet<T>>::set_sponsoring_mode(contract_address, mode);173 <Pallet<T>>::set_sponsoring_mode(contract_address, mode);
171
172 self.recorder().consume_sload()?;
173 self.recorder().consume_sstore()?;
174174
175 Ok(())175 Ok(())
176 }176 }
185 contract_address: address,185 contract_address: address,
186 rate_limit: uint32,186 rate_limit: uint32,
187 ) -> Result<void> {187 ) -> Result<void> {
188 self.recorder().consume_sload()?;
189 self.recorder().consume_sstore()?;
190
188 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;191 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;
189 <Pallet<T>>::set_sponsoring_rate_limit(contract_address, rate_limit.into());192 <Pallet<T>>::set_sponsoring_rate_limit(contract_address, rate_limit.into());
190
191 self.recorder().consume_sload()?;
192 self.recorder().consume_sstore()?;
193193
194 Ok(())194 Ok(())
195 }195 }
215 contract_address: address,215 contract_address: address,
216 enabled: bool,216 enabled: bool,
217 ) -> Result<void> {217 ) -> Result<void> {
218 self.recorder().consume_sload()?;
219 self.recorder().consume_sstore()?;
220
218 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;221 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;
219 <Pallet<T>>::toggle_allowlist(contract_address, enabled);222 <Pallet<T>>::toggle_allowlist(contract_address, enabled);
220
221 self.recorder().consume_sload()?;
222 self.recorder().consume_sstore()?;
223223
224 Ok(())224 Ok(())
225 }225 }
231 user: address,231 user: address,
232 allowed: bool,232 allowed: bool,
233 ) -> Result<void> {233 ) -> Result<void> {
234 self.recorder().consume_sload()?;
235 self.recorder().consume_sstore()?;
236
234 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;237 <Pallet<T>>::ensure_owner(contract_address, caller).map_err(dispatch_to_evm::<T>)?;
235 <Pallet<T>>::toggle_allowed(contract_address, user, allowed);238 <Pallet<T>>::toggle_allowed(contract_address, user, allowed);
236
237 self.recorder().consume_sload()?;
238 self.recorder().consume_sstore()?;
239239
240 Ok(())240 Ok(())
241 }241 }