Beispiel #1
0
        public void ParseDidICatchUp(DidICatchUpRequest request, Peer from)
        {
            var catcherUp = new CatcherUpRequest()
            {
                EndOfLongestChain = _blockChainService.Info.EndOfLongestChain,
                Invs = new List <InvitationRequest>()
            };

            foreach (var trans in _minerService.MemPool)
            {
                var inv = new InvitationRequest()
                {
                    DataId  = trans.Body.TransactionId,
                    IsBlock = false
                };
                catcherUp.Invs.Add(inv);
            }

            if (request.LastKnownEnd != _blockChainService.Info.EndOfLongestChain)
            {
                var newBs = _blockChainService.GetNewerBlockInfos(request.LastOnline, request.LastKnownEnd);
                foreach (var blockInfo in newBs)
                {
                    var inv = new InvitationRequest()
                    {
                        DataId  = blockInfo.Id,
                        IsBlock = true
                    };
                    catcherUp.Invs.Add(inv);
                }
            }
            Console.WriteLine("Response to didI {0} {1}", catcherUp.EndOfLongestChain, catcherUp.Invs.Count);
            _server.SendResponse(catcherUp, from);
        }