public void BlockDownloadFromNetwork() { using (var server = new NodeServer(Network.Main)) { var originalNode = server.GetLocalNode(); var original = originalNode.BuildChain(); Assert.True(originalNode.FullVersion.StartHeight <= original.Height); int simultaneous = 3; var chaines = Enumerable.Range(0, simultaneous).Select(i => original.Clone()).ToArray(); var time = Benchmark.Bench(() => { Parallel.For(0, simultaneous, new ParallelOptions() { MaxDegreeOfParallelism = simultaneous }, i => { var chain = chaines[i]; var node = new NodeServer(Network.Main).GetLocalNode(); var localTime = Benchmark.Bench(() => { chain.PushChange(new ChainChange() { ChangeType = ChainChangeType.BackStep, HeightOrBackstep = 100 }, null); var blocks = node.GetBlocks(chain).ToList(); Assert.True(blocks.Count == 100 || blocks.Count == 101); }); }); }); Console.WriteLine(time); } }