public async Task OnPeerDialOutConnected(string peerId) { Root headRoot = await _forkChoice.GetHeadAsync(_store).ConfigureAwait(false); BeaconState beaconState = await _store.GetBlockStateAsync(headRoot).ConfigureAwait(false); // Send request var status = BuildStatusFromHead(headRoot, beaconState); if (_logger.IsDebug()) { LogDebug.SendingStatusToPeer(_logger, RpcDirection.Request, status, peerId, null); } await _networkPeering.SendStatusAsync(peerId, RpcDirection.Request, status).ConfigureAwait(false); }
public async Task OnStatusRequestReceived(string peerId, PeeringStatus peerPeeringStatus) { Root headRoot = await _forkChoice.GetHeadAsync(_store).ConfigureAwait(false); BeaconState beaconState = await _store.GetBlockStateAsync(headRoot).ConfigureAwait(false); // Send response var status = BuildStatusFromHead(headRoot, beaconState); if (_logger.IsDebug()) { LogDebug.SendingStatusToPeer(_logger, RpcDirection.Response, status, peerId, null); } await _networkPeering.SendStatusAsync(peerId, RpcDirection.Response, status).ConfigureAwait(false); // Determine if the peer is valid, and if we need to request blocks await HandlePeerStatus(peerId, peerPeeringStatus, headRoot, beaconState); }