git.delta.rocks / unique-network / refs/commits / e50c7257388c

difftreelog

path: Return sponsor as a tuple.

Trubnikov Sergey2022-08-04parent: #14eb87c.patch.diff
in: master

3 files changed

modifiedcrates/evm-coder/src/abi.rsdiffbeforeafterboth
--- a/crates/evm-coder/src/abi.rs
+++ b/crates/evm-coder/src/abi.rs
@@ -425,7 +425,7 @@
 macro_rules! impl_tuples_abi_writer {
 	($($ident:ident)+) => {
 		#[allow(non_snake_case)]
-		impl<$($ident),+> AbiWrite for &($($ident,)+) 
+		impl<$($ident),+> AbiWrite for &($($ident,)+)
 		where
 			$($ident: AbiWrite,)+
 		{
modifiedpallets/common/src/eth.rsdiffbeforeafterboth
52 address[0..16] == ETH_COLLECTION_PREFIX52 address[0..16] == ETH_COLLECTION_PREFIX
53}53}
54
55/// Convert `CrossAccountId` to `uint256`.
56pub fn convert_cross_account_to_eth_uint256<T: Config>(from: &T::CrossAccountId) -> uint256
57where
58 T::AccountId: AsRef<[u8]>,
59{
60 use pallet_evm::account::CrossAccountId;
61 let slice = from.as_sub().as_ref();
62 uint256::from_big_endian(slice)
63}
5464
55/// Converts Substrate address to CrossAccountId65/// Converts Substrate address to CrossAccountId
56pub fn convert_substrate_address_to_cross_account_id<T: Config>(66pub fn convert_substrate_address_to_cross_account_id<T: Config>(
modifiedpallets/evm-contract-helpers/src/eth.rsdiffbeforeafterboth
--- a/pallets/evm-contract-helpers/src/eth.rs
+++ b/pallets/evm-contract-helpers/src/eth.rs
@@ -15,12 +15,7 @@
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
 use core::marker::PhantomData;
-use evm_coder::{
-	abi::AbiWriter,
-	execution::{Result, Error},
-	generate_stubgen, solidity_interface,
-	types::*,
-};
+use evm_coder::{abi::AbiWriter, execution::Result, generate_stubgen, solidity_interface, types::*};
 use pallet_evm_coder_substrate::{SubstrateRecorder, WithRecorder, dispatch_to_evm};
 use pallet_evm::{
 	ExitRevert, OnCreate, OnMethodCall, PrecompileResult, PrecompileFailure, PrecompileHandle,
@@ -46,7 +41,10 @@
 }
 
 #[solidity_interface(name = "ContractHelpers")]
-impl<T: Config> ContractHelpers<T> {
+impl<T: Config> ContractHelpers<T>
+where
+	T::AccountId: AsRef<[u8]>,
+{
 	fn contract_owner(&self, contract_address: address) -> Result<address> {
 		Ok(<Owner<T>>::get(contract_address))
 	}
@@ -72,17 +70,19 @@
 		Ok(())
 	}
 
-	fn get_sponsor(&self, contract_address: address) -> Result<address> {
+	fn get_sponsor(&self, contract_address: address) -> Result<(address, uint256)> {
 		let sponsor =
 			Pallet::<T>::get_sponsor(contract_address).ok_or("Contract has no sponsor")?;
-		Ok(*sponsor.as_eth())
+		let sponsor_sub =
+			pallet_common::eth::convert_cross_account_to_eth_uint256::<T>(&sponsor);
+		Ok((*sponsor.as_eth(), sponsor_sub))
 	}
 
 	fn sponsoring_enabled(&self, contract_address: address) -> Result<bool> {
 		Ok(<Pallet<T>>::sponsoring_mode(contract_address) != SponsoringModeT::Disabled)
 	}
 
-	/// Deprecated
+	/// Deprecated 
 	fn toggle_sponsoring(
 		&mut self,
 		caller: caller,
@@ -161,7 +161,10 @@
 }
 
 pub struct HelpersOnMethodCall<T: Config>(PhantomData<*const T>);
-impl<T: Config> OnMethodCall<T> for HelpersOnMethodCall<T> {
+impl<T: Config> OnMethodCall<T> for HelpersOnMethodCall<T>
+where
+	T::AccountId: AsRef<[u8]>,
+{
 	fn is_reserved(contract: &sp_core::H160) -> bool {
 		contract == &T::ContractAddress::get()
 	}