public async Task can_return_tracked_list(uint trackedCount) { SingleReleaseSpecProvider spec = new SingleReleaseSpecProvider(ConstantinopleFix.Instance, 1); TestRpcBlockchain testRpc = await TestRpcBlockchain.ForTest(SealEngineType.NethDev).Build(spec); IStateReader stateReader = Substitute.For <IStateReader>(); BaselineModule baselineModule = new BaselineModule( testRpc.TxSender, stateReader, testRpc.LogFinder, testRpc.BlockTree, _abiEncoder, _fileSystem, new MemDb(), LimboLogs.Instance); for (int i = 0; i < trackedCount; i++) { stateReader.GetCode(null, null).ReturnsForAnyArgs(new byte[] { 255 }); await baselineModule.baseline_track(TestItem.Addresses[i]); } var result = (await baselineModule.baseline_getTracked()); result.Data.Length.Should().Be((int)trackedCount); }
public Web3EthApi(IStateReader stateReader, IDeltaResolver deltaResolver, IDeltaCache deltaCache, IDeltaExecutor executor, IStorageProvider storageProvider, IStateProvider stateProvider, ITransactionRepository receipts, ITransactionReceivedEvent transactionReceived, IPeerRepository peerRepository, IMempool <PublicEntryDao> mempoolRepository, IDfsService dfsService, IHashProvider hashProvider, SyncState syncState, IMapperProvider mapperProvider, IPeerSettings peerSettings) { _receipts = receipts; _transactionReceived = transactionReceived ?? throw new ArgumentNullException(nameof(transactionReceived)); HashProvider = hashProvider; _peerId = peerSettings.PeerId; _mempoolRepository = mempoolRepository; PeerRepository = peerRepository; _mapperProvider = mapperProvider; StateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); DeltaResolver = deltaResolver ?? throw new ArgumentNullException(nameof(deltaResolver)); DeltaCache = deltaCache ?? throw new ArgumentNullException(nameof(deltaCache)); Executor = executor ?? throw new ArgumentNullException(nameof(executor)); StorageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider)); StateProvider = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider)); DfsService = dfsService; SyncState = syncState; }
public EthModuleFactory( ITxPool txPool, ITxSender txSender, IWallet wallet, IBlockTree blockTree, IJsonRpcConfig config, ILogManager logManager, IStateReader stateReader, IBlockchainBridgeFactory blockchainBridgeFactory, ISpecProvider specProvider, IReceiptStorage receiptStorage, IGasPriceOracle gasPriceOracle, IEthSyncingInfo ethSyncingInfo) { _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _rpcConfig = config ?? throw new ArgumentNullException(nameof(config)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _blockchainBridgeFactory = blockchainBridgeFactory ?? throw new ArgumentNullException(nameof(blockchainBridgeFactory)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _ethSyncingInfo = ethSyncingInfo ?? throw new ArgumentNullException(nameof(ethSyncingInfo)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _gasPriceOracle = gasPriceOracle ?? throw new ArgumentNullException(nameof(gasPriceOracle)); _blockTree = blockTree.AsReadOnly(); }
public BlockchainBridge( IStateReader stateReader, IStateProvider stateProvider, IStorageProvider storageProvider, IBlockTree blockTree, ITxPool txPool, IReceiptStorage receiptStorage, IFilterStore filterStore, IFilterManager filterManager, IWallet wallet, ITransactionProcessor transactionProcessor, IEthereumEcdsa ecdsa, IBloomStorage bloomStorage, IReceiptsRecovery receiptsRecovery, int findLogBlockDepthLimit = 1000) { _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _stateProvider = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider)); _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _txPool = txPool ?? throw new ArgumentNullException(nameof(_txPool)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _filterStore = filterStore ?? throw new ArgumentException(nameof(filterStore)); _filterManager = filterManager ?? throw new ArgumentException(nameof(filterManager)); _wallet = wallet ?? throw new ArgumentException(nameof(wallet)); _transactionProcessor = transactionProcessor ?? throw new ArgumentException(nameof(transactionProcessor)); _ecdsa = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa)); _logFinder = new LogFinder(_blockTree, _receiptStorage, bloomStorage, receiptsRecovery, findLogBlockDepthLimit); }
public Web3EthApi(IDeltaExecutor deltaExecutor, IStateReader stateReader, IStateRootResolver stateRootResolver, IDeltaResolver deltaResolver) { DeltaExecutor = deltaExecutor ?? throw new ArgumentNullException(nameof(deltaExecutor)); StateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); StateRootResolver = stateRootResolver ?? throw new ArgumentNullException(nameof(stateRootResolver)); DeltaResolver = deltaResolver ?? throw new ArgumentNullException(nameof(deltaResolver)); }
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(); }
/// <summary> /// Loads the queue from storage. /// </summary> /// <param name="reader">The reader to load the queue from.</param> protected override void LoadCore(IStateReader reader) { // // Deserialize metadata/head and metadata/tail as integers. // using (var headStream = reader.GetItemReader(MetadataCategory, HeadKey)) { _head = GetDeserializer <long>().Deserialize(headStream); } using (var tailStream = reader.GetItemReader(MetadataCategory, TailKey)) { _tail = GetDeserializer <long>().Deserialize(tailStream); } // // Prepare an array of eventual objects and fill with the elements obtained from the reader at items/i with indexes in range [head..tail). // // NB: Tail is an exclusive index. // var length = _tail - _head; _data = new EventualObject[length]; for (var i = 0; i < length; i++) { var key = GetKeyForIndex(_head + i); using var itemStream = reader.GetItemReader(ItemsCategory, key); _data[i] = EventualObject.FromState(itemStream); } }
public BlockchainBridge(ReadOnlyTxProcessingEnv processingEnv, ITxPool?txPool, IReceiptFinder?receiptStorage, IFilterStore?filterStore, IFilterManager?filterManager, IEthereumEcdsa?ecdsa, ITimestamper?timestamper, ILogFinder?logFinder, ISpecProvider specProvider, bool isMining) { _processingEnv = processingEnv ?? throw new ArgumentNullException(nameof(processingEnv)); _stateReader = processingEnv.StateReader ?? throw new ArgumentNullException(nameof(processingEnv.StateReader)); _stateProvider = processingEnv.StateProvider ?? throw new ArgumentNullException(nameof(processingEnv.StateProvider)); _blockTree = processingEnv.BlockTree ?? throw new ArgumentNullException(nameof(processingEnv.BlockTree)); _transactionProcessor = processingEnv.TransactionProcessor ?? throw new ArgumentNullException(nameof(processingEnv.TransactionProcessor)); _txPool = txPool ?? throw new ArgumentNullException(nameof(_txPool)); _receiptFinder = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _filterStore = filterStore ?? throw new ArgumentNullException(nameof(filterStore)); _filterManager = filterManager ?? throw new ArgumentNullException(nameof(filterManager)); _ecdsa = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _logFinder = logFinder ?? throw new ArgumentNullException(nameof(logFinder)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); IsMining = isMining; }
public BlockchainBridge( IStateReader stateReader, IStateProvider stateProvider, IStorageProvider storageProvider, IBlockTree blockTree, ITransactionPool transactionPool, ITransactionPoolInfoProvider transactionPoolInfoProvider, IReceiptStorage receiptStorage, IFilterStore filterStore, IFilterManager filterManager, IWallet wallet, ITransactionProcessor transactionProcessor) { _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _stateProvider = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider)); _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _transactionPool = transactionPool ?? throw new ArgumentNullException(nameof(_transactionPool)); _transactionPoolInfoProvider = transactionPoolInfoProvider ?? throw new ArgumentNullException(nameof(transactionPoolInfoProvider)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _filterStore = filterStore ?? throw new ArgumentException(nameof(filterStore)); _filterManager = filterManager ?? throw new ArgumentException(nameof(filterManager)); _wallet = wallet ?? throw new ArgumentException(nameof(wallet)); _transactionProcessor = transactionProcessor ?? throw new ArgumentException(nameof(transactionProcessor)); }
public TxPoolTxSource(ITxPool transactionPool, IStateReader stateReader, ILogManager logManager, long minGasPriceForMining = 0) { _transactionPool = transactionPool ?? throw new ArgumentNullException(nameof(transactionPool)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _logger = logManager?.GetClassLogger <TxPoolTxSource>() ?? throw new ArgumentNullException(nameof(logManager)); _minGasPriceForMining = minGasPriceForMining; }
public void Setup() { _address = Address.FromNumber(1); _stateReader = Substitute.For <IStateReader>(); _txPool = Substitute.For <ITxPool>(); _infoProvider = new TxPoolInfoProvider(_stateReader, _txPool); }
public void SetUp() { _stateReader = Substitute.For <IStateReader>(); _stateProvider = Substitute.For <IStateProvider>(); _storageProvider = Substitute.For <IStorageProvider>(); _blockTree = Substitute.For <IBlockTree>(); _txPool = Substitute.For <ITxPool>(); _receiptStorage = Substitute.For <IReceiptStorage>(); _filterStore = Substitute.For <IFilterStore>(); _filterManager = Substitute.For <IFilterManager>(); _wallet = Substitute.For <IWallet>(); _transactionProcessor = Substitute.For <ITransactionProcessor>(); _ethereumEcdsa = Substitute.For <IEthereumEcdsa>(); _bloomStorage = Substitute.For <IBloomStorage>(); _receiptsRecovery = Substitute.For <IReceiptsRecovery>(); _blockchainBridge = new BlockchainBridge( _stateReader, _stateProvider, _storageProvider, _blockTree, _txPool, _receiptStorage, _filterStore, _filterManager, _wallet, _transactionProcessor, _ethereumEcdsa, _bloomStorage, _receiptsRecovery); }
public GeneratedTxSource(ITxSource innerSource, ITxSealer txSealer, IStateReader stateReader, ILogManager logManager) { _innerSource = innerSource ?? throw new ArgumentNullException(nameof(innerSource)); _txSealer = txSealer ?? throw new ArgumentNullException(nameof(txSealer)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _logger = logManager?.GetClassLogger <GeneratedTxSource>() ?? throw new ArgumentNullException(nameof(logManager)); }
public BlockchainBridge( ReadOnlyTxProcessingEnv processingEnv, ITxPool txPool, IReceiptFinder receiptStorage, IFilterStore filterStore, IFilterManager filterManager, IEthereumEcdsa ecdsa, IBloomStorage bloomStorage, ITimestamper timestamper, ILogManager logManager, bool isMining, int findLogBlockDepthLimit = 1000, CancellationToken cancellationToken = default(CancellationToken)) { _processingEnv = processingEnv ?? throw new ArgumentNullException(nameof(processingEnv)); _stateReader = processingEnv.StateReader ?? throw new ArgumentNullException(nameof(processingEnv.StateReader)); _stateProvider = processingEnv.StateProvider ?? throw new ArgumentNullException(nameof(processingEnv.StateProvider)); _blockTree = processingEnv.BlockTree ?? throw new ArgumentNullException(nameof(processingEnv.BlockTree)); _transactionProcessor = processingEnv.TransactionProcessor ?? throw new ArgumentException(nameof(processingEnv.TransactionProcessor)); _txPool = txPool ?? throw new ArgumentNullException(nameof(_txPool)); _receiptFinder = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _filterStore = filterStore ?? throw new ArgumentException(nameof(filterStore)); _filterManager = filterManager ?? throw new ArgumentException(nameof(filterManager)); _ecdsa = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); IsMining = isMining; _logFinder = new LogFinder(_blockTree, _receiptFinder, bloomStorage, logManager, new ReceiptsRecovery(), findLogBlockDepthLimit); }
private static void GetStore(out IStateReader reader, out IStateWriter writer) { var store = new InMemoryStateStore(Guid.NewGuid().ToString()); reader = new InMemoryStateReader(store); writer = new InMemoryStateWriter(store, CheckpointKind.Full); }
public TxPoolTxSource(ITxPool transactionPool, IStateReader stateReader, ILogManager logManager, ITxFilter txFilter = null) { _transactionPool = transactionPool ?? throw new ArgumentNullException(nameof(transactionPool)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _txFilter = txFilter ?? new MinGasPriceTxFilter(UInt256.Zero); _logger = logManager?.GetClassLogger <TxPoolTxSource>() ?? throw new ArgumentNullException(nameof(logManager)); }
/// <summary> /// Loads the stack from storage. /// </summary> /// <param name="reader">The reader to load the stack from.</param> protected override void LoadCore(IStateReader reader) { // // Deserialize metadata/count as an integer. // using (var countStream = reader.GetItemReader(MetadataCategory, CountKey)) { _count = GetDeserializer <int>().Deserialize(countStream); } // // Prepare an array of eventual objects and fill with the elements obtained from the reader at items/i with indexes in range [0..count). // _data = new EventualObject[_count]; for (var i = 0; i < _count; i++) { var key = GetKeyForIndex(i); using var itemStream = reader.GetItemReader(ItemsCategory, key); _data[i] = EventualObject.FromState(itemStream); } }
public static bool HasStateForBlock(this IStateReader stateReader, BlockHeader header) { RootCheckVisitor rootCheckVisitor = new(); stateReader.RunTreeVisitor(rootCheckVisitor, header.StateRoot); return(rootCheckVisitor.HasRoot); }
public async Task concurrent_track_requests_will_succeed() { Random random = new Random(42); SingleReleaseSpecProvider spec = new SingleReleaseSpecProvider(ConstantinopleFix.Instance, 1); TestRpcBlockchain testRpc = await TestRpcBlockchain.ForTest(SealEngineType.NethDev).Build(spec); IStateReader stateReader = Substitute.For <IStateReader>(); BaselineModule baselineModule = CreateBaselineModule(testRpc, stateReader); int iterationsPerTask = 1000; Action trackAction = () => { for (int i = 0; i < iterationsPerTask; i++) { byte[] bytes = new byte[20]; random.NextBytes(bytes); Address address = new Address(bytes); stateReader.GetCode(Arg.Any <Keccak>(), address).Returns(new byte[] { 255 }); var result = baselineModule.baseline_track(address).Result; // safe to invoke Result here result.Result.ResultType.Should().Be(ResultType.Success); } }; Task task1 = new Task(trackAction); Task task2 = new Task(trackAction); Task task3 = new Task(trackAction); task1.Start(); task2.Start(); task3.Start(); await Task.WhenAll(task1, task2, task3); }
public BoostBlockImprovementContextFactory(IManualBlockProductionTrigger blockProductionTrigger, TimeSpan timeout, IBoostRelay boostRelay, IStateReader stateReader) { _blockProductionTrigger = blockProductionTrigger; _timeout = timeout; _boostRelay = boostRelay; _stateReader = stateReader; }
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 EthRpcModule( IJsonRpcConfig rpcConfig, IBlockchainBridge blockchainBridge, IBlockFinder blockFinder, IStateReader stateReader, ITxPool txPool, ITxSender txSender, IWallet wallet, IReceiptFinder receiptFinder, ILogManager logManager, ISpecProvider specProvider, IGasPriceOracle gasPriceOracle, IEthSyncingInfo ethSyncingInfo, IFeeHistoryOracle feeHistoryOracle) { _logger = logManager.GetClassLogger(); _rpcConfig = rpcConfig ?? throw new ArgumentNullException(nameof(rpcConfig)); _blockchainBridge = blockchainBridge ?? throw new ArgumentNullException(nameof(blockchainBridge)); _blockFinder = blockFinder ?? throw new ArgumentNullException(nameof(blockFinder)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _txPoolBridge = txPool ?? throw new ArgumentNullException(nameof(txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));; _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _gasPriceOracle = gasPriceOracle ?? throw new ArgumentNullException(nameof(gasPriceOracle)); _ethSyncingInfo = ethSyncingInfo ?? throw new ArgumentNullException(nameof(ethSyncingInfo)); _feeHistoryOracle = feeHistoryOracle ?? throw new ArgumentNullException(nameof(feeHistoryOracle)); }
public GeneratedTxSourceApprover(ITxSource innerSource, IBasicWallet wallet, ITimestamper timestamper, IStateReader stateReader, int chainId) { _innerSource = innerSource ?? throw new ArgumentNullException(nameof(innerSource)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _chainId = chainId; }
/// <summary> /// Gets an item reader for the specified <paramref name="category"/> and <paramref name="key"/>. /// </summary> /// <param name="reader">The reader to obtain the item reader from.</param> /// <param name="category">The category of the item to get a reader for.</param> /// <param name="key">The key of the item to get a reader for.</param> /// <returns>A <see cref="Stream"/> that can be used to read the item.</returns> /// <exception cref="InvalidOperationException">An item with the specified <paramref name="category"/> and <paramref name="key"/> does not exist.</exception> public static Stream GetItemReader(this IStateReader reader, string category, string key) { if (!reader.TryGetItemReader(category, key, out var stream)) { throw new InvalidOperationException(FormattableString.Invariant($"Failed to load '{category}/{key}'.")); } return(stream); }
/// <summary> /// Loads the persisted object space from the specified <paramref name="reader"/>. /// </summary> /// <param name="reader">The reader to load the persisted object space from.</param> /// <exception cref="ArgumentNullException"><paramref name="reader"/> is <c>null.</c></exception> public void Load(IStateReader reader) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } _items.Load(reader); }
/// <summary> /// Creates a new item reader to load the persisted entity with the specified <paramref name="key"/> identifier. /// </summary> /// <param name="reader">The state reader obtained from the entity's persisted object space. State for the persisted entity will be read from a partition under the <see cref="OperatorStateItemCategoryPrefix"/>.</param> /// <param name="key">The identifier of the persisted entity to read.</param> public ItemReader(IStateReader reader, string key) { // // REVIEW: We don't impose any limits on key (length, characters, etc.). Can we assume the IStateWriter has to deal with this, or should we have our own mapping somewhere (hashing, use of a dictionary, etc.)? // _reader = reader; _prefix = OperatorStateItemCategoryPrefix + key + "/"; }
/// <summary> /// Recovers the state of the system from a store. /// </summary> /// <param name="this">System whose state will be loaded.</param> /// <param name="reader">Reader to load state from.</param> /// <param name="token">Cancellation token to observe cancellation requests.</param> /// <returns>Task to observe the eventual completion of the operation.</returns> public static Task RecoverAsync(this ICheckpointable @this, IStateReader reader, CancellationToken token) { if (@this == null) { throw new ArgumentNullException(nameof(@this)); } return(@this.RecoverAsync(reader, token, progress: null)); }
public TxPoolTxSource(ITxPool?transactionPool, IStateReader?stateReader, ISpecProvider?specProvider, ITransactionComparerProvider transactionComparerProvider, ILogManager?logManager, ITxFilterPipeline?txFilterPipeline) { _transactionPool = transactionPool ?? throw new ArgumentNullException(nameof(transactionPool)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _transactionComparerProvider = transactionComparerProvider ?? throw new ArgumentNullException(nameof(transactionComparerProvider)); _txFilterPipeline = txFilterPipeline ?? throw new ArgumentNullException(nameof(txFilterPipeline)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logger = logManager?.GetClassLogger <TxPoolTxSource>() ?? throw new ArgumentNullException(nameof(logManager)); }
/// <summary> /// Loads the value from storage. /// </summary> /// <param name="reader">The reader to load the value from.</param> protected override void LoadCore(IStateReader reader) { // // Create an eventual object for data/value which gets deserialized upon first use by Restore<T>. // using var stream = reader.GetItemReader(DataCategory, ValueKey); _data = EventualObject.FromState(stream); }
public void Setup() { _blockchainBridge = Substitute.For <IBlockchainBridge>(); _txPool = Substitute.For <ITxPool>(); _blockFinder = Substitute.For <IBlockFinder>(); _stateReader = Substitute.For <IStateReader>(); _txSender = Substitute.For <ITxSender>(); _ndmBridge = new NdmBlockchainBridge(_blockchainBridge, _blockFinder, _stateReader, _txSender); }