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);
        }