/// <summary>Get validator duties for the requested validators.</summary>
        /// <param name="validator_pubkeys">An array of hex-encoded BLS public keys</param>
        /// <returns>Success response</returns>
        public async Task <ICollection <ValidatorDuty> > DutiesAsync(System.Collections.Generic.IEnumerable <byte[]> validator_pubkeys, ulong?epoch)
        {
            IEnumerable <BlsPublicKey> publicKeys = validator_pubkeys.Select(x => new BlsPublicKey(x));
            Epoch targetEpoch           = epoch.HasValue ? new Epoch((ulong)epoch) : Epoch.None;
            var   duties                = _beaconNode.ValidatorDutiesAsync(publicKeys, targetEpoch, CancellationToken.None);
            List <ValidatorDuty> result = new List <ValidatorDuty>();

            await foreach (var duty in duties)
            {
                ValidatorDuty validatorDuty = new ValidatorDuty();
                validatorDuty.Validator_pubkey    = duty.ValidatorPublicKey.Bytes;
                validatorDuty.Attestation_slot    = duty.AttestationSlot;
                validatorDuty.Attestation_shard   = (ulong)duty.AttestationShard;
                validatorDuty.Block_proposal_slot = duty.BlockProposalSlot == Slot.None ? null : (ulong?)duty.BlockProposalSlot;
                result.Add(validatorDuty);
            }
            return(result);
        }
        /// <summary>Get validator duties for the requested validators.</summary>
        /// <param name="validator_pubkeys">An array of hex-encoded BLS public keys</param>
        /// <returns>Success response</returns>
        public async Task <ICollection <ValidatorDuty> > DutiesAsync(System.Collections.Generic.IEnumerable <byte[]> validator_pubkeys, int?epoch)
        {
            IEnumerable <BlsPublicKey> publicKeys = validator_pubkeys.Select(x => new BlsPublicKey(x));
            Epoch targetEpoch = epoch.HasValue ? new Epoch((ulong)epoch) : Epoch.None;
            IList <BeaconNode.ValidatorDuty> duties = await _beaconNode.ValidatorDutiesAsync(publicKeys, targetEpoch);

            List <ValidatorDuty> result = duties.Select(x =>
            {
                ValidatorDuty validatorDuty       = new ValidatorDuty();
                validatorDuty.Validator_pubkey    = x.ValidatorPublicKey.Bytes;
                validatorDuty.Attestation_slot    = (int)x.AttestationSlot;
                validatorDuty.Attestation_shard   = (int)(ulong)x.AttestationShard;
                validatorDuty.Block_proposal_slot = x.BlockProposalSlot == Slot.None ? null : (int?)x.BlockProposalSlot;
                return(validatorDuty);
            })
                                          .ToList();

            return(result);
        }