示例#1
0
        public ChainIdAndHeightDict GetAllIndexedCrossChainExtraData()
        {
            var sideChainIdAndHeightDict = new ChainIdAndHeightDict
            {
                IdHeightDict = { _chainIdHeight }
            };

            return(sideChainIdAndHeightDict);
        }
        public Task UpdateCrossChainCacheAsync(Hash blockHash, long blockHeight,
                                               ChainIdAndHeightDict chainIdAndHeightDict)
        {
            foreach (var chainIdHeight in chainIdAndHeightDict.IdHeightDict)
            {
                // register new chain
                RegisterNewChain(chainIdHeight.Key, chainIdHeight.Value);

                // clear cross chain cache
                ClearOutOfDateCrossChainCache(chainIdHeight.Key, chainIdHeight.Value);
                Logger.LogDebug(
                    $"Clear chain {ChainHelper.ConvertChainIdToBase58(chainIdHeight.Key)} cache by height {chainIdHeight.Value}");
            }

            return(Task.CompletedTask);
        }
示例#3
0
        public override ChainIdAndHeightDict GetSideChainIdAndHeight(Empty input)
        {
            var dict         = new ChainIdAndHeightDict();
            var serialNumber = State.SideChainSerialNumber.Value;

            for (long i = 1; i <= serialNumber; i++)
            {
                int chainId       = GetChainId(i);
                var sideChainInfo = State.SideChainInfo[chainId];
                if (sideChainInfo.SideChainStatus == SideChainStatus.Terminated)
                {
                    continue;
                }
                var height = State.CurrentSideChainHeight[chainId];
                dict.IdHeightDict.Add(chainId, height);
            }

            return(dict);
        }