public TxReceipt[] GetReceipts(Block block, Address contractAddress, IAbiEncoder encoder, Func <Address[], byte[]> dataFunc)
            {
                var validators = Current.Validators?.FirstOrDefault(v => v.InitializeBlock == block.Number)?.Addresses;

                if (validators == null)
                {
                    return(Array.Empty <TxReceipt>());
                }
                else
                {
                    var logs = new[]
                    {
                        new LogEntry(contractAddress,
                                     dataFunc(validators),
                                     new[] { ValidatorContract.Definition.Events[ValidatorContract.InitiateChange].GetHash(), block.ParentHash })
                    };

                    return(new TxReceipt[]
                    {
                        new TxReceipt()
                        {
                            Logs = logs,
                            Bloom = new Bloom(logs)
                        }
                    });
                }
            }
 public DepositContract(IAbiEncoder abiEncoder, Address contractAddress)
     : base(
         abiEncoder,
         contractAddress,
         new AbiDefinitionParser().Parse(File.ReadAllText("contracts//DepositContract.json")))
 {
 }
Exemple #3
0
 public AuRaValidatorFactory(IStateProvider stateProvider,
                             IAbiEncoder abiEncoder,
                             ITransactionProcessor transactionProcessor,
                             IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
                             IBlockTree blockTree,
                             IReceiptFinder receiptFinder,
                             IValidatorStore validatorStore,
                             IBlockFinalizationManager finalizationManager,
                             ITxSender txSender,
                             ITxPool txPool,
                             ILogManager logManager,
                             ISigner signer,
                             ReportingContractBasedValidator.Cache reportingValidatorCache,
                             long posdaoTransition,
                             bool forSealing = false)
 {
     _stateProvider        = stateProvider;
     _abiEncoder           = abiEncoder;
     _transactionProcessor = transactionProcessor;
     _readOnlyTransactionProcessorSource = readOnlyTransactionProcessorSource;
     _blockTree           = blockTree;
     _receiptFinder       = receiptFinder;
     _validatorStore      = validatorStore;
     _finalizationManager = finalizationManager;
     _txSender            = txSender;
     _txPool     = txPool;
     _logManager = logManager;
     _signer     = signer;
     _reportingValidatorCache = reportingValidatorCache;
     _posdaoTransition        = posdaoTransition;
     _forSealing = forSealing;
 }
        public BaselineModule(
            ITxSender txSender,
            IStateReader stateReader,
            ILogFinder logFinder,
            IBlockFinder blockFinder,
            IAbiEncoder abiEncoder,
            IFileSystem fileSystem,
            IDb baselineDb,
            IDb metadataBaselineDb,
            ILogManager logManager,
            IBlockProcessor blockProcessor,
            DisposableStack disposableStack)
        {
            _abiEncoder         = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
            _fileSystem         = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
            _baselineDb         = baselineDb ?? throw new ArgumentNullException(nameof(baselineDb));
            _metadataBaselineDb = metadataBaselineDb ?? throw new ArgumentNullException(nameof(metadataBaselineDb));
            _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _txSender           = txSender ?? throw new ArgumentNullException(nameof(txSender));
            _stateReader        = stateReader ?? throw new ArgumentNullException(nameof(stateReader));
            _logFinder          = logFinder ?? throw new ArgumentNullException(nameof(logFinder));
            _blockFinder        = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder));
            _blockProcessor     = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor));
            _baselineTreeHelper = new BaselineTreeHelper(_logFinder, baselineDb, metadataBaselineDb, _logger);
            _disposableStack    = disposableStack ?? throw new ArgumentNullException(nameof(disposableStack));

            _metadata = LoadMetadata();
            InitTrees();
        }
Exemple #5
0
        public UserOperationSimulator(
            IUserOperationTxBuilder userOperationTxBuilder,
            IStateProvider stateProvider,
            IStateReader stateReader,
            AbiDefinition entryPointContractAbi,
            Address create2FactoryAddress,
            Address entryPointContractAddress,
            ISpecProvider specProvider,
            IBlockTree blockTree,
            IDbProvider dbProvider,
            IReadOnlyTrieStore trieStore,
            ITimestamper timestamper,
            ILogManager logManager)
        {
            _userOperationTxBuilder    = userOperationTxBuilder;
            _stateProvider             = stateProvider;
            _stateReader               = stateReader;
            _entryPointContractAbi     = entryPointContractAbi;
            _create2FactoryAddress     = create2FactoryAddress;
            _entryPointContractAddress = entryPointContractAddress;
            _specProvider              = specProvider;
            _blockTree   = blockTree;
            _dbProvider  = dbProvider.AsReadOnly(false);
            _trieStore   = trieStore;
            _timestamper = timestamper;
            _logManager  = logManager;

            _abiEncoder = new AbiEncoder();
        }
 public TransactionPermissionContractV2(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
     : base(abiEncoder, contractAddress ?? throw new ArgumentNullException(nameof(contractAddress)), readOnlyTxProcessorSource)
 {
 }
Exemple #7
0
 /// <summary>
 /// Creates contract
 /// </summary>
 /// <param name="transactionProcessor">Transaction processor on which all <see cref="Call(Nethermind.Core.BlockHeader,Nethermind.Core.Transaction)"/> should be run on.</param>
 /// <param name="abiEncoder">Binary interface encoder/decoder.</param>
 /// <param name="contractAddress">Address where contract is deployed.</param>
 protected Contract(ITransactionProcessor transactionProcessor, IAbiEncoder abiEncoder, Address contractAddress)
 {
     // _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));
     _transactionProcessor = transactionProcessor;
     _abiEncoder           = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     ContractAddress       = contractAddress ?? throw new ArgumentNullException(nameof(contractAddress));
 }
Exemple #8
0
 public ContractBasedValidator(
     AuRaParameters.Validator validator,
     IStateProvider stateProvider,
     IAbiEncoder abiEncoder,
     ITransactionProcessor transactionProcessor,
     IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
     IBlockTree blockTree,
     IReceiptFinder receiptFinder,
     IValidatorStore validatorStore,
     IValidSealerStrategy validSealerStrategy,
     IBlockFinalizationManager finalizationManager,
     BlockHeader parentHeader,
     ILogManager logManager,
     long startBlockNumber,
     bool forSealing = false) : base(validator, validSealerStrategy, validatorStore, logManager, startBlockNumber, forSealing)
 {
     _blockTree            = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     ContractAddress       = validator.Addresses?.FirstOrDefault() ?? throw new ArgumentException("Missing contract address for AuRa validator.", nameof(validator.Addresses));
     _stateProvider        = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));
     _readOnlyReadOnlyTransactionProcessorSource = readOnlyTransactionProcessorSource ?? throw new ArgumentNullException(nameof(readOnlyTransactionProcessorSource));
     _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));
     _logger        = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     AbiEncoder     = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     SetPendingValidators(LoadPendingValidators());
     SetFinalizationManager(finalizationManager, parentHeader ?? _blockTree.Head?.Header);
 }
        public AuRaRewardCalculator(AuRaParameters auRaParameters, IAbiEncoder abiEncoder, ITransactionProcessor transactionProcessor)
        {
            IList <RewardContract> BuildTransitions()
            {
                var contracts = new List <RewardContract>();

                if (auRaParameters.BlockRewardContractTransitions != null)
                {
                    contracts.AddRange(auRaParameters.BlockRewardContractTransitions.Select(t => new RewardContract(abiEncoder, t.Value, t.Key)));
                }

                contracts.Sort((a, b) => a.TransitionBlock.CompareTo(b.TransitionBlock));

                if (auRaParameters.BlockRewardContractAddress != null)
                {
                    var contractTransition = auRaParameters.BlockRewardContractTransition ?? 0;
                    if (contractTransition > (contracts.FirstOrDefault()?.TransitionBlock ?? long.MaxValue))
                    {
                        throw new ArgumentException($"{nameof(auRaParameters.BlockRewardContractTransition)} provided for {nameof(auRaParameters.BlockRewardContractAddress)} is higher than first {nameof(auRaParameters.BlockRewardContractTransitions)}.");
                    }

                    contracts.Insert(0, new RewardContract(abiEncoder, auRaParameters.BlockRewardContractAddress, contractTransition));
                }

                return(contracts);
            }

            if (auRaParameters == null)
            {
                throw new ArgumentNullException(nameof(AuRaParameters));
            }
            _transactionProcessor  = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));
            _contracts             = BuildTransitions();
            _blockRewardCalculator = new StaticRewardCalculator(auRaParameters.BlockReward);
        }
 public static Dictionary <UInt256, TransactionPermissionContract> CreateAllVersions(
     ITransactionProcessor transactionProcessor,
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTransactionProcessorSource readOnlyReadOnlyTransactionProcessorSource)
 {
     return(new Dictionary <UInt256, TransactionPermissionContract>
     {
         {
             UInt256.One, CreateV1(
                 transactionProcessor,
                 abiEncoder,
                 contractAddress,
                 readOnlyReadOnlyTransactionProcessorSource)
         },
         {
             2, CreateV2(
                 transactionProcessor,
                 abiEncoder,
                 contractAddress,
                 readOnlyReadOnlyTransactionProcessorSource)
         },
         {
             3, CreateV3(
                 transactionProcessor,
                 abiEncoder,
                 contractAddress,
                 readOnlyReadOnlyTransactionProcessorSource)
         },
     });
 }
        public void SetUp()
        {
            _db = Substitute.For <IDb>();
            _db[ContractValidator.PendingValidatorsKey.Bytes].Returns((byte[])null);
            _stateProvider            = Substitute.For <IStateProvider>();
            _abiEncoder               = Substitute.For <IAbiEncoder>();
            _logManager               = Substitute.For <ILogManager>();
            _blockTree                = Substitute.For <IBlockTree>();
            _blockFinalizationManager = Substitute.For <IBlockFinalizationManager>();
            _receiptsStorage          = Substitute.For <IReceiptStorage>();
            _validator                = new AuRaParameters.Validator()
            {
                Addresses     = new[] { _contractAddress },
                ValidatorType = AuRaParameters.ValidatorType.Contract
            };

            _block = new Block(Prepare.A.BlockHeader().WithNumber(1).WithAura(1, Bytes.Empty).TestObject, new BlockBody());

            _transactionProcessor = Substitute.For <ITransactionProcessor>();

            _abiEncoder
            .Encode(AbiEncodingStyle.IncludeSignature, Arg.Is <AbiSignature>(s => s.Name == "getValidators"), Arg.Any <object[]>())
            .Returns(_getValidatorsData);

            _abiEncoder
            .Encode(AbiEncodingStyle.IncludeSignature, Arg.Is <AbiSignature>(s => s.Name == "finalizeChange"), Arg.Any <object[]>())
            .Returns(_finalizeChangeData);
        }
Exemple #12
0
 public TransactionPermissionContractV2(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
     : base(abiEncoder, contractAddress, readOnlyTxProcessorSource)
 {
 }
 public ReceiptProcessor(IProviderSessionRepository sessionRepository, IAbiEncoder abiEncoder, IEcdsa ecdsa,
                         ILogManager logManager)
 {
     _sessionRepository = sessionRepository;
     _abiEncoder        = abiEncoder;
     _ecdsa             = ecdsa;
     _logger            = logManager.GetClassLogger();
 }
Exemple #14
0
 public RegisterContract(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
     : base(abiEncoder, contractAddress ?? throw new ArgumentNullException(nameof(contractAddress)))
 {
     Constant = GetConstant(readOnlyTxProcessorSource);
 }
 public RefundService(IBlockchainBridge blockchainBridge, IAbiEncoder abiEncoder, IWallet wallet, INdmConfig ndmConfig, ILogManager logManager)
 {
     _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge));
     _abiEncoder       = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     _wallet           = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _ndmConfig        = ndmConfig ?? throw new ArgumentNullException(nameof(ndmConfig));
     _logger           = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
 public ReportingValidatorContract(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     ISigner signer)
     : base(abiEncoder, contractAddress)
 {
     _signer = signer ?? throw new ArgumentNullException(nameof(signer));
 }
 public TransactionPermissionContract(ITransactionProcessor transactionProcessor,
                                      IAbiEncoder abiEncoder,
                                      Address contractAddress,
                                      IReadOnlyTransactionProcessorSource readOnlyReadOnlyTransactionProcessorSource)
     : base(transactionProcessor, abiEncoder, contractAddress)
 {
     Constant = GetConstant(readOnlyReadOnlyTransactionProcessorSource);
 }
 public TransactionPermissionContractV3(
     ITransactionProcessor transactionProcessor,
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTransactionProcessorSource readOnlyReadOnlyTransactionProcessorSource)
     : base(transactionProcessor, abiEncoder, contractAddress, readOnlyReadOnlyTransactionProcessorSource)
 {
 }
 public ReportingContractValidator(AuRaParameters.Validator validator,
                                   IStateProvider stateProvider,
                                   IAbiEncoder abiEncoder,
                                   ITransactionProcessor transactionProcessor,
                                   ILogManager logManager,
                                   long startBlockNumber) : base(validator, stateProvider, abiEncoder, transactionProcessor, logManager, startBlockNumber)
 {
 }
 public CertifierContract(
     IAbiEncoder abiEncoder,
     IRegisterContract registerContract,
     IReadOnlyTxProcessorSource readOnlyTransactionProcessorSource)
     : base(abiEncoder, registerContract, ServiceTransactionContractRegistryName)
 {
     Constant = GetConstant(readOnlyTransactionProcessorSource);
 }
        public void SetUp()
        {
            _abiEncoder = new AbiEncoder();
            _fileSystem = Substitute.For <IFileSystem>();
            const string expectedFilePath = "contracts/MerkleTreeSHA.bin";

            _fileSystem.File.ReadAllLinesAsync(expectedFilePath).Returns(File.ReadAllLines(expectedFilePath));
        }
 public DepositService(INdmBlockchainBridge blockchainBridge, IAbiEncoder abiEncoder, IWallet wallet,
                       Address contractAddress)
 {
     _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge));
     _abiEncoder       = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     _wallet           = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _contractAddress  = contractAddress ?? throw new ArgumentNullException(nameof(contractAddress));
 }
 protected TransactionPermissionContract(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource)
     : base(abiEncoder, contractAddress)
 {
     Constant = GetConstant(readOnlyTransactionProcessorSource);
 }
Exemple #24
0
 public RegisterContract(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
     : base(abiEncoder, contractAddress)
 {
     Constant = GetConstant(readOnlyTxProcessorSource);
 }
Exemple #25
0
 public RefundService(INdmBlockchainBridge blockchainBridge, IAbiEncoder abiEncoder,
                      IDepositDetailsRepository depositRepository, Address contractAddress, ILogManager logManager)
 {
     _blockchainBridge  = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge));
     _abiEncoder        = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     _depositRepository = depositRepository;
     _contractAddress   = contractAddress ?? throw new ArgumentNullException(nameof(contractAddress));
     _logger            = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
 public TransactionPermissionContractV4(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IReadOnlyTxProcessorSource readOnlyTxProcessorSource,
     ISpecProvider specProvider)
     : base(abiEncoder, contractAddress, readOnlyTxProcessorSource)
 {
     _specProvider = specProvider;
 }
Exemple #27
0
 public ReportingValidatorContract(
     ITransactionProcessor transactionProcessor,
     IAbiEncoder abiEncoder,
     Address contractAddress,
     IStateProvider stateProvider,
     IReadOnlyTransactionProcessorSource readOnlyReadOnlyTransactionProcessorSource)
     : base(transactionProcessor, abiEncoder, contractAddress, stateProvider, readOnlyReadOnlyTransactionProcessorSource)
 {
 }
Exemple #28
0
 private static TransactionPermissionContractV3 CreateV3(IAbiEncoder abiEncoder,
                                                         Address contractAddress,
                                                         IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource)
 {
     return(new TransactionPermissionContractV3(
                abiEncoder,
                contractAddress,
                readOnlyTransactionProcessorSource));
 }
 public BlockGasLimitContract(
     IAbiEncoder abiEncoder,
     Address contractAddress,
     long transitionBlock,
     IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
     : base(abiEncoder, contractAddress)
 {
     Activation = transitionBlock;
     Constant   = GetConstant(readOnlyTxProcessorSource);
 }
 public RegisterBasedContract(
     IAbiEncoder abiEncoder,
     IRegisterContract registerContract,
     string registryKey,
     AbiDefinition?abiDefinition = null)
     : base(abiEncoder, abiDefinition: abiDefinition)
 {
     _registerContract = registerContract;
     _registryKey      = registryKey;
 }