public static IEnumerable <string> GetEntryPointAddresses(this IAccountAbstractionConfig accountAbstractionConfig) => accountAbstractionConfig.EntryPointContractAddresses .Split(",") .Where(s => !string.IsNullOrWhiteSpace(s)) .Select(s => s.Trim()) .Distinct();
public Task Init(INethermindApi nethermindApi) { _nethermindApi = nethermindApi ?? throw new ArgumentNullException(nameof(nethermindApi)); _accountAbstractionConfig = _nethermindApi.Config <IAccountAbstractionConfig>(); _logger = _nethermindApi.LogManager.GetClassLogger(); if (_accountAbstractionConfig.Enabled) { bool parsed = Address.TryParse( _accountAbstractionConfig.EntryPointContractAddress, out Address? entryPointContractAddress); if (!parsed) { if (_logger.IsError) { _logger.Error("Account Abstraction Plugin: EntryPoint contract address could not be parsed"); } } else { if (_logger.IsInfo) { _logger.Info($"Parsed EntryPoint Address: {entryPointContractAddress}"); } _entryPointContractAddress = entryPointContractAddress !; } bool parsedCreate2Factory = Address.TryParse( _accountAbstractionConfig.Create2FactoryAddress, out Address? create2FactoryAddress); if (!parsedCreate2Factory) { if (_logger.IsError) { _logger.Error("Account Abstraction Plugin: Create2Factory contract address could not be parsed"); } } else { if (_logger.IsInfo) { _logger.Info($"Parsed Create2Factory Address: {create2FactoryAddress}"); } _create2FactoryAddress = create2FactoryAddress !; } _entryPointContractAbi = LoadEntryPointContract(); } if (Enabled) { if (_logger.IsInfo) { _logger.Info(" Account Abstraction Plugin: User Operation Mining Enabled"); } } else { if (_logger.IsInfo) { _logger.Info(" Account Abstraction Plugin: User Operation Mining Disabled"); } } return(Task.CompletedTask); }
public Task Init(INethermindApi nethermindApi) { _nethermindApi = nethermindApi ?? throw new ArgumentNullException(nameof(nethermindApi)); _accountAbstractionConfig = _nethermindApi.Config <IAccountAbstractionConfig>(); _logger = _nethermindApi.LogManager.GetClassLogger(); if (_accountAbstractionConfig.Enabled) { // Increasing number of priority peers in network config by AaPriorityPeersMaxCount. // Be careful if there is another plugin with priority peers - they won't be distinguished in SyncPeerPool. _nethermindApi.Config <INetworkConfig>().PriorityPeersMaxCount += _accountAbstractionConfig.AaPriorityPeersMaxCount; IList <string> entryPointContractAddressesString = _accountAbstractionConfig.GetEntryPointAddresses().ToList(); foreach (string addressString in entryPointContractAddressesString) { bool parsed = Address.TryParse( addressString, out Address? entryPointContractAddress); if (!parsed) { if (_logger.IsError) { _logger.Error("Account Abstraction Plugin: EntryPoint contract address could not be parsed"); } } else { if (_logger.IsInfo) { _logger.Info($"Parsed EntryPoint address: {entryPointContractAddress}"); } _entryPointContractAddresses.Add(entryPointContractAddress !); } } IList <string> whitelistedPaymastersString = _accountAbstractionConfig.GetWhitelistedPaymasters().ToList(); foreach (string addressString in whitelistedPaymastersString) { bool parsed = Address.TryParse( addressString, out Address? whitelistedPaymaster); if (!parsed) { if (_logger.IsError) { _logger.Error("Account Abstraction Plugin: Whitelisted Paymaster address could not be parsed"); } } else { if (_logger.IsInfo) { _logger.Info($"Parsed Whitelisted Paymaster address: {whitelistedPaymaster}"); } _whitelistedPaymasters.Add(whitelistedPaymaster !); } } _entryPointContractAbi = LoadEntryPointContract(); } if (Enabled) { if (_logger.IsInfo) { _logger.Info(" Account Abstraction Plugin: User Operation Mining Enabled"); } } else { if (_logger.IsInfo) { _logger.Info(" Account Abstraction Plugin: User Operation Mining Disabled"); } } return(Task.CompletedTask); }
public static IEnumerable <string> GetWhitelistedPaymasters(this IAccountAbstractionConfig accountAbstractionConfig) => accountAbstractionConfig.WhitelistedPaymasters .Split(",") .Where(s => !string.IsNullOrWhiteSpace(s)) .Select(s => s.Trim()) .Distinct();