BitSharp.Network.Workers.HeadersRequestWorker.CalculateBlockLocatorHashes C# (CSharp) Method

CalculateBlockLocatorHashes() private static method

private static CalculateBlockLocatorHashes ( IImmutableList blockHashes ) : ImmutableArray
blockHashes IImmutableList
return ImmutableArray
        private static ImmutableArray<UInt256> CalculateBlockLocatorHashes(IImmutableList<ChainedHeader> blockHashes)
        {
            var blockLocatorHashes = ImmutableArray.CreateBuilder<UInt256>();

            if (blockHashes.Count > 0)
            {
                var step = 1;
                var start = 0;
                for (var i = blockHashes.Count - 1; i > 0; i -= step, start++)
                {
                    if (start >= 10)
                        step *= 2;

                    blockLocatorHashes.Add(blockHashes[i].Hash);
                }
                blockLocatorHashes.Add(blockHashes[0].Hash);
            }

            return blockLocatorHashes.ToImmutable();
        }