/// <summary>
        /// This method returns cross chain data.
        /// </summary>
        /// <param name="blockHash"></param>
        /// <param name="blockHeight"></param>
        /// <returns></returns>
        public async Task <CrossChainBlockData> GetCrossChainBlockDataForNextMiningAsync(Hash blockHash, long blockHeight)
        {
            if (!_transactionInclusivenessProvider.IsTransactionPackable)
            {
                return(null);
            }

            Logger.LogTrace("Try get cross chain data for mining.");

            var sideChainBlockData = await GetNonIndexedSideChainBlockDataAsync(blockHash, blockHeight);

            var parentChainBlockData = await GetNonIndexedParentChainBlockDataAsync(blockHash, blockHeight);

            if (sideChainBlockData.Count == 0 && parentChainBlockData.Count == 0)
            {
                return(null);
            }
            var crossChainBlockData = new CrossChainBlockData();

            crossChainBlockData.ParentChainBlockData.AddRange(parentChainBlockData);
            crossChainBlockData.SideChainBlockData.AddRange(sideChainBlockData);
            crossChainBlockData.PreviousBlockHeight = blockHeight;

            _indexedCrossChainBlockDataProvider.SetIndexedBlockData(blockHash, crossChainBlockData);
            return(crossChainBlockData);
        }
        /// <summary>
        /// This method returns cross chain data.
        /// </summary>
        /// <param name="blockHash"></param>
        /// <param name="blockHeight"></param>
        /// <returns></returns>
        public async Task <CrossChainBlockData> GetCrossChainBlockDataForNextMiningAsync(Hash blockHash, long blockHeight)
        {
            var sideChainBlockData = await GetNonIndexedSideChainBlockDataAsync(blockHash, blockHeight);

            var parentChainBlockData = await GetNonIndexedParentChainBlockDataAsync(blockHash, blockHeight);

            if (sideChainBlockData.Count == 0 && parentChainBlockData.Count == 0)
            {
                return(null);
            }
            var crossChainBlockData = new CrossChainBlockData();

            crossChainBlockData.ParentChainBlockData.AddRange(parentChainBlockData);
            crossChainBlockData.SideChainBlockData.AddRange(sideChainBlockData);
            crossChainBlockData.PreviousBlockHeight = blockHeight;

            _indexedCrossChainBlockDataProvider.SetIndexedBlockData(blockHash, crossChainBlockData);
            return(crossChainBlockData);
        }