--- a/pallets/evm-contract-helpers/src/eth.rs +++ b/pallets/evm-contract-helpers/src/eth.rs @@ -73,11 +73,14 @@ fn get_sponsor(&self, contract_address: address) -> Result<(address, uint256)> { let sponsor = Pallet::::get_sponsor(contract_address).ok_or("Contract has no sponsor")?; - let sponsor_sub = - pallet_common::eth::convert_cross_account_to_eth_uint256::(&sponsor); + let sponsor_sub = pallet_common::eth::convert_cross_account_to_eth_uint256::(&sponsor); Ok((*sponsor.as_eth(), sponsor_sub)) } + fn has_sponsor(&self, contract_address: address) -> Result { + Ok(Pallet::::get_sponsor(contract_address).is_some()) + } + fn sponsoring_enabled(&self, contract_address: address) -> Result { Ok(>::sponsoring_mode(contract_address) != SponsoringModeT::Disabled) } --- a/pallets/evm-contract-helpers/src/lib.rs +++ b/pallets/evm-contract-helpers/src/lib.rs @@ -168,6 +168,11 @@ match Sponsoring::::get(contract) { SponsorshipState::Unconfirmed(sponsor) => { ensure!(sponsor == *sender, Error::::NoPermission); + Sponsoring::::mutate_exists(contract, |state| { + *state = Some(SponsorshipState::::Confirmed( + sponsor.clone(), + )) + }); Ok(()) } SponsorshipState::Disabled | SponsorshipState::Confirmed(_) => {